C语言实验报告参考答案.pdf
《C语言实验报告参考答案.pdf》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案.pdf(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、长沙理工大学长沙理工大学 2010C2010C 语言实验报告参考答案语言实验报告参考答案实验一实验一熟悉熟悉 C C 语言程序开发环境及数据描述语言程序开发环境及数据描述四、程序清单四、程序清单1编写程序实现在屏幕上显示以下结果:The dress is long The shoes are big The trousers are black答案:#includemain()printf(The dress is longn);printf(The shoes are bign);printf(The trousers are blackn);2改错题(将正确程序写在指定位置)正确的程序为:
2、#include main()printf(商品名称价格n);printf(TCL 电视机¥7600n);printf(美的空调¥2000n);printf(SunRose 键盘¥50.5n);2编写程序:a=150,b=20,c=45,编写求 a/b、a/c(商)和 a%b、a%c(余数)的程序。答案:#includemain()int a,b,c,x,y;a=150;b=20;c=45;x=a/b;y=a/c;printf(a/b 的商=%dn,x);printf(a/c 的商=%dn,y);x=a%b;y=a%c;printf(a/b 的余数=%dn,x);printf(a/c 的余数=
3、%dn,y);4.设变量 a 的值为 0,b 的值为-10,编写程序:当 ab 时,将 b 赋给 c;当 a=b 时,将 a赋给 c。(提示:用条件运算符)答案:#includemain()int a,b,c;a=0;b=-10;c=(ab)?b:a;printf(c=%dn,c);五、调试和测试结果五、调试和测试结果1.编译、连接无错,运行后屏幕上显示以下结果:The dress is long The shoes are big The trousers are black3、编译、连接无错,运行后屏幕上显示以下结果:a/b 的商=7a/c 的商=3a/b 的余数=10a/c 的余数=15
4、4.编译、连接无错,运行后屏幕上显示以下结果:c=-10实验二实验二顺序结构程序设计顺序结构程序设计四、程序清单四、程序清单1键盘输入与屏幕输出练习问题问题 1 1 D。问题问题 2 2改 printf(%c,%c,%dn,a,b,c);printf(%c,%c,%dn,a,b,c);这条语句这条语句改成:printf(%c%c%dn,a,b,c);printf(%c%c%dn,a,b,c);问题问题 3 3改 scanf(%c%c%d,&a,&b,&c);scanf(%c%c%d,&a,&b,&c);这条语句这条语句改为:改为:scanf(%cscanf(%c,%c%c,%d,&a,&b,&
5、c);%d,&a,&b,&c);问题问题 4 4改 printf(%c,%c,%dn,a,b,c);printf(%c,%c,%dn,a,b,c);这条语句这条语句改成:printf(printf(%c%c%c%c%dn,a,b,c);%dn,a,b,c);2(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。#include int main()int a,b,c;printf(Enter a and b:);scanf(%o%o,&a,&b);c=a+b;printf(d:%dn,c);printf(x:%xn,c);return 0;2(2)编写程序:从键盘输入
6、两个实数 a 和 x,按公式计算并输出 y 的值:#include#includeint main()float a,x,y;scanf(%f%f,&a,&x);y=pow(a,5)+sin(a*x)+exp(a*x)+log(a+x);printf(y=%fn,y);return 0;3改错题正确的程序为:#include main()int a,b,c,s;scanf(%d%d%d,&a,&b,&c);s=a+b+c;printf(%d=%d+%d+%dn,s,a,b,c);/*输出 s=a+b+c*/printf(%d+%d+%d=%dn,a,b,c,s);/*输出 a+b+c=s*/五
7、、调试和测试结果五、调试和测试结果2(1)输入:12 14输出:26 1a2(2)输入:1 0输出:2.000000实验三实验三选择结构程序设计选择结构程序设计四、设计流程(算法描述)四、设计流程(算法描述)(请写出上机内容 2(2)题的算法描述)主要是两两比较,然后得出最大的数主要是两两比较,然后得出最大的数五、程序清单五、程序清单2(1)输入整数 x 和 a,计算并输出下列分段函数 f(x)的值(保留 2 位小数),请调用 log函数求自然对数,调用 fabs 函数求绝对值。程序为:#include#include main()int x,a;double y;printf(Enter a
8、 and x:);scanf(%d%d,&a,&x);if(fabs(x)!=a)y=log(fabs(a+x)/(a-x)/(2*a);elsey=0;printf(a=%d,f(%d)=%.2fn,a,x,y);(2)输入 a、b、c 三个整数,输出最大数。#includemain()int a,b,c,x;scanf(%d%d%d,&a,&b,&c);if(a=b)x=a;elsex=b;if(xc)x=c;printf(the max number is:%dn,x);return 0;3改错题正确程序为:#include main()double n;printf(Enter n:)
9、;scanf(%lf,&n);if(n0)printf(n is less than 0n);else if(n=0)printf(n is equal to 0n);elseprintf(n is greater 0n);六、调试和测试结果六、调试和测试结果2(1)Enter a and x:5 6a=5,f(6)=0.24Enter a and x:5 5a=5,f(5)=0.002(2)输入:3 2 1输出:the max number is:3输入:2 3 1输出:the max number is:3输入:1 2 3输出:the max number is:3实验四实验四循环结构程序
10、设计循环结构程序设计四、设计流程(算法描述)四、设计流程(算法描述)(请写出上机内容 2 的算法描述)首先求出每一个给定数的所有因子和,然后从 2 到 5000 循环,那一个数 x 与因子之和相等,就是完数。五、程序清单五、程序清单1编写程序:求 1+2+3+100 和 12+22+33+1002。#include#includeint main()int i,j,sum;sum=0;for(i=1;i=100;i+)sum+=i;printf(the sum is:%dn,sum);sum=0;for(i=1;i=100;i+)j=pow(i,2);sum+=j;printf(the squ
11、are sum is:%dn,sum);return 0;2一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出 25000中的所有完数。#include#include main()int i,j,sum=0;for(i=2;i=5000;i+)/遍历从 2 到 5000 的所有数sum=0;for(j=1;j=i/2;j+)/找出给定整数 X 的所有因子和if(i%j=0)sum+=j;if(i=sum)/sum 为因子和,如果和 i 相等,则输出printf(%d ,i);return 0;3.改错题正确的程序为:#include main()int n=1;int fin
12、d=0;while(!find)if(n%5=1&n%6=5&n%7=4&n%11=10)printf(n=%dn,n);find=1;n+;六、调试和测试结果六、调试和测试结果1:结果:the sum is:5050 the square sum is:3383502:结果:6 28 496实验五实验五函数和预处理命令函数和预处理命令四、设计流程(算法描述)四、设计流程(算法描述)(请写出上机内容 1 的算法描述)利用循环将 m 乘 n 次五、程序清单五、程序清单1编写自定义函数 long power(int m,int n),计算mn的值。利用此函数编程序实现:从键盘输入两个整数 m 和
13、n,计算出mn的值。#includelong power(int m,int n)/要返回的是 long 型int i;long s;/因为是要返回的数,所以这里也定义为 long 型s=1;for(i=1;i=n;i+)s*=m;return s;int main(void)int m,n;scanf(%d%d,&m,&n);printf(s=%ldn,power(m,n);return 0;2、写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。1源程序如下:int zdgys(int n1,int n2)int y,i;for(i
14、=n2;i=1;i-)if(n1%i=0&n2%i=0)y=i;break;return y;int zxgbs(int n1,int n2)int y,i;for(i=n1;i=n1*n2;i+)if(i%n1=0&i%n2=0)y=i;break;return y;main()int n1,n2,t;scanf(n1=%d n2=%d,&n1,&n2);if(n1n2)t=n1;n1=n2;n2=t;printf(zdgys=%d zxgbs=%d,zdgys(n1,n2),zxgbs(n1,n2);3、改错题正确程序如下:#include int fact(int n);int mult
15、i(int n);main()int i;double sum,item,eps;eps=1E-6;sum=1;item=1;for(i=1;item=eps;i+)item=fact(i)/multi(2*i+1);sum=sum+item;printf(“PI=%0.5lfn”,sum*2);return 0;int fact(int n)int i;int res=1;for(i=0;i=n;i+)res=res*i;return res;int multi(int n)int i;int res=1;for(i=3;i=n;i=i+2)res=res*i;return res;六、调试
16、和测试结果六、调试和测试结果1、输入:2 3输出:s=82、输入:n1=24 n2=16输出:zdgys=8 zxgbs=482.3、输出结果为:实验六实验六数组数组四、设计流程(算法描述)四、设计流程(算法描述)(请写出上机内容 1 的算法描述)设置两个变量分别指示头和尾。第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。五、程序清单1编写程序:从键盘输入一串整数保存到数组中,调用函数 antitone()将数组反序输出。自定义函数 void antitone(int a,int n)实现将数组中的 n 个数据按逆序存放。void antitone(int a,int
17、 n)int i,j;int k;i=0;j=n-1;while(ij)k=ai;ai=aj;aj=k;i+=1;j-=1;2已知某数列的前两项为 2 和 3,其后每一项为其前两项之积。编程实现:从键盘输入一个整数 x,判断并输出 x 最接近数列的第几项?#include#includevoid Mad(int a,int n)int i;a0=2;a1=3;for(i=2;iai;i+);k1=abs(x-ai-1);k2=abs(x-ai);if(k1k2)printf(x 最接近第%d 项n,i+1);elseprintf(x 最接近第%d 项n,i);return 0;3、源程序如下:
18、#include main()char c15;int i,word=0,num=0,space=0;for(i=0;i=14;i+)scanf(%c,&ci);for(i=0;i=0&cia&ciz)word+;printf(字符:%d 数字:%d 空格:%dn,word,num,space);六、调试和测试结果六、调试和测试结果1、输入:1 2 3 4 5输出:5 4 3 2 12、输入:110输出:x 最接近第 6 项3、输入:sd234kj64jk mjk输出:字符:9数字:5空格:1实验七实验七数组和函数综合程序设计数组和函数综合程序设计四、程序清单四、程序清单(请写出上机内容 2、
19、3 中源程序)2、原程序求得的是下三角形,经改进调试之后的程序为:#include#define N 6main()int i,j,sum=0;int aNN=0;printf(input 55 data:n);for(i=1;iN;i+)printf(Input the%d line data:n,i);for(j=1;jN;j+)scanf(%d,&aij);for(i=1;iN;i+)for(j=1;jN;j+)printf(%5d,aij);printf(n);for(i=1;i=i;j-)sum=sum+aij;printf(sum=%dn,sum);3 3、void fun(int
20、 ttMN,int ppN)int i,j,max;for(j=0;jN;j+)max=tt0j;for(i=1;imax)max=ttij;ppj=max;五、调试和测试结果五、调试和测试结果(写出上机内容 1 中填空的内容)1、(1)sum=0(2)tii(3)1实验八实验八指针指针四、程序清单四、程序清单(请写出上机内容 2 中的函数)求出每个位上的数字,然后放在千位上的数字乘以 1000,放在百位上的数字乘以 100,放在 10 位上的数字乘以 10,然后相加。void fun(int a,int b,long*c)int a10,a1,b10,b1;a10=a/10;a1=a%10;
21、b10=b/10;b1=b%10;*c=a10*1000+b1*100+a1*10+b10;五、调试和测试结果五、调试和测试结果(请写出上机内容 1 的输出结果)1(1)1(1)输出结果为:输出结果为:8,7,7,88,7,7,8(2)6(2)6(3)(1)x=10 y=20(3)(1)x=10 y=20(2)x=20 y=10(2)x=20 y=10(4)(4)【1 1】int*p【2 2】&ai【3 3】pi输入:1 2 3 4 5 6输出:1 2 3 4 5 6实验九实验九指针、函数和数组综合程序设计指针、函数和数组综合程序设计设计流程(算法描述)设计流程(算法描述)(请写出上机内容 2
22、 中的算法描述)i=0五、程序清单五、程序清单1已知一个整型数组 a5,其各元素值为 4,6,8,10,12。使用指针编程求数组元素之积。当*(x+i)!=0*(x+i)=yTF#include int main(void)int a=4,6,8,10,12,sum;int*p;sum=1;for(p=a;pa+5;p+)sum*=*p;printf(%dn,sum);return 0;2定义函数 int f(char*x,char y)判断 x 所指的字符串中是否包含字符 y,若是则函数返回 1,否则返回 1。int f(char*x,char y)char*p;for(p=x;*p!=0;
23、p+)if(*p=y)printf(%cn,*p);return 1;return 0;3.定义函数 void f(float x,int*y,float*z)将 x 的整数部分存于 y 所指的存储单元,x 的小数部分存于 x 所指的存储单元。void f(float x,int*y,float*z)*y=(int)x;*z=x-*y;六、调试和测试结果六、调试和测试结果测试结果正确实验十实验十结构体结构体四、程序清单四、程序清单(请写出上机内容 1 的源程序和上机内容 2 中的函数)1、上机内容 1 的源程序#include#include#define FORMAT%0dt%st%dt%c
24、nstruct student int num;char name20;int age;char sex;main()void input(struct student stu);void stat(struct student stu);struct student stu4;int i;input(stu);for(i=0;i4;i+)printf(FORMAT,stui.num,stui.name,stui.age,stui.sex);stat(stu);void input(struct student stu)int i;for(i=0;i4;i+)scanf(%d,&stui.nu
25、m);getchar();scanf(%s,&stui.name);getchar();scanf(%d,&stui.age);getchar();scanf(%c,&stui.sex);getchar();void stat(struct student stu)int i,c=0,boy=0,girl=0;for(i=0;i4;i+)if(stui.age18)c+=1;if(stui.sex=m)boy+;else girl+;printf(boytgirltageave=0;for(i=0;iN;i+)for(i=0;iave+=a-si;a-ave+=a-si;a-ave/=N;a-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 参考答案
限制150内