C语言实验报告参考答案原.docx
- 文档编号:9833911
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:45
- 大小:87.89KB
C语言实验报告参考答案原.docx
《C语言实验报告参考答案原.docx》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案原.docx(45页珍藏版)》请在冰豆网上搜索。
C语言实验报告参考答案原
C语言实验报告参考答案
实验一熟悉C语言程序开发环境及数据描述
四、程序清单
1.编写程序实现在屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
答案:
#include
main()
{
printf("Thedressislong\n");
printf("Theshoesarebig\n");
printf("Thetrousersareblack\n");
}
2.编写程序:
(1)a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。
(2)a=160,b=46,c=18,d=170,编写求(a+b)/(b-c)*(c-d)的程序。
答案:
(1)
#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);
}
(2)
#include
main()
{
inta,b,c,d;
floatx;
a=160;
b=46;
c=18;
d=170;
x=(a+b)/(b-c)*(c-d);
printf("(a+b)/(b-c)*(c-d)=%f\n",x);
}
3.设变量a的值为0,b的值为-10,编写程序:
当a>b时,将b赋给c;当a<=b时,将0赋给c。
(提示:
用条件运算符)
答案:
#include
main()
{
inta,b,c;
a=0;
b=-10;
c=(a>b)?
b:
a;
printf("c=%d\n",c);
}
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
2、
(1)编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商=3
a/b的余数=10
a/c的余数=15
(2)编译、连接无错,运行后屏幕上显示以下结果:
(a+b)/(b-c)*(c-d)=-1064.0000
3.编译、连接无错,运行后屏幕上显示以下结果:
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);
问题5把scanf("%c%c%d",&a,&b,&c);和printf("%c,%c,%d\n",a,b,c);
改成scanf("%c%*c%c%*c%d",&a,&b,&c);
printf("\'%c\',\'%c\',%d\n",a,b,c);
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
#include
intmain()
{
inta,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d\n",c);
printf("%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;
}
五、调试和测试结果
2
(1)输入:
1214
输出:
26
1a
2
(2)输入:
10
输出:
2.000000
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2(3)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
(1)输入一个整数,若大于等于0,输出提示信息“ispositive”,否则输出“isnegative”。
#include
#include
main()
{
inta;
scanf("%d",&a);
if(a>=0)
printf("thenumberispositve\n");
else
printf("thenumberisnegetive\n");
return0;
}
(2)输入两个整数a和b,若a>=b时,求其积c并显示;若a
#include
main()
{
inta,b,c;
scanf("%d%d",&a,&b);
if(a>=b)
printf("c=%d\n",a*b);
else
printf("c=%d\n",a/b);
return0;
}
(3)输入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; } 六、调试和测试结果 2 (1)输入: 2 输出: thenumberispositve 输入: 0 输出: thenumberispositve 输入: -2 输出: thenumberisnegetive 2 (2)输入: 32输出: c=6 输入: 23输出: c=0 2(3)输入: 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.编写程序: 计算sinx的近似值,精确到10-6。 其实 所以程序 #include #include main() { floatx,sinx,i,t; printf("请输入一个x值(弧度值): "); scanf("%f",&x); sinx=0;t=x;i=1; while(fabs(t)>=1e-6) {sinx=sinx+t; t=t*(-x*x/(2*i*(2*i+1))); i++; } printf("sin(%.2f)=%.6f\n",x,sinx); } 六、调试和测试结果 1: 结果: thesumis: 5050 thesquaresumis: 338350 2: 结果: 628496 3、输入0,输出sin(0.00)=0.000000 输入1.57,输出sin(1.57)=1.000000 输入0.5,输出sin(0.50)=0.479426 实验五函数和编译预处理 四、设计流程(算法描述) (请写出上机内容2的算法描述) 求素数的方法就是: 给定一个大于3的数x,从2到X的平方根遍历,只要有数可以被x整除,就不是素数 五、程序清单 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.编写自定义函数prime(intx),判断x是否为素数。 利用此函数编写程序找出3~5000中的所有素数,并输出素数的个数。 #include #include intprime(intm) { inti,k; k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>k)return1; return0; } main() { inti,k; k=0; for(i=3;i<=5000;i++) if(prime(i)==1){k++;printf("%disaprimemuber\n",i);} printf("共有%d个素数\n",k); } 3.编写自定义函数count(intx),计算x的因子个数。 利用此函数找出并输出1~1000中有奇数个不同因子的整数。 #include #include intcount(intx) { intsum,i; sum=0;//记住因子的个数 for(i=1;i<=x/2;i++) if(x%i==0) sum+=1; returnsum+1; } intmain(void) { inti,y; for(i=1;i<=100;i++) {y=count(i); if(y%2==1)printf("%d\t",i); } return0; }六、调试和测试结果 1.输入: 23 输出: s=8 2.输出: 共有668个素数 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("themostsimilarxnumberis: %d\n",a[i]); else printf("themostsimilarxnumberis: %d\n",a[i-1]); return0; } 3.编程实现: 输入10个学生5门课的成绩并完成如下功能 (1)求每个学生的平均分; (2)求每门课程的平均分。 #include #include #definenum10 typedefstructstudent { charname[20]; floatmath; floatenglis; floatcomputer; floatChinese; floathistory; }STUDENT; intmain(void) { STUDENTstu[num]; inti; floatscore,sum,average; chars[10]; floatscoreMath,scoreEng,scoreCom,scoreChi,scoreHis; for(i=0;i { printf("Name: "); gets(stu[i].name); printf("mathscore: "); scanf("%f",&score); stu[i].math=score; printf("englisscore: "); scanf("%f",&score); stu[i].englis=score; printf("computerscore: "); scanf("%f",&score); stu[i].computer=score; printf("Chinesescore: "); scanf("%f",&score); stu[i].Chinese=score; printf("historyscore: "); scanf("%f",&score); stu[i].history=score; gets(s);//功能是接受最后一个回车符,然后下一次gets(stu[i].name);才能起到作用 } //求每个学生的平均分数 for(i=0;i { sum=0; sum+=stu[i].math; sum+=stu[i].englis; sum+=stu[i].computer; sum+=stu[i].Chinese; sum+=stu[i].history; average=sum/5; printf("%s'saveragescoreis: %f\n",stu[i].name,average); } //求每门课的平均成绩 scoreMath=0; scoreEng=0; scoreCom=0; scoreChi=0; scoreHis=0; for(i=0;i { scoreMath+=stu[i].math; scoreEng+=stu[i].englis; scoreCom+=stu[i].computer; scoreChi+=stu[i].Chinese; scoreHis+=stu[i].history; } printf("math'saveragescoreis: %f\n",scoreMath/num); printf("englis'saveragescoreis: %f\n",scoreEng/num); printf("computer'saveragescoreis: %f\n",scoreCom/num); printf("Chinese'saveragescoreis: %f\n",scoreChi/num); printf("history'saveragescoreis: %f\n",scoreHis/num); return0; } 实验七数组和函数 四、程序清单 (请写出上机内容2中函数的源代码) 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 (2) (1)1 (2)i(3)a[p+i] 实验八指针 (1) 四、程序清单 (请写出上机内容2中的函数) 求出每个位上的数字,然后放在千位上的数字乘以1000,放在百位上的数字乘以100,放在10位上的数字乘以10,然后相加。 voidfun(inta,intb,long*c) { inta10,a1,b10,b1; a10=a/10; a1=a%10; b10=b/10; b1=b%10; *c=a10*1000+b1*100+a1*10+b10; } 五、调试和测试结果(请写出上机内容1的输出结果) 1 (1)输出结果为: 8,7,7,8 (2)6 (3) (1)x=10y=20 (2)x=20y=10 (4)【1】 int*p 【2】 &a[i] 【3】p[i] 输入: 123456输出: 123456 实验九指针 (2) 设计流程(算法描述) (请写出上机内容2中的算法描述) 五、程序清单 1.已知一个整型数组a[5],其各元素值为4,6,8,10,12。 使用指针编程求数组元素之积。 #include intmain(void) { inta[]={4,6,8,10,12},sum; int*p; sum=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 参考答案