




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
创新源于实践高级语言程序设计课程实验教学手册姓 名: 学 号: 专 业:物联网工程一班 班 级: 级 班任课教师: 时 间: 2016 年 1 月 5 日综合成绩: 高级语言程序设计课程组实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。现将实验报告撰写的有关内容说明如下:1、 实验前按实验要求手写程序或程序填空,并走查代码,有疑问处标记,上机时在C语言集成开发环境下输入并调试手写程序,分析运行结果。2、 实验结束后填写通过后的源程序和对实验的总结。3、 通过后的源程序可以手写也可以打印粘贴。实验项目一览表序 号实验项目实验性质学 时实验一熟悉C语言编程环境验证性2实验二用C语言编写简单程序验证性2实验三分支结构程序设计 验证性2实验四循环结构程序设计验证性4实验五函数程序设计验证性4实验六数组程序设计验证性2实验七指针程序设计验证性4学号: 5006150018 姓名: 夏和顺 成绩: 实验一 熟悉C语言编程环境实验目的:1熟悉C语言编程环境(VC+、Cfree、Turboc2.0等)2了解C程序的基本框架3理解程序调试的思想,能找出并改正C程序中的错误实验内容:1.1 建立自己的文件夹:在磁盘上建立一个文件夹,用于存放自己的C程序1.2 编程示例在屏幕上显示一个短句“Programming in C is fun!”(教师示例,学生模仿并创新,如输出汉字、特除字符等。学会使用编程环境VC+,启动、编辑、编译、运行、保存、关闭、打开)#include int main() printf(Programming in C is fun! n);return 0;1.3 编程在屏幕上显示如下网格。+-+-+| | | | |+-+-+ #include int main() printf(+-+-+n);printf(| | |n);printf(| | |n);printf(+-+-+n);return 0;1.4 调试示例改正下列程序中的错误,在屏幕上显示“Welcome to You !”。(掌握找错、改错的方法)源程序:# include int mian(void) printf(Welcome to You! n)/ printf(Welcome to You! n); getchar(); return 0;# includeint main(void)printf(Welcome to You! n);getchar();return 0;注:需要修改的语句直接在程序上标注并修改实验总结:在实验中要注意标点符号以及英文和中文的区别。学号:50006150018 姓名: 夏和顺 成绩: 实验二 用C语言编写简单程序实验目的:1掌握算术表达式和赋值表达式的使用2掌握基本输出函数的使用3能够自己编程实现简单的数据处理4. 熟练掌握简单if语句使用5. 熟练掌握for语句的使用6. 掌握简单C程序的查错方法、单步调试实验内容:2.1 调试以下程序,求华氏温度对应的摄氏温度。计算公式为:C=5*(f-32)/9#include /#include int main(void) int celsius; fahr; /#include scanf(%d ,fahr); / scanf(%d,&fahr); celsius = 5 * (fahr - 32) / 9; / celsius=5*(fahr-32)/9; printf(fahr = d, celsius = %dn, fahr, celsius); / printf(fahr =% d, celsius = %dn, fahr, celsius); return 0; #include int main(void) int celsius, fahr; scanf(%d,&fahr); celsius=5*(fahr-32)/9; printf(fahr =% d, celsius = %dn, fahr, celsius); return 0; 注:需要修改的语句直接在程序上标注并修改2.2 编写程序计算定期存款本利之和:设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入,输出时保留两位小数。计算公式为:deposit=capital(1+rate)n#include #include int main(void)float rate,capital,year,deposit;printf(input rate: n);scanf(%f,&rate);printf(input capital: n);scanf(%f,&capital);printf(input year: n);scanf(%f,&year);deposit=capital*pow(1+rate),year);printf(%.2fn,deposit);return 0;2.3 计算身体质量指数一个称为“身体质量指数”(BMI)的量用来计算与体重有关的健康问题的危险程度。BMI按下面的公式计算: BMI=w/h2其中w是以千克为单位的体重。h是以米为单位的身高。大约20至25的BMI的值被认为是“正常的”,编写一个应用程序,输入体重和身高,输出BMI,并判断是否正常。#include #include int main(void)double weight,high,BMI;printf(weight:n);scanf(%lf,&weight);printf(high:n);scanf(%lf,&high);BMI=weight/(pow(high,2);printf(BMI=%.2lf,BMI);if(20=BMI&BMI=25)printf(its good!n);elseprintf(Pass!);return 0;2.4 输出所有水仙花数水仙花数是3位数,数本身的值恰好等于各位数字的立方和 如:153=13+53+33#includeint main()int a,b,c,x,y;for(a=1;a10;a+)for(b=0;b10;b+)for(c=0;c10;c+)x=a*a*a+b*b*b+c*c*c;y=a*100+b*10+c;if(x=y)printf(%dn,x);return 0;实验总结: 学号: 姓名: 成绩: 实验三 分支结构程序设计实验目的:1熟悉掌握关系表达式和逻辑表达式的使用2熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计3掌握使用断点调试程序的方法实验内容:3.1 按要求调试程序输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。#include #include int main(void)double a, b, c,d;printf(Enter a, b, c n);scanf(%lf%lf%lf, &a, &b, &c);d = b * b - 4 * a * c;if(a=0)if(b = 0)if(c = 0)printf(参数都为零,方程无意义!n); /*调试时设置断点*/elseprintf(a和b为0,c不为0,方程不成立n);elseprintf(x = %0.2fn, -c/b);elseif(d = 0) /*调试时设置断点*/printf(x1=%0.2fn, (-b+sqrt(d)/(2*a);printf(x2=%0.2fn, (-b-sqrt(d)/(2*a);elseprintf(x1=%0.2f+%0.2fin, -b/(2*a), sqrt(-d)/(2*a);printf(x2=%0.2f-%0.2fin, -b/(2*a), sqrt(-d)/(2*a); return 0; /*调试时设置断点*/注:调试时按注释位置设置三个断点,单击Go按钮,输入2.1 8.9 3.5 ,观察变量值的情况。第一次断点:a,b,c的值分别是:第二次断点:d的值是:第三次断点:运行窗口显示:3.2 求三角形的面积和周长输入三角形的三条边 a, b, c,如果能构成一个三角形,输出面积area 和周长perimeter(保留2 位小数);否则,输出“These sides do not correspond to a valid triangle”。在一个三角形中,任意两边之和大于第三边。三角形的面积计算公式: 其中:s = (a+b+c)/2#include#includeint main()double a,b,c,d,s,x;printf(a=,a);scanf(%lf,&a);printf(b=,b);scanf(%lf,&b);printf(c=,c);scanf(%lf,&c);if(a+b=c&a+c=b&b+c=a)d=a+b+c;x=(a+b+c)/2.0;s=sqrt(x*(x-a)*(x-b)*(x-c);printf(d=%lfns=%lfn,d,s);return 0;3.3 计算个人所得税输入一个职工的月薪 salary,输出应交的个人所得税tax(保留2 位小数)。tax = rate * (salary-3500) - deduction当 salary = 3500 时,rate = 0,deduction=0;当 3500 salary = 5000时,rate = 3%,deduction=0;当 8000 salary =12500 时,rate =20%,deduction=555;当 12500 salary = 38500 时,rate =25%,deduction=1005;当 38500 salary =58500 时,rate =30%,deduction=2755;当 58500 salary = 83500 时,rate =35%,deduction=5505;当 83500 salary 时,rate =45%,deduction=13505;#include#includeint main()double s,r,t,d;printf(月薪:,s);scanf(%lf,&s);if(s=3500)r=0;d=0;t=r*(s-3500)-d;else if(s=5000)r=0.03;d=0;t=r*(s-3500)-d;else if(s=12500)r=0.2;d=555;t=r*(s-3500)-d;else if(s=38500)r=0.25;d=1005;t=r*(s-3500)-d;else if(s=58500)r=0.30;d=2755;t=r*(s-3500)-d;else if(s=83500)r=0.35;d=5505;t=r*(s-3500)-d;elser=0.45;d=13505;t=r*(s-3500)-d;printf(t=%.2lf,t);return 0;3.4 计算出租车费某市不同品牌出租车价格为:捷达5元起价,1公里内收起步价,1公里外按1.4元/公里收取;速腾7元起价,1公里内收起步价,1公里外按1.4元/公里收取;红旗10元起价,1公里内收起步价,1公里外按1.5元/公里收取。编写程序,从键盘输入乘车车型和乘车公里数,输出应付的车费。(采用switch语句实现车型选择)#include int main(void)int x;double y,s;printf(捷达代号为1ttt速腾代号为2ttt红旗代号为3n);scanf(%d,&x);printf(乘车里程:n);scanf(%lf,&y);switch(x)case 1:if(y=1)printf(车费:5n);elses=(y-1)*1.4+5;printf(%.2lf,s);break;case 2:if(y=1)printf(车费:7n);elses=(y-1)*1.4+7;printf(%.2lf,s);break;case 3:if(y=1)printf(车费:10n);elses=(y-1)*1.5+10;printf(%.2lf,s);break;return 0;实验总结:学号: 姓名: 成绩: 实验四 循环结构程序设计实验目的:1熟练掌握for、while、和dowhile语句实现循环程序设计2. 理解循环条件和循环体,以及三种循环语句的相同和不同之处3熟练掌握break、continue语句的使用4掌握使用“Debug”菜单调试程序的方法实验内容:4.1 按要求调试程序改正下列程序中的错误,输入2个正整数m和n,输出它们的最小公倍数和最大公约数。#include int main(void) int m, n, j, k; /* j表示最小公倍数,k表示最大公约数 */ do printf(Input m: ); scanf(%d, &m); printf(Input n: ); scanf(%d, &n); while(m0|n0);j = m; while(j % n != 0) /* 调试时设置断点 */ j = j + m;k = (m * n) / j; /* 调试时设置断点 */ printf(最小公倍数是%d n最大公约数是%dn , j, k); return 0;注:调试时按注释位置设置二个断点,单击Go按钮,输入3 7 ,观察变量值的情况。第一次断点:m,n的值分别是:3 7第二次断点:j的值是:15若结果不对,停止调试,改正错误后,取消第一个断点,单击Go,到断点处,此时j的值是:4.2 编写程序输入一批正整数(以0或负数为结束标志),求其中的偶数和。#include int main()int a,b,c;a=0;b=0;printf(提示:输入零或者负数结束运算!n);while(1)printf(输入正整数: );scanf(%d,&a);c=a%2;if(c!=0)continue;b=b+a;if(a=0)printf(End!n);break;printf(运算结果是:%d,b); return 0;4.3编写程序给一个不多于5位的正整数,要求:a. 求出它是几位数;b. 分别输出每一位数字;c. 按逆序输出各位数字,例如原数为321,应输出123#include int main()int a,c,d,e,f,g;int b;printf(input:);scanf(%d,&a);if(a=10000)b=5;else if(a=1000&a=100&a=10&a100)b=2;else b=1;switch(b)case 5:printf(它是一个5位数n);c=a/10000;d=a/1000%10;e=a/100%10;f=a/10%10;g=a%10;printf(分别输出每一位数字:%d %d %d %d %dn,c,d,e,f,g);printf(每一个数字分别为按照逆顺序输入数字顺序为:%d %d %d %d %d ,g,f,e,d,c);break;case 4:printf(它是一个4位数n);d=a/1000%10;e=a/100%10;f=a/10%10;g=a%10;printf(分别输出每一位数字:%d %d %d %dn,d,e,f,g);printf(每一个数字分别为按照逆顺序输入数字顺序为:%d %d %d %d,g,f,e,d);break;case 3:printf(它是一个3位数n);e=a/100%10;f=a/10%10;g=a%10;printf(分别输出每一位数字:%d %d %dn,e,f,g);printf(每一个数字分别为按照逆顺序输入数字顺序为:%d %d %d,g,f,e);break;case 2:printf(它是一个2位数n);f=a/10%10;g=a%10;printf(分别输出每一位数字:%d %dn,f,g);printf(每一个数字分别为按照逆顺序输入数字顺序为:%d %d,g,f);break;case 1:printf(它是一个1位数n);g=a%10;printf(分别输出每一位数字:%dn,g);printf(每一个数字分别为按照逆顺序输入数字顺序为:%d,g);break; return 0;4.4 统计素数并求和输入 2 个正整数m 和n(1=m,n=500),统计并输出m 和n 之间的素数的个数以及这些素数的和(素数就是只能被1 和自身整除的正整数,1 不是素数,2 是素数)。#includeint main()int a,b,i;int h;printf(提示:输入的两个正整数所在区间在1500之间!n); printf(input the one: );scanf(%d,&a);printf(input the two: );scanf(%d,&b);for(;a=b;a+)h=1;if(a=1)h=0;for(i=2;ia;i+)if(a%i=0)h=0;break;if(h=1)printf(%4d,a);return 0;4.5 编写程序用一张一元票换1分、2分和5分的硬币(至少各一枚),问有哪几种换法?各几枚?#includeint main()int a=100,b,c,d,i,q,w,sum1,sum2,sum3;for(b=1;b=100;b+)sum1=b*1;for(c=1;c=100;c+)sum2=c*2;for(d=1;d=100;d+)sum3=d*5;if(sum3+sum2+sum1=a)printf(%d+%d+%-3d ;,b,c,d); return 0;4.6 猜数游戏先由计算机“想”一个1100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。【思考】如果用scanf输入用户猜测的数据时,如果用户不小心输入了非法字符,如字符a,那么程序运行就会出错,用什么方法可以避免这样的错误发生呢?请编写程序验证方法的有效性。#include#include#includeint main()int num,a,b; srand(unsigned int)time(NULL);/随机按时间播种种子 num=1+rand()%101;for(a=1;anum)printf(It is too high! Try again!n);else if(b=num)printf(You are right! It is %d !,b);break;elseprintf(It is too low! Try again!n);return 0;实验总结:#include#includesrand(unsigned int)time(NULL);num=50+rand()%31;可以按照时间播种随机数学号: 姓名: 成绩: 实验五 函数程序设计实验目的:1熟练掌握函数的定义和调用2熟练掌握使用函数编写程序3掌握函数的实参、形参和返回值的概念和使用4. 掌握单步调试进入函数和跳出函数的方法实验内容:5.1 改错改正下列程序中的错误,计算1!+2!+3!+4!+10!的值,要求定义并调用函数fact(n),计算n!,函数类型是double。#include double fact(int n)int main(void ) int i; double sum; for (i = 1 ; i 10; i+) sum = sum + fact(i); /*设置断点*/ printf(1!+2!+10!= %fn, sum); return 0;double fact(int n); int i; double result; for (i = 1 ; i =n; i+) fact(n)=fact(n)*i; return result;注:1. 需要修改的语句直接在程序上标注并修改 2. 设置断点,单步进入函数和从函数返回主调函数5.2 求aaaaaaaaa输入 2 个正整数a 和n, 求a+aa+aaa+aaa(n 个a)之和。要求定义并调用函数 fn(a,n),它的功能是返回aaa(n 个a)。例如,fn(3,2)的返回值是33。#includeint fn(int a,int n)int i,c=a;for(i=2;i=n;i+)c=c+a*10;a=a*10;return c;int main()int i,s,a,n,j;printf(a=);scanf(%d,&a);printf(n);printf(n=);scanf(%d,&n);for(i=1,s=0;i=n;i+)s=s+fn(a,i);printf(%dn,s);return 0;5.3 统计一个整数中数字的个数要求定义并调用函数 countdigit(number,digit),它的功能是统计整数number 中数字digit的个数。例如,countdigit(10090,0)的返回值是3#includeint countdigit(int number,int digit)int a,b,c,d;for(a=1,d=0;number9;a+)c=number%10;if(c=digit)d=d+1;number=number/10;if(number/digit=1)d=d+1;return d;int main()int digit,number,sum;printf(number=);scanf(%d,&number);printf(n);printf(digit=);scanf(%d,&digit);sum=countdigit(number,digit);printf(sum=%d,sum);return 0;5.4 判断素数输入一个正整数 n,如果它是素数,输出YES,否则,输出NO(素数就是只能被1 和自身整除的正整数,1 不是素数,2 是素数)。要求定义并调用函数 prime(m)判断m 是否为素数。#includeint p(int m)int a;if(m=1)a=-1;if(m=2)a=0;if(m2)for(int b=2;bm;b+)if(m%b=0)a=-1;break;a=0;return a;int main()int x,y;printf(input:);scanf(%d,&x);y=p(x);if(y=0)printf(Yes);if(y=-1)printf(No);return 0;5.5 输出 Fibonacci 序列输入 2 个正整数m 和n(1=m,n=10000),输出m 和n 之间所有的Fibonacci数。Fibonacci 序列(第1 项起):1 1 2 3 5 8 13 21 .要求定义并调用函数fib(n),它的功能是返回第n 项Fibonacci 数。例如,fib(7)的返回值是13。例:括号内是说明输入:20 100 (m=20, n=100)输出:21 34 55 89 (20 到100 之间的Fibonacci 数)#includeint fib(int m)int b;int number10000;for(b=1,number1=1;numberb10000;b+)numberb+1=numberb+numberb-1;m=numberm;return m;int main()int x,y,m;printf(请输入你想要的数值区间的最小值和最大值:);scanf(%d%d,&x,&y);for(m=1;fib(m)y;m+)if(fib(m)x)printf(%dt,fib(m);return 0;实验总结:学号: 姓名: 成绩: 实验六 数组程序设计实验目的:1熟练掌握一维数组、二维数组编程方法2. 熟练掌握字符串的存储和操作方法3熟练掌握排序算法实验内容:6.1改错改正下列程序中的错误,输入一个正整数n(0n9)和一组(n个)有序的整数,再输入一个整数x,把x插入到这组数据中,使该组数据仍然有序。#include int main( ) int i, j, n, x, an; printf(输入数据的个数n:); scanf(%d, &n); printf(输入%d个整数:, n); for(i = 0; i n; i+)scanf(%d, &ai); printf(输入要插入的整数:); scanf(%d, &x); for(i = 0; i ai) continue; j = n - 1;while(j = i) /* 调试时设置断点 */ aj = aj+1; j+; /* 调试时设置断点 */ ai = x; break; if(i = n) an=x; for(i = 0; i n + 1; i+) printf(%d , ai); putchar(n); return 0;6.2 求平均值输入一个正整数 n (1n=10),再输入n 个整数,输出平均值(保留2 位小数)。#includeint main()int b;double s;printf(1n=10)input n=);scanf(%d,&b);int fb;for(int c=0;cb;c+)scanf(%d,&fc);s=s+fc;printf(%.2lf,s/b);return 0;6.3 交换最小值和最大值输入一个正整数 n (1n=10),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。#includeint main()int n,i;printf(input n=);scanf(%d,&n);int pn;for(i=0;in;i+)scanf(%d,&pi);int max,min,q;for(max=p0,q=0;q+1pq+1)max=max;elsemax=pq+1;if(minpq+1)min=min;elsemin=pq+1;int c,h,g;for(c=0;cn;c+)if(max=pc)h=pn-1;pn-1=max;pc=h;if(min=pc)g=p0;p0=min;pc=g;int r;for(r=0;rn;r+)printf(%d ,pr);return 0;6.4 排序输入一个正整数 n (1n=10),再输入n 个整数,将它们从大到小排序后输出。#includeint P(int number,int num)int i,j;int temp;for(i=0;inum-1;i+)for(j=0;jnumberj+1)temp=numberj+1;numberj+1=numberj;numberj=temp;int main()int n;printf(input n=);scanf(%d,&n);int numbern;printf(input your number:);for(int i=0;in;i+)scanf(%d,&numberi);int N;P(number,N);for(int j=0;j=1,n=6),然后输入该m行n列二维数组a中的元素,分别求出各行元素之和并输出。 #include int main( ) int a66, i, j, m, n, sum; printf(input m, n:); scanf(%d%d,&m,&n); printf(input array:n); for(i=0;im;i+) /* 调试时设置断点 */ for(j=0;in;j+) scanf(%d,&aij); sum=0; for(i=0;im;i+) for(j=0;jn;j+) sum=sum+aij; printf(sum of row %d is %dn,i,sum); /* 调试时设置断点 */ return 0;6.6 编程找鞍点输入 1 个正整数 n(1n6)和n 阶方阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出NO(设a 最多有1 个鞍点)。#includeint main(void)int i,j,n;int x,y;printf(输入一个正整数:n);scanf(%d,&n);int ann;for(i=0;in;i+)for(j=0;jn;j+) scanf(%d,&aij);printf(矩阵为:n); for(int i=0;in;i+) for(int j=0;jn;j+)printf(%d ,aij);printf(n);for(i=0;in;i+)x=ai0;y=0;for(j=1;jn;j+)if(xaij)x=aij;y=j;for(j=0;jajy)break; if(j=n)printf(鞍点为a%d%d=%dn,i,y,x);elseprintf(non);return 0;6.7 改错改正下列程序中的错误,输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。如“ABCD”输出为“DCBA”。#include int main( ) int i, k, temp; char str; printf(input a string: ); i = 0; while(stri = getchar( ) != n) i+; stri = 0; k = i - 1; for(i = 0; i k; i+) /* 调试时设置断点 */ temp = stri; stri = strk; strk = temp;k+; /* 调试时设置断点 */ for(i = 0; stri != 0; i+) putchar(stri); return 0;6.8 统计大写辅音字母个数输入一个以回车
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工方案预控管理(3篇)
- 超市促销调料活动方案策划(3篇)
- 鱼缸采购合同范本
- 房子债权抵押合同范本
- 南京外国语高考数学试卷
- 中心机房施工方案(3篇)
- 患者走失的应急预案
- 2025年全国海船船员考试《轮机部(船舶管理8503)》复习题及答案
- 租房合同范本免责协议
- 2025年全国海船船员考试《轮机部(船舶辅机8306)》考前冲刺试题及答案
- 2025高级会计师考试试题及答案
- 2025-2030中国特高压电网建设规划与设备需求分析报告
- 2026版赢在微点顶层设计大一轮物理-专题提升二十 测量电阻的其他几种方法
- 民族文化宫2025年公开招聘17人笔试模拟试题含答案详解
- 光传输业务配置课件
- 2025年幼儿园教师专业考试试题及答案书
- 机关事业单位工人汽车驾驶员高级、技师国家题库练习题及答案
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- 2025年高处作业特种作业操作证考试试卷:高处作业特种作业操作证考试备考攻略与技巧
评论
0/150
提交评论