ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:154.04KB ,
资源ID:8784119      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8784119.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(C语言课后实验设计答案.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

C语言课后实验设计答案.doc

1、C语言程序设计案例教程(含实验) 设计性实验的程序参考答案 实验项目一 C程序的编辑、编译、连接和运行 题目:编写程序,要求屏幕上显示如下信息: *********************** This is a C program . *********************** 程序: #include void main() { printf(“***********************\n”); printf(“This is

2、a C programn .\n”); printf(“***********************\n”); } 实验项目二 数据类型、运算符、表达式 题目 (1)程序填空:输入1 个实数x,计算并输出其平方根(保留1 位小数)。 填空 1. double x,root; 2. root=sqrt(x); (2)输入一个大写英文字母,输出相应的小写字母。 填空 1. ch=ch+32; 实验项目三 顺序结构程序设计 题目 (1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。 程序代码: #in

3、clude #include main() { float a,b,c,s,arer; printf(" 请输入三角形的三个边a,b,c:\n"); scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("三角形的边为a=%7.2f, b=%7.2f, c=%7.2f\n",a,b,c); printf("三角形的面积area=%7.2f\n ",area); (2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面

4、积、圆球表面积、圆球体积、圆柱体积。 程序代码: #include main() { float h,r,l,s,sq,vq,vz; float pi=3.1415926; printf(" 请输入圆半径 r,圆柱高 h: "); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=4.0/3.0*pi*r*r?*r; vz=pi*r*r*h; printf("圆周长为:l=%6.2f\n",l); printf("圆面积为:s=%6.2f\n",s); printf("圆球表面

5、积为:sq=%6.2f\n",sq); printf("圆球体积为:vq=%6.2f\n",vq) ; printf("圆柱体积为:vz=%6.2\n ",vz); (3)分别用getchar函数和scanf函数读入2个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。 程序代码: #include main() { char c1,c2; printf(" 请输入两个字符 c1,c2:"); c1=getchar(); c2=getchar(); printf("用putchar语句输出结果为:"); put

6、char(c1); putchar(c2); printf(" 请用scanf函数输入两个字符 c1,c2:"); scanf("%c %c\n",&c1,&c2); printf("用printf语句输出结果为:"); printf("c1=%c c2=%c\n",c1,c2); } 实验项目四 分支结构程序设计 题目 (1)程序填空。输入四个整数,输出其中的最小值。 填空: min=a; if(b

7、min=d; (2)计算如下函数Y的值。 Y= { X (X<1) 2X-1 (1≤X<10) 3X-11 (X>=10) 程序代码: #include main() { int x,y; printf(" 请输入x:"); scanf("%d",&x); if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf("x=%d,y=%d",x,y); } (3)给出一个百分制成绩,输出对应的等级分。共分A、B、C

8、D、E五个等级。90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。要求分别用if语句和switch语句实现。 程序代码: ① 用 if-else 语句实现: #include main() { int g; Loop: printf(" 请输入g:"); scanf("%d",&g); if(g<0||g>100) goto Loop; if(g>90) printf("A"); sele if(g>80) printf("B"); else if(g>70) printf("C"); els

9、e if(g>60) printf("D"); else printf("E"); } ② 用 switch 语句实现: #include main() { int g; Loop: printf(" 请输入g:"); scanf("%d",&g); if(g<0||g>100) goto Loop; switch(g/10) { case 10: case 9: printf("A"); case 8: printf("B"); case 7: printf("C"); case 6: pri

10、ntf("D"); default: printf("E"); } } (4)编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。 奖金 税率 a<500 0.00 500≤a<1000 0.05 1000≤a<2000 0.08 2000≤a<5000 0.10 5000≤a 0.15 提示:a=奖金数 rate=税率值 tax=应缴税款 profit=实得奖金数。 计算公式: tax = a* rate , profit= a – tax 程序代

11、码: #include main() { float a,rate,tax,profit; scanf("%f ",&a); if(a<500) rate=0.0; else if (a<1000) rate=0.05; else if (a<2000) rate=0.08; else if (a<5000) rate=0.1; else rate=0.15; tax= a*rate; profit=a-tax; printf(" rate=%10.2f,tax=%10.2f, profit=%10.2f\n", rate, tax, pro

12、fit); } 实验项目五 循环结构程序设计 题目 (1)猴子吃桃子。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃时,只剩下一个桃子。问第一天共摘多少个桃子?(要求使用While循环语句实现)。 算法提示 设 total:桃子的总数       x1 :前一天的桃子数       x2 : 后一天的桃子数       day: 天数 计算公式:   x1=(x2+1)*2     第1天的桃子数是第2天桃子数加1后的2倍。 程序代码:

13、include void main() { int x1,x2,day,total; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day=day-1; } Total=x1; printf(" total=%d\n", x1); } (2)求200—300之间的素数。 程序代码: #include void main() { int m,n,flag; printf("\n The primers from 200 to 300 is: \n"); fo

14、r(n=201;n<300;n+=2) { flag=1; for(m=2;m<=n/2;m++) if(n/m==0) { flag=0; break; } if(flag==0) continue; printf("%d ",n); } printf("\n"); } (3)程序填空 ① 求1-1/2+1/3-1/4+⋯⋯,输入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n 项和(保留3 位小数)。 程序代码: #include void main(

15、) { int i, n, flag; float sum; scanf("%d", &n); /*----以下为所填语句------*/ sum=0; flag=1; for(i=1;i<=n;i++) { sum+=flag*1.0/i; flag=-flag; } printf("%.3f\n", sum); } ② 统计字符。输入一个正整数repeat (0 void main

16、 ) { int ri, repeat; int blank, digit, letter, other; char c; scanf("%d", &repeat); getchar(); for(ri=1; ri<=repeat; ri++) { c = getchar(); /*----以下为所填语句------*/ blank=digit=letter=other=0; while(c!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else

17、if(c>='0'&&c<='9') digit++; else if(c==' ') blank++; else other++; c = getchar(); } printf("letter=%d, blank=%d, digit=%d, other=%d\n", letter, blank, digit, other); } } ③ 找最大值。输入一个正整数repeat (0

18、中的最大值。 例:输入 3 (repeat=3) 12 6 1 90 10 40 30 20 -1 -3 -4 -5 输出 max is 90 (12 6 1 90 中的最大值是90) max is 40 (10 40 30 20 中的最大值是40) max is -1 (-1 -3 -4 -5 中的最大值是-1) 程序代码: #include void main( ) { int ri, repeat; int a, b, c, d, max; scanf("%d", &repeat); /*----以下

19、为所填语句------*/ for(ri=1; ri<=repeat; ri++) { scanf("%d%d%d%d", &a, &b, &c, &d); /*----以下为所填语句------*/ max=a; if(max void main() { int i,j; for(i=1;i<9;i++); for(j=

20、1;j<=i;j++); { if(i==j) printf("\n"); printf("%d*%d= %d ",i, j, i*j); } } 实验项目六 函数及其应用 题目 (1) 程序填空。计算代数多项式1.1+2.2x+3.3x2+4.4x3+5.5x4的值。 例: 输入 1.5 输出 54.52 程序代码: #include float f(float); void main() { float x,y; scanf(“%f”,&x); /*----以下为所填语句------*/

21、 y=f(x); printf("%.2f\n",y); } /*----以下为所填语句------*/ float f(float x) { float sum=0,t=1; int i; for(i=1;i<=5;i++){ sum+=(i+1.0*i/10)*t; t*=x; } return sum; } (2)编写程序,求 s=1!+2!+3!+....+10! 之和。要求定义递归函数fact(n)求n!,程序的输出形式为:1!+2!+3!+4+5!+6!+7!+8!+9!+10! = s,其中,s为求和值。 实验提示 求n!的递归公式

22、为:    1 (n=0、n=1) fact(n)= fact(n)=n*fact(n-1) (n>1)  注意:s 和fas(n)均为长整型。! 程序代码: #include void main() { long int fas(int); int i, m; long int s=0; for(i=1;i<=10;i++) { m=fas(i); s=s+m; print(“%d!+”,i); } print(“\b=%d\n”,s); } long int fas(int x) {

23、 if (x==0||x==1) return(1); else return(x*fas(x-1));      } (3)编写程序,N名裁判给某歌手打分(假定分数都为整数)。评分原则是去掉一个最高分,去掉一个最低分,剩下的分数取平均值为歌手的最终得分。裁判给分的范围是:  60 <= 分数〈=100,裁判人数N=10。要求:每个裁判的分数由键盘输入。 实验提示 定义两个函数: l max():返回两个数中较大的值; l min():返回两个数中较小的值。 程序代码: #include Int m=0;n=100; void

24、main() { int i,x,sum; sum=0; for(i=1;i<=10;i++) { LOOP: scanf(“%d”,&x) ; if(x<60||x>100) goto LOOP; m=max(x,m); n= min(x,n); sum=sum+x; } print(“%d”,(sum-m-n)/8); } int max (int x) { if (x>m) m=x; return(m); }  int min (int x) { if (x

25、urn(n); } (4)编写程序,用递归法将一个十进制整数转换成二进制数。 程序代码: #include void DtoB(int n); void main() { int n; scanf("%d",&n); printf("%d-----)",n); DtoB(n); printf("\n"); } void DtoB(int n) { if(n) { DtoB(n/2); printf("%d",n%2); } } 实验项目

26、七 数组及其应用 题目 (1)程序填空。 ① 求n个数中较大值及其下标。输入一个正整数n (1 void main( ) { int ri, repeat; int i, index, n; int a[10]; scanf("%d", &repeat); for(ri=1; ri<=repeat; ri++){ scanf("%d", &n); for(i=0; i

27、以下为所填语句------*/ index=0; for(i=1; i void main( ) { int ri, repeat; int i, n, t

28、emp; int a[10]; scanf("%d", &repeat); for(ri=1; ri<=repeat; ri++){ scanf("%d", &n); for(i=0; i

29、 找鞍点(选作)。 输入 1 个正整数 n(1≤n≤6)和n 阶方阵a 中的元素,如果找到a 的鞍点(鞍点的元素值在该行上最大, 在该列上最小), 就输出它的下标, 否则,输出"NO"(设a 最多有1 个鞍点)。 程序代码: #include "stdio.h" void main( ) { int ri,repeat; int flag,i,j,k,row,col,n,a[6][6]; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); for(i=0; i

30、 ja[k][col]) { flag=0; break;} if(flag) { printf("a[%d][%d]=

31、d\n", row, col,a[row][col]); break; } } if(!flag) printf("NO\n"); } } (2)有10个数存放在一个数组中,先对该10个数从大到小排序,然后输入一个数,要求找出该数是数组中第几个元素的值,若找不到,输出未找到信息。 实验提示 ① 用冒泡或者选择排序法对数组中的10个数进行排序; ② 用折半查找的方法在数组中查找指定的数。 程序代码: #include #define N 11 #include #define N 11 void

32、sort(int a[N]) /* 排序 */ { int i,j,min,temp; for(i=1;i<=9;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } } void main() { int i,j,x,a[N]; void badd( int,int[],int); printf("Ente

33、r data:\n"); for(i=1;i<=10;i++) { printf("a[%d]=",i); scanf("%d",&a[i]); } printf(" \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf(" \n"); sort(a); printf("\n The sorted numbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); scanf("%d",&x); badd(x,a

34、N); /* zheban find x */ } void badd (int x,int a[] ,int n) { int mid,top,bot; top=0; bot=n-1; while(top<=bot) { mid=(top+bot)/2; if(x==a[mid]) { printf("\n%d=a[%3d ]\n",x,mid-1); exit(0); } else if( x>mid) top=mid+1; else bot=mid-1;

35、 } printf("\n can`t find %d ! ",x); } (3)/**/统计6个学生各4门功课的成绩。要求程序具有如下功能: ① 每个学生的4门功课的成绩从键盘读入; ② 计算每个学生的总分和平均分; ③ 按平均成绩进行排序,输出排序后的成绩单(四门功课的成绩和均分),给出名次。    如先输入学生4门课成绩: 1: 67,72,65,80 2: 75,82,94,95 3: 70,74,80,76 4:...... 程序代码: #include main() {   int i,j,k,t,s,a[7][7];

36、   for(i=1;i<=6;i++) a[i][0]=i;  /*输入序号*/   for(j=1;j<=6;j++)     {   t=0;       for(k=1;k<=4;k++)   {  scanf("%d",&a[j][k]);  /*输入成绩*/       t=t+a[j][k];    /*计算总成绩*/    }    a[j][6]=t/4;    /*计算平均成绩存入第6列*/    a[j][5]=t;   /*总平均成绩存入第5列*/    printf("\n");     }   for(j=1;j<=6;j++)   { f

37、or(k=0;k<=6;k++)     printf("%d  ",a[j][k]);   /*输出序号及成绩*/   printf("\n");   }  for(j=1;j<=5;j++)     for(i=1;i<=7-j-1;i++)       if (a[i][6]

38、"  NO: c1  C2  C3  C4  TOLA AVE\n");  for(j=1;j<=6;j++)   /*输出排序后的成绩*/   { for(k=0;k<=6;k++)     printf("%4d",a[j][k]);     printf("\n");    } } 实验项目八 指针及其应用 题目 (1)编写函数int search(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1。 实验提示 ① 在数组list中查找元素x可以用单循环,采用顺序查找的方法实现; ② 注

39、意控制循环语句的执行。 程序代码: int search(int list[],int n,int x) { int i,*p; for(i=0,p=list; p=list+n) return -1; } (2)编写函数,用指针实现把字符串1中第m个字符开始的所有字符复制成字符串2。 实验提示 ① 编写函数void substrcpy(char *,int ,char *)将字符串1中第m个字符开始的所有字符复制成字符串2。

40、② 在主函数中: l 输入m,将字符串1输入到一维字符数组str1; l 调用substrcpy函数; l 输出字符串2。 程序代码: #include #define m 20 main() { int m; char *str1[m]}, *str2[m]; printf(“input string: “); gets(str1); printf(“ input the number: “); scanf(“%d”,&m); if (strlen(str1)

41、 { substrcpy(str1,str2, m); printf(“ the result is :%s“,str2); } } viod substrcpy(char *p1, char *p2 ,int m) { int n=0;  while(n

42、反序存放。方法为:将a[0]与a[n-1]对换,a[1]与a[n-2]对换,直到将a[(n-①/2]与a[n-int((n-1)/2)]对换。 ② 在主函数中: l 输入n,并将n个数输入到一维数组a; l 要求用指向函数的指针调用invert函数; 输出数组a。 程序代码1: #include #define N 10 main() {int invert(int x[]); int i,a[N]; int(*p)(); p=invert; for(i=0;i

43、)  printf("%4d",a[i]);  printf("\n");  (*p)(a);  for(i=0;i

44、nclude #define N 10 void main ( ) { int invert(int x[]); int i, a[10] ;    int (*p)() ;  p=invert; for (i=0;i

45、 temp=x[i] ; x[i] = x[N-i-1]  x[N-i-1]= temp; } printf("\n"); for (i=0;i1,

46、输出是最后为王的猴子编号。猴子选王的过程实际上可描述成以下操作: ① 建立一个单循环链表,每个结点的数据域依次存放的是猴子编号(模拟m个猴子围坐成一圈); ② 从链表的第一个结点开始顺着后继指针依次访问到第n个结点的前驱,将第n个结点从链表中删除(模拟猴子报数和猴子出列); ③ 再从被删结点的后继结点开始,重复②中的猴子报数和出列过程,直到链表中只剩下一个结点为止,剩下的这个结点中的编号即为猴王的编号。 程序代码: #include #include typedef struct clink { int no; struct c

47、link *next; }clink; void creat(clink **head,int m) /*用尾插法建立长度为m的单循环链表head,并通过形参返回值head*/ { int i; clink *p,*q; /*指针p用来指向新生成的结点,指针q用来指向当前链表的尾结点*/ *head=(clink *)malloc(sizeof(clink)); /*生成链表中的第一个结点*/ (*head)->no=1; q=*head; /*使q指向当前链表的尾结点*/ for(i=2;i<=m

48、i++) { /*----以下为所填语句------*/ p=(clink *)malloc(sizeof(clink)); p->no=i; q->next=p; q=p; } q->next=*head; /*使尾结点的后继指针指向链表的第一个结点从而形成循环链表*/ } void number(clink **head,clink **p,int n) /*从指针p指向的结点开始报数,报到n的结点删除,并将链表的头指针和下一轮开始报数的位置p值返回*/ { int i; clink *q; for(i=2;i

49、next,i++); /*指针p指向报数为n的前驱结点*/ /*----以下为所填语句------*/ q=(*p)->next; if (q= =(*head)) /*如果被删的结点是head所指向的结点则要修改head值*/ *head=q->next; free(q); /*----以下为所填语句------*/ /*使p指针指向下一轮开始报数的结点位置*/ (*p)->next=(*p)->next->next; *p=(*p)->next; } void main() { int m,n; clink

50、head=NULL,*p; printf("please enter int m&n(m>n&&n>1):"); scanf("%d%d",&m,&n); creat(&head,m); p=head; /*指针p用于指示当前开始报数的位置*/ while(head->next!=head) /*循环到链表中只有一个结点为止*/ number(&head,&p,n); printf("Monkey king is %d\n",head->no); } (2)编程,建立一个链表,并删除某个结点。链表中的每个结点包括:学号,姓名,性别,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服