C语言程序设计实验与习题答案.pdf

上传人:索**** 文档编号:83235426 上传时间:2023-03-28 格式:PDF 页数:24 大小:53KB
返回 下载 相关 举报
C语言程序设计实验与习题答案.pdf_第1页
第1页 / 共24页
C语言程序设计实验与习题答案.pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《C语言程序设计实验与习题答案.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计实验与习题答案.pdf(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1 2程序填空(1)以下程序的功能是计算150之间能被7整除的整数之和。#includevoid main()int i,sum=0;for(i=1;50;i+)if(i%7=0)sum+=i;printf(sum=%dn,sum);(2)下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。#include void main()char cx;char front=;while(cx=getchar()!=n)if(cx!=)putchar(cx);if(cx=)if(front!=)putchar(cx);fro

2、nt=cx;3程序改错(1)下列程序的功能是求1+3+5+99的和。#include 2 void main()int s,i;10.6f10.6f10.6f10.6f代表个数*/for(i=1;i=9;i+)for(j=0;j=9;j+)for(k=0;k=9;k+)if(i*i*i+j*j*j+k*k*k=1099)/*在所有组合中找出满足指定条件的*/printf(%4d,100*i+10*j+k);n+;if(n%5=0)printf(n);/*表示每行输出 5 个数*/#include#include main()int i,j,k;for(i=1;i=4;i+)/*上三角形有 4

3、行,每循环 1 次输出 1 行*/for(k=1;k=8)*/printf();for(j=1;j=1;i-)/*下面为倒三角形,有 3 行*/for(k=1;k8-(2*i-1)/2);k+)printf();for(j=1;j=0&n0);/*该循环指定有根的区间*/do x0=(x1+x2)/2;fx0=x0*(2*x0-4)*x0+3)-6;if(fx0*fx1)1e-5);/*该循环实现二分法求根 */printf(root x=%f,x0);2)程序填空(1)#include void main()int m,n,num1,num2,temp;printf(Input two po

4、sitive integer:n);scanf(%d,%d,&num1,_&num2_);if(num1num2)temp=num1;num1=num2;num2=_temp_;m=num1;n=num2;while(n!=0)temp=_m%n_;m=n;n=temp;printf(The grestest common divisor is%dn,m);printf(The lowest common multiple is%dn,num1*num2/_m_);(2)下面程序是计算表达式1+(1+2)+(1+2+3)+(1+2+3+10)和。#includevoid main()5 int

5、 sum,i,j,t;sum=;for(i=1;i=10;i+)t=0;for(j=1;j=;j+)t=t+j;sum=;printf(1+(1+2)+(1+2+3)+(1+2+3+10)=%dn,sum);0 i sum+t3程序改错(1)下面的程序是求1100之间的素数,并将所有素数按每行10个输出。#include#define 10.3f a10=x;break;ak=x;附:算法简析main()int x,i,j,k;/*感觉似乎 j 定义了没什么作用*/int a11=8,18,28,38,48,58,68,78,88,98;printf(请输入需要插入的一个整数:);scanf(

6、%d,&x);a10=x;/*把 x 放到数据串最末位置*/6 for(i=0;i10;i+)if(xk;i-)/*将插入点以及其后的每个数据后移一个单位(给x 腾位)*/*实例演示腾位8 18 28 38 48 58 68 78 88 98(x)8 18 28 38 38 48 58 68 78 88 98插入点*/ai=ai-1;ak=x;/*将 x 放到插入点位置*/for(i=0;i11;i+)printf(%3d,ai);printf(n);i%7=0|i%11=0n+i%5=03.a.将 continue;改为 break;b.将 i=k-1;改为 j=k-1;c.将 j=k+1;

7、改为 i=k+1;d.将 for(i=0;i10;i+)改为 for(i=0;i9;i+);附:算法简析#include void main()7 int x,i,j,k;int a10=8,18,28,38,48,58,68,78,88,98;printf(请输入需要删除的一个整数:);scanf(%d,&x);i=0;j=9;while(ix)j=k-1;if(akj)printf(需要删除的数不在数组中n);else for(;k9;k+)ak=ak+1;/*挤位,后面的数据向删除点靠拢*/*实例演示挤位(若删除38)删除点8,18,28,38,48,58,68,78,88,988,18

8、,28,48,58,68,78,88,98,98*/for(i=0;i9;i+)/*删除一个数,只剩 9 个,数组最末尾储存的是重复的数据(倒数第二个),故不输出*/printf(%5d,ai);a.将 for(i=0,j=0;i=10;i+)改为for(i=1,j=0;i=0;j+)改为 for(;j=0;j-)4.#include#includeint isprime(int x)int k=sqrt(x);for(;k1;k-)if(x%k=0)return 0;return x;void sort(int a,int x)int i,k,t;for(i=0;ix-1;i+)for(k=

9、i+1;kak)t=ai;ai=ak;ak=t;void main()int num50,prime50,i,n=0,j;printf(PLease input 50 integers:n);for(i=0;i50;i+)scanf(%d,&numi);if(j=isprime(numi)!=0)primen+=j;sort(prime,n);printf(The sorted prime numbers are:n);for(i=0;in;i+)printf(%-5d,primei);#include#includemain()9 char input10,paswor10=password

10、,ch,flag=0;int count=1,i=0;while(count=3)printf(请输入密码:);while(ch=getch()!=13)inputi+=ch;putchar(*);inputi=0;if(strcmp(input,paswor)=0)printf(nn你好!我的主人!);flag=1;break;elseprintf(nn离我远点!);count+;getch();if(flag=0)printf(密码输入三次错误,你不是我的主人!nn 离我远点!nn否则,我很生气,后果很严重!);getch();main()int num10,i,max,min,maxj,

11、minj;printf(Please input the data:n);scanf(%d,&num0);max=min=num0;for(i=1;i10;i+)scanf(%d,&numi);if(maxnumi)min=numi;minj=i;printf(The maximum elements underside is%d,max=%d,maxj,nummaxj);nThe minimum element s underside is%d,min=%d,minj,numminj);#include#includevoid input(int a,int*n)int i;printf(H

12、ow many datas do you want to input);scanf(%d,n);printf(nPlease input%d datas:n,*n);for(i=0;i*n;i+)scanf(%d,&ai);void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jaj)t=ai;ai=aj;aj=t;void menu(int a,int n)int i;gotoxy(1,24);printf(Datas:);for(i=0;i);void find(int a,int n)int x;int low=0,high=

13、n-1,mid;printf(nPLease input a data to be searched:);scanf(%d,&x);while(lowamid)low=mid+1;else high=mid-1;nThis data cant be found in the database!);elseprintf(nThis data is in the position%d,mid);gotoxy(7+3*(mid+1)-2,23);putchar(25);void insert(int a,int n)int x,k,i;printf(nPLease input a data to b

14、e inserted:);scanf(%d,&x);an=x;for(i=0;in;i+)if(xk;i-)ai=ai-1;ak=x;gotoxy(1,24);12 delline();printf(Datas:);for(i=0;i=n;i+)printf(%-3d,ai);void Delete(int a,int n)int x,low,high,mid,i;printf(nPLease input a data to be deleted:);scanf(%d,&x);low=0;high=n-1;while(lowx)high=mid-1;if(amidhigh)printf(The

15、 data to be deleted is not in the database!n);elsefor(;midn-1;mid+)amid=amid+1;gotoxy(1,24);delline();printf(Datas:);for(i=0;i=n-2;i+)printf(%-3d,ai);main()int a50,n=0;char com;input(a,&n);sort(a,n);clrscr();menu(a,n);com=getch();switch(com)case 1:find(a,n);break;case 2:insert(a,n);break;13 case 3:D

16、elete(a,n);break;default:break;getch();/*DT made it in 2009/05/16*/程序填空:(1)#include#define N 4 void main()int aNN,s1=0,s2=1,max,i,j;for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);max=a00;for(i=0;iN;i+)for(j=0;j max )max=aij;printf(s1=%d,s2=%d,max=%dn,s1,s2,max);(2)#include#define M 4#define N 3 void mai

17、n()int aMN=1,2,3,4,5,6,7,8,9,10,11,12;int sum=0,i,j;for(i=0;iN;i+)sum+=a0i+aM-1i;for(j=1;jM-1;j+)sum+=aj0+ajN-1 ;printf(%dn,sum);改错:(1)#in#include#define M 3#define N 4 14 void main()int aMN=1,2,3,4,5,6,7,8,9,10,11,12;int bNM;int i,j;for(i=0;iM;i+)for(j=0;jN;j+)printf(%3d,aij);printf(n);for(i=0;iN;i

18、+)for(j=0;jM;j+)bij=aji;printf(n);for(i=0;iN;i+)for(j=0;jM;j+)printf(%3d,bij);printf(n);(2)#include void main()int d4=0,0,0,0,i,j;printf(nPlease input 16 num:);for(i=0;i4;i+)for(j=0;j4;j+)scanf(%d,&dij);for(i=0;i4;i+)for(j=0;j4;j+)if(dijdji)dij=dji;for(i=0;i4;i+)printf(nnnnn);/*为了保持每行的间隔与每列的相同*/for(

19、j=0;j=i)printf(t%d,dij);/*为了使位数不同的数输出依然保持三角型*/else printf(t);设计性实验:(1)#include#define M 3#define N 6 void main()15 int i,j,max,min,m=0,n=0,p=0,q=0;int aMN;for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);max=min=a00;for(i=0;iM;i+)for(j=0;jmax)max=aij;m=i;n=j;else if(aijmin)min=aij;p=i;q=j;printf(max(%d,%d

20、)=%d,min(%d,%d)=%d,m,n,max,p,q,min);(3)#include#define N 20 void main()int n,i,j;int aNN;printf(please input the n:);scanf(%d,&n);for(i=0;in;i+)ai0=1;aii=1;for(i=2;in;i+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;for(i=0;in;i+)for(j=0;j=i;j+)printf(%-4d,aij);16 printf(n);2程序填空(1)以下程序的功能是求数组a中元素的和。#include void

21、 main()int a10;int*p,sum=0;for(p=a;pa+10;p+)scanf(%d,);/pfor(p=a;pa+10;p+)sum=sum+;/*pprintf(sum=n,sum);/%d(2)以下程序功能是在数组中查找与x值相同的元素所在的位置。#includevoid main()int i,x,a11;printf(“please input ten number:”);for(i=1;i11;i+)scanf(%d,a+i);printf(please input x:);scanf(%d,&x);a0=;/x17 i=10;while(x!=*(a+i);/

22、i-if()/x=*(a+i)printf(found position is:%d,i);elseprintf(not found!);3程序改错(1)以下程序的功能是求一元二次方程的实数根。#include#include double*quadratic(double*factor)static double result2;double delta;delta=factor1*factor1-4*factor0*factor2;if(delta0)return 0;delta=sqrt(delta);result0=(-factor1+delta)/(2*factor0);result

23、1=(-factor1-delta)/(2*factor0);return result;void main()double fun3,r;/double fun3,*r;printf(Please enter three factors:);scanf(%f%f%f,&fun0,&fun1,&fun2);/%lf%lf%lfr=quadratic(fun3);/r=quadratic(fun);if(r)18 printf(The solution is:X1=%lftX2=%lfn,r0,r1);elseprintf(No solution!n);(2)以下程序的功能是统计数组a中所有偶数

24、的个数。#includevoid main()int a10,*p,sum=0;printf(请输入10个整数:);for(p=a;p=a;p-)/for(p-;p=a;p-)if(p%2=0)sum+;/if(*p%2=0)sum+;printf(共有%d个偶数,sum);19 2程序填空(1)以下程序的功能是利用指针找出3个整数中的最小数。#includevoid main()int*p1,*p2,*p3,min,x,y,z;p1=&x;p2=&y;p3=&z;printf(please input three integer:);scanf(%d%d%d,p1,p2,p3);/min=*

25、p1if(*p1*p2);/min=*p2if(min*p3);/min=*p3printf(min=%dn,min);(2)以下程序利用指向函数的指针实现函数调用,完成可选择的加减乘除运算。#include/*定义函数add*/int add(int x,int y)printf(%d+%d=,x,y);return x+y;20/*定义函数sub*/int sub(int x,int y)printf(%d-%d=,x,y);return x-y;/*定义函数mult*/int mult(int x,int y)printf(%d*%d=,x,y);return x*y;/*定义函数dev

26、*/int dev(int x,int y)printf(%d/%d=,x,y);return x/y;void main()int(*funp)(int,int);char op;int x,y;printf(Please intput the expression a+(-*/)b:n);scanf(%d,&x);scanf(%c,&op);scanf(%d,&y);(op)/switchcase+:funp=;break;/addcase-:funp=sub;break;case*:funp=mult;break;case/:funp=dev;break;default:printf(O

27、perator is illegal;n);printf(%dn,(x,y);/funp3程序改错21(1)以下程序的功能是:输入3个整数,按由小到大的顺序输出。#include void main()int i1,i2,i3;int*p1,*p2,*p3;void swap(int,int);/void swap(int*,int*)printf(Please enter three integer:n);scanf(%d%d%d,i1,i2,i3);/scanf(%d%d%d,&i1,&i2,&i3);p1=i1;p2=i2;p3=i3;/p1=&i1;p2=&i2;p3=&i3;if(i

28、1i2)swap(p1,p2);if(i1i3)swap(p1,p3);if(i2i3)swap(p2,p3);printf(pai xu hou de shu:%d,%d,%dn,i1,i2,i3);void swap(int*p,int*q)int t;t=*p;*p=*q;*q=t;(2)下列程序的功能是利用自定义函数计算一无符号整数各位数字的乘积。#include unsigned*f(unsigned num)unsigned s=1,*p;p=s;/p=&s;dos=s*(num%10);22 num/=10;while(num);return p;void main()unsig

29、ned x,p;printf(input x=:n);scanf(%d,&x);p=f(x);printf(%d,p);/printf(%d,*p);4设计性实验(1)编程一函数,其功能是求一个长正整数各位数字之和。要求使用指针函数实现结果的返回。在主函数中进行测试。例如在主函数中输入 348762,输出结果应为为30即348762的和。/方法一:利用指向函数的指针intsum(long n)/利用递归求和 unsigned longx;if(n10)x=n;elsex=sum(n/10)+n%10;return(x);void main()long x;int(*f)(long);/f=su

30、m;scanf(%ld,&x);printf(%d,f(x);23/方法二:利用指针函数仿照第3)题改错(2)#include unsigned*f(long num)unsigned s=0,*p;p=&s;dos=s+(num%10);num/=10;while(num);return p;void main()unsigned*p;long x;printf(input x=:n);scanf(%ld,&x);p=f(x);printf(%d,*p);(2)编程一函数求两个整数的最大公约数,要求使用指针函数实现结果的返回。在主函数中调用此函数进行测试。两个整数由键盘输入。/方法一:利用指

31、向函数的指针int mcf(int a,int b)int temp;while(b)temp=a%b;a=b;b=temp;return a;24 void main()int x,y;int(*f)(int,int);f=mcf;scanf(%d%d,&x,&y);printf(%d,f(x,y);/方法二:利用指针函数仿照第3)题改错(2)int*mcf(int a,int b)int temp;while(b)temp=a%b;a=b;b=temp;return&a;void main()int x,y,*p;scanf(%d%d,&x,&y);p=mcf(x,y);printf(%d,*p);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com