《实验一简单C程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《实验一简单C程序设计实验报告.docx(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 成绩: 实验名称:集中上机 1C 语言程序设计学生姓名:李梦雅学生学号:2013212360学生专业:机械设计制造及其自动化学生班级:0841302指导教师: 李敏老师、张开碧老师 实习时间: 2014 年上半年 第 11周到第 14 周 实验一 简单的C程序设计学号 2013212360 姓名 李梦雅 班级 0841302第11周 星期四 第5,6,7,8节 实验日期 2014年5月8日一、 实验目的1、 了解Microsoft Visual C+6.0软件的窗面,掌握c语言程序的编辑、编译、连接和运行过程。2、 掌握c语言的基本数据类型、定义和使用方法,了解几种类型输出时所用的格式和转换
2、符,熟悉各种运算符和表达式的使用特点。3、 熟悉掌握c语言中赋值运算、各类数据间的混合运算、算术运算和符号运算的使用。4、 掌握c语言数据输入输出的概念和使用方法。二、 实验内容和结果例 1、从键盘任意输入 a、b、c 三个数,输出其中最大值和它们的和值。 # include void main () int a,b,c;int maxv,sum;printf(请输入三个数 a,b,c:n); scanf(%d,%d,%d,&a,&b,&c);if (ab)maxv=a; else maxv=b;if (cmaxv)maxv=c;printf(三个数中最大的数为%dn,maxv);sum=a+
3、b+c;printf(三个数之和为%dn,sum); 例 2、 转义字符的使用。分析下列程序,写出运行结果,并将分析结果与运行结果进行对照。# include void main() char c1=a,c2=b,c3=c,c4=101,c5=116;printf(12345678910abcdefgn);printf(a%c b%ctabcn,c1,c2,c3);printf(ab ct derftgn);printf(htibbj kn);printf(tb%cn,c4,c5);printf(tatcn);例 3、从键盘输入一字符,要求将其中的字母找出来,并小写输出。# include v
4、oid main() char c1,c2;c1=getchar();printf(输出的字符是:%c,其ASCII码是:%dn,c1,c1);if (c1=a&c1=A&c1=A&c1=Z)c2=c1+32;else c2=c1;printf(%c,%dn,c2,c2);elseprintf(输入的不是字母,不能小写转换!n);例 4、从键盘上输入三角形三边 a,b,c 的值,计算三角形的面积,并输出计算结果。# include # include void main ()float a,b,c;float s,area;printf(请输入三角形的三边n);scanf(%f,%f,%f,&
5、a,&b,&c);s=(a+b+c)/2;area=(float)sqrt(s*(s-a)*(s-b)*(s-c);printf(三角形的三边为:a=%-7.2f,b=%-7.2f,c=%7.2fn,a,b,c);printf(面积为:area=%-7.2fn,area);练习题 1、写出下面程序的运行结果,体会自加(自减)运算符的使用及执行顺序。# include void main ()int i,j,m,n;i=8;j=10;m=+j;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);printf(%d,%d,%d,%dn,i+,+i,j+,+j);printf(%d,
6、%d,%d,%dn,+m,m+,m,+m); 2、将 100800 之间的所有素数按每个数之间空 3 列并且每行输出 5 个方式输出所有素数。# include # include void main ()int m,k,i,n=0;for (m=101;m=800;m=m+2)k=sqrt(m);for(i=2;i=k+1)printf(%6d,m);n=n+1;if(n%5=0)printf(n);printf(n);3、有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?请输出满足条件的每一个这样的三位数。# include void main ()int i,j,k;
7、for(i=1;i=4;i+)for(j=1;j=4;j+)for(k=1;k=4;k+)if(i!=j&i!=k&j!=k)printf(%d%d%dn,i,j,k);4、设圆柱底面积半径为 r,圆柱高为 h,求圆底面积、圆柱表面积、圆柱体积。要求半径和高从键盘输入,输出结果保留两位小数位。# include # define PI 3.1415926void main()float r,h,S1,S2,V;scanf (%f,%f,&r,&h);S1=PI*r*r;S2=2*PI*r*h+2*S1;V=S1*h;printf(圆底面积=%.2fn,S1);printf(圆柱表面积=%.2f
8、n,S2);printf(圆柱体积=%.2fn,V); 三、问题讨论要加强自己对学习的耐心与细心,要增强对基本知识的掌握,多看书。实验二 三种结构的程序设计学号 2013212360 姓名 李梦雅 班级 0841302第12周 星期四 第5,6,7,8节 实验日期 2014年5月15日 一、实验目的1、了解并熟练掌握c语言程序设计的三种结构:顺序、选择和循环。2、熟练掌握顺序结构中赋值语句的使用、数据的输入输出函数和常用的格式控制方法。3、掌握关系运算符和表达式、逻辑运算符和表达式的定义和使用,熟练使用选择结构中if和switch语句,能结合实际应用编程。4、掌握循环控制中的for、while
9、、do while等常用语句的使用方法和技巧,掌握循环跳出语句break和continue的用法,熟悉循环的嵌套,能结合实例正确使用这些技巧。二、实验内容和结果例 1:闰年的条件是符合下面两者之一:能被 4 整除,但不能被 100 整除,如 2008;能被 400 整除,如 2000。从键盘任意输入一年,判断是否是闰年。# include void main ()int year;int c=1;while (c)printf(请输入任意年份:n);scanf(%d,&year);if(year%4=0&year%100!=0)|(year%100=0)printf(n%d是闰年!n,year
10、);elseprintf(n%d不是闰年!n,year);printf(是否要继续?0:退出,1:继续n);scanf(%d,&c);例 2:在我国,人的一生有不同的划分:0-1 岁为婴儿,1-3 岁为幼儿,3- 6 岁为儿童,7-14岁为少年,15- 45 岁为青年,46-59 为中年,60-74 为年轻的老人,75-89 为老年,90 岁以上为长寿老人。请根据以上划分,从键盘任意输入一年龄,看属于哪个年龄段。# include void main ()int age;int c=1;while (c)printf(请输入年龄:n);scanf(%d,&age);if(age1)printf
11、(n你是可爱的小婴儿-!);else if(age3)printf(n你是乖巧的小幼儿!);else if(age7)printf(n你是调皮的儿童啦!);else if(age15)printf(n你是叛逆的少年!);else if(age45)printf(n你是风华正茂的青年!);else if(age60)printf(n你处在中流砥柱的中年!);else if(age75)printf(n你是老年益壮的年轻人!);else if(age89)printf(n你是长寿老人啦!争取活到200岁!);printf(n继续测试?0:退出,1:继续n);scanf(%d,&c);例 3:物品征
12、税问题。价格在 1 万元以上的征 5% ,5000 元以上的 1 万元以下的征 3%,1000元以上 5000 元以下的征 2%,1000 元以下的免税,请读入货物价格,计算并输出税金。# include void main ()float price ,m;int p,s;printf(请输入货物价格:n);scanf(%f,&price);if(price10000)price=1000;p=(int)price/1000;switch (p)case 0:s=0;break;case 1:s=2;break;case 2:case 3:case 4:case 5:s=3;break;ca
13、se 6:case 7:case 8:case 9:case 10:s=5;break;m=price*s/100;printf(该货物税金为:%fn,m);例 4、给一个不多于 5 位的正整数,请按照从高位到个位分别输出每一个数字。# include void main()int x,i=10000,y;printf(请输入数据x:n);scanf(%d,&x);while(x99999)printf(输入错误,请重新输入:n);scanf(%d,&x);while(x)y=x/i;if(y0)printf(%d,y);x=x%i;i=i/10;例 5、用牛顿迭代求方程 2x3-4x2+3x
14、-6=0 在 1.0 附近的根。# include void main ()float x,x0,f,f1;x=1.0;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while (fabs(x-x0)=1e-5);printf(%6.2f,x);练习题1、企业发放的奖金根据利润提成。利润低于 1 万元的,提成 10%,高于 1 万低于 5 万的,提成 8%,高于 5 万低于 10 万的,提成 6%,高于 10 万的提成 5%。输入利润,计算奖金数并输出结果。#includevoid main() double x,y; prin
15、tf(请输入利润值:); scanf(%lf,&x); if(x=10000) y=0.10*x; else if(x=50000) y=0.08*x; else if(x100000) y=0.05*x; printf(%lfn,y);2、学生成绩等级制。如果某学生成绩在 90 分以上,等级为优; 80-90 分,等级为良; 70-80分,等级为中;60-70 分,等级为及格;如果成绩小于 60 分,等级为不及格。输入一成绩,判断是在哪个等级。# include void main()int x;int c=1;while (c)printf(请输入成绩:n);scanf(%d,&x);if
16、(x=90)printf(n优);else if (x=80)printf(n良);else if (x=70)printf(n中);else if (x=60)printf(n及格);elseprintf(n不及格);printf(n继续测试? 0:退出,1:继续n);scanf(%d,&c);3、所谓“同构数”是指这样的数,它出现在它的平方数的右端。如: 6 的平方是 36, 6 出现在 36 的右端, 6 就是一个同构数。编程输出 21000 之内的所有同构数。# include void main()long i,j,s;for(i=2;i0)if(j%10)!=(s%10) brea
17、k;j=j/10;s=s/10;if(j=0)printf(%6d,i);4、求下面分数序列的前 10 项之和。1 2 3 5 8 13, , , , , ,.2 3 5 8 13 21#includevoid main() double a=2,b=1; int m,i; double sum=0,c; for(i=1;i=10;i+) c=b/a; sum=sum+c; m=b; b=a; a=b+m; printf(%lfn,sum);5、某小朋友有若干个玻璃球,第一天拿出去一半还加一个,第二天又将剩下的拿走一半再多一个,以后每天都将剩下的一半零一个拿走。到第 8 天的时候只剩下一个玻璃
18、球了。请问他原本有多少个玻璃球。#includevoid main() int y=1; int i; for(i=1;i=8;i+) y=(y+1)*2; printf(%dn,y);6、将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5。#includevoid main() long n; int i; printf(请输入一个正整数:n); scanf(%ld,&n); for(i=2;in;i+) while(i!=n) if(n%i=0) printf(%ld*,i); n=n/i; else break; printf(%dn,n);7、计算下列多项式之和。要
19、求两次求得的误差在 之内,设 =10-5。e1+1/1!+1/2!+.+1/n!#include void main()int i=1,a=1;double e=1;while(1.0/a1e-5)e+=1.0/a;i+; a*=i;printf(e=%lfn,e); 8、如果一个数恰好等于它的所有因子(包括 1 但不包括自身)之和,则称之为“完数”。例如 6 的因子是 1,2,3,且 6=1+2+3,因此 6 是完数。编写程序找出 1000 之内的所有完数及这些完数之和。 #includevoid main()int i,j,k,s,n=0;printf(完数有:n);for(i=1;i=1
20、000;i+)s=0;for(j=1;ji;j+)if(i%j=0) s=j+s;if(s=i) printf(%d ,i);n=n+i;printf(n所有完数之和为%dn,n); 三、 问题讨论 加强对循环结构不同形式的使用,注意break和continue等,对所学知识灵活运用,尝试用不同方法解决问题。 实验三 数组和函数学号 2013212360 姓名 李梦雅 班级 0841302第13周 星期四 第5,6,7,8节 实验日期 2014年5月22日 一、实验目的1、 掌握一维数组、二维数组、字符数组的定义、初始化、引用和输入输出,能熟练运 用数组解决实际问题。2、 掌握函数的定义、声明
21、、调用,能熟练掌握函数的参数和返回值,能运用函数解决较简单的问题。3、 了解局部变量,全局变量,动态存储变量、静态存储变量,内部函数、外部函数的联系和区别。 二、实验内容和结果例 1、输出一个菱形图。# include void main ()char d5= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , , ,*;int i,j;for(i=0;i5;i+)for(j=0;j5;j+)printf(%c,dij);printf(n);例 2、 已有一个已排好序的数组, 从键盘任意输入一个数,要求按原来排序的规律将它插入数组中 # include # include vo
22、id main()int a6=1,3,4,7,8;int x,i,j;printf(请任意输入一个值x:n);scanf(%d,&x);for(i=0;i5;i+)if(x=1;j-)aj+1=aj;ai=x;break;printf(n,数据插入后新数组为:n);for(i=0;i6;i+)printf(%d,ai);例 3 、有一个 34 的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。# include # define M 3# define N 4void main ()int max,i,j,r,c;static int aMN=123,94,-10,218,3,9,1
23、0,-83,45,16,44,-99;printf(该矩阵为%d行%d列矩阵:n,M,N);for(i=0;iM;i+)for(j=0;jN;j+)printf(%5d,aij);printf(n);max=a00;for(i=0;iM;i+)for(j=0;jmax)max=aij;r=i;c=j;printf(最大值为:%d,是第%d行第%d列n,max,r+1,c+1);例 4、打印输出yx的值。# include void main ()int power(int x,int y);int s,x,y;printf(请输入x和y的值:n);scanf(%d,%d,&x,&y);s=po
24、wer(x,y);printf(x的立次方位:%dn,s);int power(int x,int y)int p,m=1;for(p=1;p=y;p+)m=m*x;return (m);练习题1、打印出 N 行的等腰直角三角形。N 从键盘输入。如 N=4,则打印图形如下: * * * * * * *# include void main()char d4=*,*,*,*,*,*,*,*,*,*;int i,j;for(i=0;i4;i+)for(j=0;j4;j+)printf(%c,dij);printf(n);2、一个含有若干字符的字符串,分别找出其中数字,将重复的去掉后,按升序排列后输
25、出。# include # include void main ()char s1100,s2100;int i,j=0,t,k;printf(请输入一个字符串,长度100n);gets(s1);for(i=0;i(int)strlen(s1);i+)if(s1i=0)s2j+=s1i;s2j=0;for(i=0;i(int)strlen(s1)-1;i+)for(j=i+1;j(int)strlen(s2);)if(s2i=s2j)t=j;while(s2t)s2t=s2t+1;t+;else j+;for (i=0;i(int)strlen(s2)-1;i+)t=i;for(j=i+1;j
26、(int)strlen(s2);j+)if(s2js2t)t=j;if(t!=i)k=s2t;s2t=s2i;s2i=k;puts(s2);3、求一个 NN 矩阵对角线元素之和(若有交叉点则只计算一次)。N 从键盘输入。# include # define LEN 100int main ()int i,j,n,sum=0;int aLENLEN;printf(请输入矩阵的阶数n:);scanf(%dn,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);for(i=0;i=0;j-)sum+=an-j-1j;if(n%2=0)printf(%d,su
27、m);if(n%2=1)printf(%d,(sum-an/2n/2);printf(n);return 0;4、任意输入两个字符串 S1 和 S2,要求每个字符串中无重复的字符求两者的交集,若非空就输出交集的字符,若空则输出相应的提示。 # include int main()char str180,str280;int i,j,n=0;printf(请输入第一个字符串:);scanf(%s,str1);printf(请输入第二个字符串:);scanf(%s,str2);for(i=0;str1i!=0;i+)for(j=0;str2j!=0;j+)if(str1i=str2j)printf
28、(%3c,str1);n+;if(n=0)printf(两个字符串没有交集n);return 0;5、打印出以下的杨辉三角形,打印的行数从键盘输入。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1# include void main()int n,i,j,a2020;printf(请输入打印的行数:);scanf(%d,&n);for(i=1;in+1;i+)aii=1;ai1=1;for(i=3;in+1;i+)for(j=2;j=i-1;j+)aij=ai-1j-1+ai-1j;for(i=1;in+1;i+)for(j=1;j=i;j+)printf(%6d
29、,aij);printf(n);printf(n);6、找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。如果没有则输出提示信息:该二维数组无鞍点。# include void main ()int a34,i,j,k,max,min,maxj,mini,flag=0;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i3;i+)max=ai0;for(j=1;jmax)max=aij;maxj=j;min=aimaxj;for(k=0;k3;k+)if(akmaxjmin)min=akmaxj;mini=k;if(min
30、i=i)printf(%dn,akmaxj);flag=1;if(flag=0)printf(该二维数组无鞍点n);7、从键盘输入任意两个数,利用函数分别求其最大公约数和最小公倍数。用主函数调用这两个函数并输出结果。#include int zuidagongyue(int x,int y) int i,change; if(xy) change=y; y=x; x=change; for(i=x;i=1;i-) if(x%i=0&y%i=0) break; return i;void main() int a,b,c,d; printf(请输入两个数:n); scanf(%d%d,&a,&b
31、); d=zuidagongyue(a,b); c=a*b/d; printf(最大公约数为%dn,zuidagongyue(a,b); printf(最小公倍数为%dn,c);8、求方程 的根。用三个函数分别求出当 大于零、等于零和小于零的根。方程的系数 a,b,c 从键盘输入。 #include#includefloat p,q;void m(int a,int b,int c,float d) p=(-b+sqrt(d)/(2*a); q=(-b-sqrt(d)/(2*a); printf(x1=%.3fn x2=%.3f,p,q);void f(int a,int b,int c,fl
32、oat d) p=-b/(2*a); printf(x1=x2=%.3fn,p);void j(int a,int b,int c,float d) printf(无实根n);int main() int a,b,c; float d;printf(Input A B Cn);scanf(%d%d%d,&a,&b,&c);d=b*b-4.0*a*c;if(d0) m(a,b,c,d);else if(d=0) f(a,b,c,d); else j(a,b,c,d); printf(n);return 0;9、 输入 N 个学生的 4 门成绩,分别用函数实现下列功能:计算每个学生的平均分;计算每
33、门课的平均分;找出所有成绩中最高的分数所对应的学生和课程。#include void input(float a105,int n,int m) int i,j;for(i=0;in;i+)printf(输入第%d个学生%d门课的成绩:,i+1,m);for(j=0;j4;j+)scanf(%f,&aij);void aver_stu(float a105,int n,int m) int i,j;float sum;for(i=0;in;i+)sum=0;for(j=0;jm;j+)sum+=aij;printf(第%d个学生的成绩为:,i+1);for(j=0;j4;j+)printf(%
34、6.2f,aij);printf(平均分为:%6.2fn,sum/4);void aver_cour(float a105,int n,int m) int i,j;float sum;for(i=0;i4;i+)sum=0;for(j=0;jn;j+)sum+=aji;printf(第%d门课的平均成绩为:%6.2fn,i+1,sum/n);void highest(float a105,int n,int m) int i,j,flag1,flag2;float max=0;for(i=0;in;i+)for(j=0;j4;j+)if(maxaij)max=aij;flag1=i;flag2=j;printf(最高分对应的是学生:%d课程:%dn,flag1+1