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

上传人:沈*** 文档编号:89089554 上传时间:2022-05-12 格式:DOC 页数:40 大小:114KB
收藏 版权申诉 举报 下载
C语言程序设计实验与习题答案_第1页
第1页 / 共40页
C语言程序设计实验与习题答案_第2页
第2页 / 共40页
C语言程序设计实验与习题答案_第3页
第3页 / 共40页
资源描述:

《C语言程序设计实验与习题答案》由会员分享,可在线阅读,更多相关《C语言程序设计实验与习题答案(40页珍藏版)》请在装配图网上搜索。

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 c*;char front=;while ( (c*=getchar()!=n)if (c*!=)putchar(c*);if (c*= =)if (front!=)pu

2、tchar(c*);front=c*;3程序改错(1)以下程序的功能是求1+3+5+99的和。#include void main( ) int s,i; * /int s=0,i;i=1;while(i=99)s=s+i;* /s=s+i;i+;printf(1+3+5+99的和是:%dn,s);(2)下面程序的功能是输入一个正整数,判断是否是素数,假设为素数输出1,否则输出0。#include void main() int i,*,y=0; * /y=1scanf(%d,&*);for(i=2;i=*/2&y;i+)if (*%i)!=0) y=0; * /*%i=0printf(%dn

3、,y);4设计性实验(1)题/* 方法(1)精度控制 */#include #include main() int s; float n,t,pi; t=1; pi=0; n=1.0; s=1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%n,pi);/* 方法(2)次数控制*/#include #include main() int s; long times; float n,t,pi; t=1; pi=0; n=1.0; s=1; for(times=1;times=1e9;times+) pi

4、=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%n,pi);2题main() int i,j,frame; double wheattal=0; double wheatfnu=1; printf(Please input frames numbers:); scanf(%d,&frame); for(i=0;iframe;i+) wheattal+=wheatfnu; wheatfnu+=wheatfnu; printf(n Total wheattatols timeter=%en,wheattal/1.40e8);3题/*方法一:使用递推公式

5、n=n+2*/main() int i,n=1; double s=0,t=1; for(i=1;i=20;i+) t*=n; s+=t; n+=2; printf(s=%lf,s); getch();/*方法二:使用通项公式2*i+1*/main() int i; double s=0,t=1; for(i=1;i=20;i+) t*=2*i+1; s+=t; printf(s=%lf,s); getch();/*方法三*/#include stdio.hmain()long total,sum,m,n,t;total=0; for(m=1;m=20;m+) sum=1;t=1; for(n

6、=1;n=m;n+) sum=sum*t; t=t+2; total=total+sum; printf(total=%ld,total);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 c*;char front=;w

7、hile ( (c*=getchar()!=n)if (c*!=)putchar(c*);if (c*= =)if (front!=)putchar(c*);front=c*;3程序改错(1)以下程序的功能是求1+3+5+99的和。#include void main( ) int s,i; * /int s=0,i;i=1;while(i=99)s=s+i;* /s=s+i;i+;printf(1+3+5+99的和是:%dn,s);(2)下面程序的功能是输入一个正整数,判断是否是素数,假设为素数输出1,否则输出0。#include void main() int i,*,y=0; * /y=

8、1scanf(%d,&*);for(i=2;i=*/2&y;i+)if (*%i)!=0) y=0; * /*%i=0printf(%dn,y);4设计性实验(1)题/* 方法(1)精度控制 */#include #include main() int s; float n,t,pi; t=1; pi=0; n=1.0; s=1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%n,pi);/* 方法(2)次数控制*/#include #include main() int s; long times;

9、float n,t,pi; t=1; pi=0; n=1.0; s=1; for(times=1;times=1e9;times+) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%n,pi);2题main() int i,j,frame; double wheattal=0; double wheatfnu=1; printf(Please input frames numbers:); scanf(%d,&frame); for(i=0;iframe;i+) wheattal+=wheatfnu; wheatfnu+=wheatfnu; p

10、rintf(n Total wheattatols timeter=%en,wheattal/1.40e8);3题/*方法一:使用递推公式n=n+2*/main() int i,n=1; double s=0,t=1; for(i=1;i=20;i+) t*=n; s+=t; n+=2; printf(s=%lf,s); getch();/*方法二:使用通项公式2*i+1*/main() int i; double s=0,t=1; for(i=1;i=20;i+) t*=2*i+1; s+=t; printf(s=%lf,s); getch();/*方法三*/#include stdio.h

11、main()long total,sum,m,n,t;total=0; for(m=1;m=20;m+) sum=1;t=1; for(n=1;n=m;n+) sum=sum*t; t=t+2; total=total+sum; printf(total=%ld,total);2程序填空(1)求任意两个整数之间所有的素数。#include void main()int i1,i2,i,j,flag;printf(input two integer(i1,i2):);scanf(%d%d, &i1 , &i2 );printf(prime number:n);for(i= i1 ;i= i2 ;

12、i+)flag=1;for(j=2;j=i-1;j+)if(i%j=0)flag= 0 ;break;if(flag=1)printf(%dt,i);printf(n);(2)以下程序的功能是输出下三角九九乘法表。#include void main() int i,j;for(i=1;i= 9;i+) for(j=1;j= i;j+)printf(%d*%d=%dt,i,j, i*j);printf(n);3程序改错(1)以下程序的功能是输出所有的水仙花数。所谓水仙花数是指一个三位数,该数的各位数字立方和等于该数本身的数。例如:153是一个水仙花数,因为153=13+53+33。#inclu

13、de void main( ) int *,s,a;for(s=0,*=100;*1000;s=0,*+)* a=*;while(a!=0) s=s+(a%10)*(a%10)*(a%10);*a=a/10;if(*=s) printf(%d ,*);*(2)以下程序的功能是输出1至1000之间的所有完数。假设一个整数等于该数的所有因子之和,则称该整数为完数。#include void main() int i,j;int s;for(i=1;i=999; i+)s=1;*/s=0;for(j=1;ji-1;j+)* /for(j=1;j=i-1;j+)if(i/j=0 ) s=s+j;* /

14、i%jif(s=i)printf(%5d,i);* /s=i4设计性实验main()int i,j,k,n=0; /*i,j,k分别代表三位整数的百位,十位,个位.n代表个数*/ 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#includemain()int i,j,k;for(i=1;i=4;i+) /*

15、上三角形有4行,每循环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 *0=(*1+*2)/2; f*0=*0*(2*0-4)*0+3)-6; if(f*0*f*1)1e-5); /*该循环实现二分法求根 */printf(root *=%f,*0);2)程序填空1#include void main() int m,n,num1,num2,temp; printf(I

16、nput two positive 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)

17、和。#includevoid main()int 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 * /#includevoid main() int i,m,k,n;*/int i,m,k,n=0;for(m=1;m=100;m=m+2)if(n/10=0) */if(n%10=0)printf(n);k=1;for(

18、i=2;i=sqrt(m);i+) if(m%i!=0)*/if(m%i=0) k=0;break;if(k=1)printf(%3d ,m);n=n+1;printf(n);(2)下面程序是求表达式1-1/2+1/3-1/4+1/5-1/100的值,结果保存小数后4位。#includevoid main()int i;float s;i=0;* /i=1;s=1;* /s=0;while(i100) if(i%2=0)s=s-1/i;* /s=s-1.0/i;elses=s+1/i;*i=i+1; printf(1-1/2+1/3-1/4+-1/100=%n,s);4设计性实验(1)编程输出

19、以以下图形。#include void main() int i,j,k; for(i=1;i=6;i+) for(k=1;k=20-(2*i-1)/2;k+) printf( ); for(j=1;j=2*i-1;j+) printf(%d,i); printf(n); (2)编写一个程序输出所有5位数字的回文。方法一:#include void main() long *,a,t; /*:原5位整数,a:用来暂存*,t:把a反序后的数 int i,num=0; /i:表示原5位数的*一位,num:回文数的个数 for(*=10000;*0) i=a%10; /取出当前数的最后一位到i t=

20、t*10+i; /把取出的i组装到t a=a/10; if(*=t) /原来的5位整数等于反序后的数t printf(%ld,*); num+; if(num%10=0) printf(n); /每行输出10个数 方法二:/*求5位整数中所有回文*/#include void main() long int n,m,t=0; for(n=10000;n=99999;n+) if(hw(n)=1) printf(%6ld,n); t+; if(t%5=0) printf(n); /*每行输出5个数*/ int hw(long int a) /*hw函数测试a是否是回文*/ long int m,

21、r=0; m=a; while(m) r=r*10+m%10; m/=10; if(a=r) return 1; /*是回文返回1 */ else return 0; /*是回文返回0 */ (3)编程计算e=1+1/1!+1/2!+1/3!+ +1/n!。精度为1e-6即最后一项1/n!1e-6就停顿循环。提示:注意1/n!=1/n-1!*1/n;利用循环加上每一次的分项。#include void main() long i;double e,t;t=1.0;for(i=1;t1e-6;i+)t/=(double)i;e+=t; printf(e=%fn,e);2.a10=*;break;

22、ak=*;附:算法简析main()int *,i,j,k;/*感觉似乎j定义了没什么作用*/int a11=8,18,28,38,48,58,68,78,88,98;printf(请输入需要插入的一个整数:);scanf(%d,&*);a10=*;/*把*放到数据串最末位置*/for(i=0;i10;i+)if(*k;i-)/*将插入点以及其后的每个数据后移一个单位给*腾位*/*实例演示腾位8 18 28 38 48 58 68 78 88 98 *8 18 28 38 38 48 58 68 78 88 98插入点*/ai=ai-1; ak=*;/*将*放到插入点位置*/for (i=0;i

23、11;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;改为i=k+1;d.将for(i=0;i10;i+)改为for(i=0;i9;i+);附:算法简析#include void main()int *, i,j,k;int a10= 8,18,28,38,48,58,68,78,88,98;printf(请输入需要删除的一个整数:);scanf(%d,&*);i=0;j=9;while(i*)j=k-1;if(akj) printf(需要删除的数不在数

24、组中n);else for( ;k9;k+)ak=ak+1;/*挤位,后面的数据向删除点靠拢*/*实例演示挤位假设删除38删除点8,18,28,38,48,58,68,78,88,988,18,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 *)int k=sqrt(*);f

25、or(;k1;k-)if(*%k=0) return 0;return *;void sort(int a,int *)int i,k,t;for(i=0;i*-1;i+)for(k=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

26、 : n);for(i=0;in;i+)printf(%-5d,primei);#include#includemain()char input10,paswor10=password,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

27、=0)printf(密码输入三次错误,你不是我的主人!nn离我远点!nn否则,我很生气,后果很严重!);getch();main()int num10,i,ma*,min,ma*j,minj;printf(Please input the data:n);scanf(%d,&num0);ma*=min=num0;for(i=1;i10;i+) scanf(%d,&numi);if(ma*numi)min=numi;minj=i;printf(The ma*imum elements underside is %d,ma*=%d,ma*j,numma*j);printf(nThe minimum

28、 elements underside is %d,min=%d,minj,numminj);#include#includevoid input(int a,int *n)int i;printf(How 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 me

29、nu(int a,int n)int i;goto*y(1,24);printf(Datas: );for(i=0;i);void find(int a,int n)int *;int low=0,high=n-1,mid;printf(nPLease input a data to be searched: );scanf(%d,&*);while(lowamid) low=mid+1;else high=mid-1;if(lowhigh) printf(nThis data cant be found in the database!);elseprintf(nThis data is i

30、n the position %d,mid);goto*y(7+3*(mid+1)-2,23);putchar(25);void insert(int a,int n)int *,k,i;printf(nPLease input a data to be inserted:);scanf(%d,&*);an=*;for(i=0;in;i+)if(*k;i-)ai=ai-1; ak=*;goto*y(1,24);delline();printf(Datas: );for(i=0;i=n;i+)printf(%-3d,ai);void Delete(int a,int n)int *,low,hi

31、gh,mid,i;printf(nPLease input a data to be deleted:);scanf(%d,&*);low=0;high=n-1;while(low*)high=mid-1;if(amidhigh) printf(The data to be deleted is not in the database!n);elsefor( ;midn-1;mid+)amid=amid+1;goto*y(1,24);delline();printf(Datas: );for(i=0;i=n-2;i+)printf(%-3d,ai); main()int a50,n=0;cha

32、r ;input(a,&n);sort(a,n);clrscr();menu(a,n);=getch();switch()case 1:find(a,n);break;case 2:insert(a,n);break;case 3:Delete(a,n);break;default: break;getch();/*DT made it in 2009/05/16*/程序填空:1#include #define N 4void main() int aNN,s1=0,s2=1,ma*,i,j; for(i=0; iN; i+) for(j=0; jN; j+) scanf(%d, &aij )

33、; ma*= a00 ; for(i=0;iN;i+) for(j=0; jma* )ma*=aij; printf(s1=%d,s2=%d,ma*=%dn,s1,s2,ma*);2#include#define M 4#define N 3void main( )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#defi

34、ne N 4void 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+) 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#includevoid main()int d4 =0,0,0,0,i,j; printf(nPlease input

35、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(j=0;j=i) printf(t%d,dij);/*为了使位数不同的数输出依然保持三角型*/else printf(t);设计性实验:1#include#define M 3#define N 6void main()int i,j,ma*,min,m=0,n=0,p=0,q=0;int

36、 aMN;for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,&aij); ma*=min=a00; for(i=0;iM;i+) for(j=0;jma*) ma*=aij; m=i;n=j; else if(aijmin) min=aij; p=i; q=j; printf(ma*(%d,%d)=%d,min(%d,%d)=%d,m,n,ma*,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;

37、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);printf(n); 2程序填空(1)以下程序的功能是求数组a中元素的和。#include void 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)以下程序功能是在数组中查找与*值一

38、样的元素所在的位置。#includevoid main( ) int i,*,a11;printf(please input ten number:);for(i=1;i11;i+)scanf(%d,a+i);printf(please input *: );scanf(%d,&*);a0=;/*i=10;while(* != *(a+i) );/ i-if()/*=*(a+i)printf(found position is :%d,i);elseprintf(not found!);3程序改错(1)以下程序的功能是求一元二次方程的实数根。#include #include double *

39、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);result1=(-factor1-delta)/(2*factor0);return result;void main() double fun3,r; */ double fun3,*r;printf(Please enter three fa

40、ctors:);scanf(%f%f%f,&fun0,&fun1,&fun2); */%lf%lf%lfr=quadratic(fun3); */ r=quadratic(fun);if(r) printf(The solution is: *1=%lft*2=%lfn,r0,r1);elseprintf(No solution!n);(2)以下程序的功能是统计数组a中所有偶数的个数。#includestdio.hvoid main( )int a10,*p,sum=0;printf(请输入10个整数:);for(p=a;p=a;p-)*/ for(p- ;p=a;p-)if(p%2= =0)

41、 sum+;*/ if(*p%2=0) sum+;printf(共有%d个偶数,sum);2程序填空(1)以下程序的功能是利用指针找出3个整数中的最小数。#includevoid main( ) int *p1,*p2,*p3,min,*,y,z;p1=&*;p2=&y;p3=&z;printf(please input three integer:);scanf(%d%d%d,p1,p2,p3);/min=*p1if(*p1*p2);/min=*p2if(min*p3);/min=*p3printf(min=%dn,min);(2)以下程序利用指向函数的指针实现函数调用,完成可选择的加减乘除

42、运算。#include/*定义函数add*/int add(int *,int y) printf(%d+%d=,*,y);return *+y;/*定义函数sub*/ int sub(int *,int y) printf(%d-%d=,*,y);return *-y;/*定义函数mult*/int mult(int *,int y) printf(%d*%d=,*,y);return *y;/*定义函数dev*/int dev(int *,int y) printf(%d/%d=,*,y);return */y;void main()int (*funp)(int,int);char op

43、;int *,y;printf(Please intput the e*pression a +(-*/)b:n);scanf(%d,&*);scanf(%c,&op);scanf(%d,&y);(op)/switchcase +:funp=;break;/addcase -:funp=sub;break;case *:funp=mult;break;case /:funp=dev;break;default:printf(Operator is illegal;n);printf(%dn,(*,y);/funp3程序改错(1)以下程序的功能是:输入3个整数,按由小到大的顺序输出。#include void main() int i1,i2

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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