c语言上机标准答案.docx
- 文档编号:4422039
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:16
- 大小:24.85KB
c语言上机标准答案.docx
《c语言上机标准答案.docx》由会员分享,可在线阅读,更多相关《c语言上机标准答案.docx(16页珍藏版)》请在冰豆网上搜索。
c语言上机标准答案
c语言上机答案
————————————————————————————————作者:
————————————————————————————————日期:
2010C语言实验报告参考答案
实验一熟悉C语言程序开发环境及数据描述
四、程序清单
1.编写程序实现在屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
答案:
#include
main()
{
printf("Thedressislong\n");
printf("Theshoesarebig\n");
printf("Thetrousersareblack\n");
}
2.改错题(将正确程序写在指定位置)
正确的程序为:
#include
main()
{
printf("商品名称 价格\n");
printf("TCL电视机 ¥7600\n");
printf("美的空调 ¥2000\n");
printf("SunRose键盘 ¥50.5\n");
}
2.编写程序:
a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
答案:
#include
main()
{
inta,b,c,x,y;
a=150;
b=20;
c=45;
x=a/b;
y=a/c;
printf("a/b的商=%d\n",x);
printf("a/c的商=%d\n",y);
x=a%b;
y=a%c;
printf("a/b的余数=%d\n",x);
printf("a/c的余数=%d\n",y);
}
4.设变量a的值为0,b的值为-10,编写程序:
当a>b时,将b赋给c;当a<=b时,将a赋给c。
(提示:
用条件运算符)
答案:
#include
main()
{
inta,b,c;
a=0;
b=-10;
c=(a>b)?
b:
a;
printf("c=%d\n",c);
}
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
3、编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商=3
a/b的余数=10
a/c的余数=15
4.编译、连接无错,运行后屏幕上显示以下结果:
c=-10
实验二顺序结构程序设计
四、程序清单
1.键盘输入与屏幕输出练习
问题1D。
问题2改printf("%c,%c,%d\n",a,b,c);这条语句
改成:
printf("%c%c%d\n",a,b,c);
问题3改scanf("%c%c%d",&a,&b,&c);这条语句
改为:
scanf("%c,%c,%d",&a,&b,&c);
问题4改printf("%c,%c,%d\n",a,b,c);这条语句
改成:
printf("\’%c\’\’%c\’%d\n",a,b,c);
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
#include
intmain()
{
inta,b,c;
printf("Enteraandb:
");
scanf("%o%o",&a,&b);
c=a+b;
printf("d:
%d\n",c);
printf("x:
%x\n",c);
return0;
}
2
(2)编写程序:
从键盘输入两个实数a和x,按公式计算并输出y的值:
#include
#include
intmain()
{
floata,x,y;
scanf("%f%f",&a,&x);
y=pow(a,5)+sin(a*x)+exp(a*x)+log(a+x);
printf("y=%f\n",y);
return0;
}
3.改错题
正确的程序为:
#include
main()
{
inta,b,c,s;
scanf("%d%d%d",&a,&b,&c);
s=a+b+c;
printf("%d=%d+%d+%d\n",s,a,b,c);/*输出s=a+b+c*/
printf("%d+%d+%d=%d\n",a,b,c,s);/*输出a+b+c=s*/
}
五、调试和测试结果
2
(1)输入:
1214
输出:
26
1a
2
(2)输入:
10
输出:
2.000000
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2
(2)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
2
(1)输入整数x和a,计算并输出下列分段函数f(x)的值(保留2位小数),请调用log函数求自然对数,调用fabs函数求绝对值。
程序为:
#include
#include
main()
{
intx,a;
doubley;
printf("Enteraandx:
");
scanf("%d%d",&a,&x);
if(fabs(x)!
=a)
y=log(fabs((float)(a+x)/(a-x)))/(2*a);
else
y=0;
printf("a=%d,f(%d)=%.2f\n",a,x,y);
}
(2)输入a、b、c三个整数,输出最大数。
#include
main()
{
inta,b,c,x;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
x=a;
else
x=b;
if(x x=c; printf("themaxnumberis: %d\n",x); return0; } 3.改错题 正确程序为: #include main() { doublen; printf("Entern: "); scanf("%lf",&n); if(n<0) printf("%lfislessthan0\n",n); elseif(n==0) printf("%lfisequalto0\n",n); else printf("%lfisgreater0\n",n); } 六、调试和测试结果 2 (1)Enteraandx: 56 a=5,f(6)=0.24 Enteraandx: 55 a=5,f(5)=0.00 2 (2)输入: 321输出: themaxnumberis: 3 输入: 231输出: themaxnumberis: 3 输入: 123输出: themaxnumberis: 3 实验四循环结构程序设计 四、设计流程(算法描述) (请写出上机内容2的算法描述) 首先求出每一个给定数的所有因子和,然后从2到5000循环,那一个数x与因子之和相等,就是完数。 五、程序清单 1.编写程序: 求1+2+3+…+100和12+22+33+…+1002。 #include #include intmain() { inti,j,sum; sum=0; for(i=1;i<=100;i++) sum+=i; printf("thesumis: %d\n",sum); sum=0; for(i=1;i<=100;i++) { j=pow(i,2); sum+=j; } printf("thesquaresumis: %d\n",sum); return0; } 2.一个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2~5000中的所有完数。 #include #include main() { inti,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); } return0; } 3.改错题 正确的程序为: #include main() { intn=1; intfind=0; while(! find) { if(n%5==1&&n%6==5&&n%7==4&&n%11==10) { printf("n=%d\n",n); find=1; } n++; } } 六、调试和测试结果 1: 结果: thesumis: 5050 thesquaresumis: 338350 2: 结果: 628496 实验五函数和预处理命令 四、设计流程(算法描述) (请写出上机内容1的算法描述) 利用循环将m乘n次 五、程序清单 1.编写自定义函数longpower(intm,intn),计算 的值。 利用此函数编程序实现: 从键盘输入两个整数m和n,计算出 的值。 #include longpower(intm,intn)//要返回的是long型 { inti; longs;//因为是要返回的数,所以这里也定义为long型 s=1; for(i=1;i<=n;i++) { s*=m; } returns; } intmain(void) { intm,n; scanf("%d%d",&m,&n); printf("s=%ld\n",power(m,n)); return0; } 2、写出两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 1.源程序如下: intzdgys(intn1,intn2) {inty,i; for(i=n2;i<=1;i--) if(n1%i==0&&n2%i==0) {y=i;break;} returny; } intzxgbs(intn1,intn2) {inty,i; for(i=n1;i<=n1*n2;i++) if(i%n1==0&&i%n2==0) {y=i;break;} returny; } main() {intn1,n2,t; scanf("n1=%dn2=%d",&n1,&n2); if(n1 {t=n1;n1=n2;n2=t;} printf("zdgys=%dzxgbs=%d",zdgys(n1,n2),zxgbs(n1,n2)); } 3、改错题 正确程序如下: #include intfact(intn); intmulti(intn); main() {inti; doublesum,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.5lf\n”,sum*2); return0; } intfact(intn) {inti; intres=1; for(i=0;i<=n;i++) res=res*i; returnres; } intmulti(intn) {inti; intres=1; for(i=3;i<=n;i=i+2) res=res*i; returnres; } 六、调试和测试结果 1、输入: 23 输出: s=8 2、输入: n1=24n2=16 输出: zdgys=8zxgbs=48 2. 3、输出结果为: 实验六数组 四、设计流程(算法描述) (请写出上机内容1的算法描述) 设置两个变量分别指示头和尾。 第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。 五、程序清单 1.编写程序: 从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。 自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。 voidantitone(inta[],intn) { inti,j; intk; i=0; j=n-1; while(i { k=a[i]; a[i]=a[j]; a[j]=k; i+=1; j-=1; } } 2.已知某数列的前两项为2和3,其后每一项为其前两项之积。 编程实现: 从键盘输入一个整数x,判断并输出x最接近数列的第几项? #include #include voidMad(inta[],intn) { inti; a[0]=2; a[1]=3; for(i=2;i { a[i]=a[i-1]*a[i-2]; } } intmain(void) { inta[100],x,k1,k2; inti; Mad(a,100);//产生序列 printf("inputx: "); scanf("%d",&x); i=0; for(;x>a[i];i++); k1=abs(x-a[i-1]); k2=abs(x-a[i]); if(k1>k2) printf("x最接近第%d项\n",i+1); else printf("x最接近第%d项\n",i); return0; } 3、源程序如下: #include main() { charc[15]; inti,word=0,num=0,space=0; for(i=0;i<=14;i++) scanf("%c",&c[i]); for(i=0;i<=14;i++) {if(c[i]=='')space++; if(c[i]>='0'&&c[i]<='9')num++; if(c[i]>'a'&&c[i]<'z')word++; } printf("字符: %d数字: %d空格: %d\n",word,num,space); } 六、调试和测试结果 1、输入: 12345 输出: 54321 2、输入: 110 输出: x最接近第6项 3、输入: sd234kj64jkmjk 输出: 字符: 9数字: 5空格: 1 实验七数组和函数综合程序设计 四、程序清单 (请写出上机内容2、3中源程序) 2、原程序求得的是下三角形,经改进调试之后的程序为: #include #defineN6 main() { inti,j,sum=0; inta[N][N]={0}; printf("input5×5data: \n"); for(i=1;i { printf("Inputthe%dlinedata: \n",i); for(j=1;j scanf("%d",&a[i][j]); } for(i=1;i { for(j=1;j printf("%5d",a[i][j]); printf("\n"); } for(i=1;i for(j=N-1;j>=i;j--) sum=sum+a[i][j]; printf("sum=%d\n",sum); } 3、 voidfun(inttt[M][N],intpp[N]) {inti,j,max; for(j=0;j {max=tt[0][j]; for(i=1;i pp[j]=max; } } 五、调试和测试结果 (写出上机内容1中填空的内容) 1、 (1)sum=0 (2)t[i][i](3)1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 标准答案