C语言实验报告参考答案原.docx
- 文档编号:7844243
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:35
- 大小:145.17KB
C语言实验报告参考答案原.docx
《C语言实验报告参考答案原.docx》由会员分享,可在线阅读,更多相关《C语言实验报告参考答案原.docx(35页珍藏版)》请在冰豆网上搜索。
C语言实验报告参考答案原
C语言实验报告参考答案
实验•熟悉C语言程疗;开发环境及数据描述
四、程序清单
1编写程序实现在屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
答案:
#include
main()
{
printf(MThedressislong\np);
printf(MTheshoesarebig\n“);
printf(MThetrousersareblack\nH);
}
2.编写程序:
(1)a=150,b=20,c=45,编写求a/b、a/c(商)和a%ba%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(Ha/b的商=%d\inH,x);
printf(ua/c的商=%d\in,,,y);
x=a%b;
y=a%c;
printf(Ha/b的余数=%d\nMfx);
printf(ua/c的余数=%d\inH,y);
#include
main()
{
inta,b,c,d;
floatx;
a=160;
b=46;
c=1&
d=170;
x=(a+b)/(b_c)*(c-d);
printf(u(a+b)/(b-c)*(c-d)=%f\n,,,x);
}
3.设变量a的值为0,b的值为畀0,编写程序:
当a>b时,将b賦给c;当a<=b时,将0赋给c。
(提示:
用条件运算符)
答案:
#include
main()
{
inta,b,c;
a=0;
b=-10;
c=(a>b)?
b:
a;
printfC'c=%d\nu,c);
}
五、调试和测试结果
1.编译、连接无错,运行后屏幕上显示以下结果:
Thedressislong
Theshoesarebig
Thetrousersareblack
2、
(1)编译、连接无错,运行后屏幕上显示以下结果:
a/b的商=7
a/c的商=3
a/b的余数=10
3心的余数=45
(2)编译、连接无错,运行后屏幕上显示以下结果:
(a+b)/(b-c)w(c-d)=-1064.0000
3.编译、连接无错,运行后屏幕上显示以下结果:
c=-10
实验二顺序结构程序设计
四、程序清单
1•键盘输入与屏幕输出练习
问题1Do
问题2改printf(”%c,%c,%d\n“ab,c);这条语句
改成:
printf(M%c%c%d\n,,,alb,c);
问题3改scanf(,,%c%c%d,,,&a,&b,&c);这条语句
改为:
scanf(H%c,%c,%dH,&a1&b,&c);
问题4改printf(”%c,%c,%d\n“ab,c);这条语句
改成:
%c‘'1%d\nM,a,btc);
问题5把scanf(,,%c%c%dH,&a,&b,&c);和printf(,,%c,%c,%d\n">a,btc);
改成scanf(,,%c%*c%c%*c%d,\&a,&b,&c);
printf(,f\,%c\liV%cV1%d\n,,.albsc);
2
(1)从键盘输入两个八进制数,计算两数之和并分别用十进制和十六进制数形式输出。
#inelude
intmain()
{
inta,b,c;
scanf(,,%d%dH,&a,&b);
c=a+b;
printf(M%d\nH,c);
printf(u%x\nH,c);
return0;
}
2
(2)编写程序:
从键盘输入两个实数a和x,按公式计算并输出y的值:
ya5sin(ax)ln(ax)eax
#include
#include
floata,x,y;
y=pow(a,5)+sin(a*x)+exp(a*x)+log(a+x);printf(,fy=%f\nH,y);return0;
五、调试和测试结果
2
(1)输入:
1214
输岀:
26
1a
2
(2)输入:
10
输出:
2.000000
实验三选择结构程序设计
四、设计流程(算法描述)
(请写出上机内容2(3)题的算法描述)
主要是两两比较,然后得出最大的数
五、程序清单
⑴输入-个整数,若大于等于0,输出提示信息“ispositive”否则输出
isnegative。
#include
#include
inta;
scanf(N%dH,&a);
if(a>=0)
printf(Hthenumberispositve'n”);
else
printf(Hthenumberisnegetive\n“);
return0;
}
⑵输入两个整数a和b,若a>=b时,求其积c并显示:
若a
#include
main()
c并显示。
return0;
}
(3)输入a、b、c三个整数,输出最大数。
#include
main()
{
inta,b,c,x;
scanf(,,%d%d%dH,&a,&b,&c);
if(a>=b)
x=a;
else
x=b;
if(x x=c; printf(Hthemaxnumberis: %d\n”,x);return0; } 六、调试和测试结果 2⑴输入: 2 输出: thenumberispositve 输入: 0 输出: thenumberispositve 输入: -2 输出: thenumberisnegetive 2 (2)输入: 3 2 输出: c=6 输入: 2 3 输出: c=0 2⑶输入: 3 21 输出: themaxnumber 输入: 2 31 输出: themaxnumber 输入: 1 23 输出: themaxnumber 实验四循环结构程序设计四、设计流程(算法描述) (请写岀上机内容2的算法描述) 首先求出每一个给定数的所有因子和,然后从2到5000循环,那一个数 X与因子之和相等,就是完数。 五、程序清单2£ 1•编嶷序: 求1+2+3+-+100和1+2+3+-+100o #include #include intmain() inti,j,sum; sum=0; for(i=l;i<=l00;i++) sum+=i; printfC'thesumis: %d\n'\sum); sum=0; for(i=1;i<=100;i++) { j=pow(i,2); sum+=j; } printf(Hthesquaresumis: %d\n”,sum); return0; } 2•-・个数如果恰好等于它的因子之和,这个数就称为“完数”,编写程序找出2〜5000 中的所有完数。 #include #include main() { inti,j,sum=0; for(匸2;iv=5000;i++)〃遍历从2到5000的所有数 { sum=0; for0=1;j<=i/2;j++)//找出给定整数X的所有因子和 { if(i%j==0) sum+=j; printf(M%dn,i); return0; } 3•编写程序: 计算sinx的近似值,精确到IO6- JO/XXXsinxx———3! 5! 7! •(n1)x 其实sinx1)所以程序 (2n1)! #inelude #inelude main() { floatx,sinx,i,t; printf("谙输入一个x值(弧度值): ");sean&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(Hsin(%.2f)=%.6f\nH,x,sinx); } 六、调试和测试结果 1: 结果: thesumis: 5050 thesquaresumis338350 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),计算mn的值。 禾U用此函数编程序实现: 从 键盘输入两个整数m和n,计算出m"的值。 #include longpower(intm.intn)"要返回的是long型 { inti; longs;"因为是要返回的数,所以这里也定义为long型 s=1; for(i=1;i<=n;i++){ s*=m; } returns; }intmain(void) { intmtn; scanf(”%d%cT,&m,&n); printf(ns=%ld\nH,power(mtn)); 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(N%disaprimemuber\nprintf(H共有%d个素数\n",k); } 3.编写自定义函数count(intx),计算x的因子个数。 利用此函数找出并输出1〜1000 中有奇数个不同因子的整数。 #include { intsumj; 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==l)printf(”%d\t',i);} return0; }六、调试和测试结果 1.输入: 23 输出: s=8 2.输出: 共有668个素数 3. 实验六数组 四、设计流程(算法描述) (请写出上机内容1的算法描述) 设置两个变量分别指示头和尾。 第一个和最后一个元素值互换,然后头和尾变量向里移动,最终到两变量相遇为止。 五、程序清单 1.编写程序: 从键盘输入i串整数保存到数组中,调用函数antitone()将数组反序输出。 自定义函数voidantitone(inta[],intn)实现将数组中的n个数据按逆序存放。 voidantitone(intaQ,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(Ninputx: H); 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(Hthemostsimilarxnumberis: %d\n”,a[i]); else printf(Hthemostsimilarxnumberis: %d\n”,a[i/]); 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,scoreEngtscoreCom,scoreChi,scoreHis; for(i=0;i { printf(HName: M); gets(stu[i].name); printf(Hmathscore: "); scan«”%匚&score); stu[i].math=score; printf(nenglisscore: **); scan«”%匚&score); stu[i].englis=score; printf(Hcomputerscore: '1); scan«”%匚&score); stu[i].computer=score; printf(HChinesescore: 1'); scan«”%匚&score); stu[i].Chinese=score; printf(Hhistoryscore: ”);scanf(n%f',&score);stu[i].history=score; 到作用 } 〃求每个学生的平均分数 for(i=0;i { sum=O; sum+=stu[i].math; sum+=stu[i].englis; sum+=stu[i].computer; sum+=stu[i].Chinese; sum+=stu[i].history; average=sum/5; printf(M%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: %^",scoreMath/num); printf(”englis*saveragescoreis: %f\nH,scoreEng/num); printfC'computei^saveragescoreis: %f\n'\scoreCom/num); printf(HChinese'saveragescoreis: %f\nH,scoreChi/num);printf(Hhistory'saveragescoreis: %f\nM,scoreHis/num); return0; 实验七数组和函数 四、程序清单 (请写出上机内容2中函数的源代码) voidfun(inttt[M][N],intpp[N]) {inti,j,max; for(j=0;j {max=tt[O]01; for(i=1;i } } 五、调试和测试结果 (写出上机内容4中填空的内容) (1) (1)sum=0 (2)Oil⑶1 ⑵ (1) (2)i—(3)aS+il 实验八指针 (1) 四、程序清单 (请写出上机内容2中的函数) 求出每个位上的数字,然后放在千位上的数字乘以1000,放在百位上的数字乘 以100,放在10位上的数字乘以10,然后相加。 voidfun(intajntbjong*c){ inta10ta1,b10tb1; a10=a/10; a1=a%10; b10=b/10; b1=b%10; *c=a10*1000+b1w100+a1*10+b10; } 五、调试和测试结果(谙写出上机内容1的输岀结果) 1 (1)输出结果为: 8,7,7,8 ⑵6 ⑶ (1)x=10y=20 (2)x=20y=10 ⑷【1】intp[2]&a[i][3]p[i] 实验九指针 (2) 设计流程(算法描述) (请写出上机内容2中的算法描述) 五、程序清单 1•已知-•个整型数组a[5],其各元素值为4,6,8,10,12。 使用指针编程求数组元素之积。 #inelude intaO={4.6t8,10J2},sum; int*p; sum=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验 报告 参考答案