C语言程序设计实验与习题答案_第1页
C语言程序设计实验与习题答案_第2页
C语言程序设计实验与习题答案_第3页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 (cx=getchar()!= n )if (cx!= )putchar(cx);if (cx= = )if (front!= )putchar(cx);front=cx;3程序改错(1) 以下程序的功能是求1+3+5+,99 的和。专业资料整理WORD格式#include <stdio.h>专业资料整理WORD格式void main( ) ints, i;/int s=0,i;i=1;专业资料整理WORD格式while(i<=99)s=s+i;/s=s+i;i+;专业资料整理WORD格式printf("1+3+5+,99的和是:%dn",s);专业资料

3、整理WORD格式(2) 下面程序的功能是输入一个正整数,判断是否是素数,假设为素数输出 1,否那么输出 0。#include <stdio.h>void main() int i,x,y=0; /y=1scanf("%d",&x);for(i=2;i<=x/2&&y;i+)if(x%i)!=0) y=0; /x%i=0printf("%dn",y);4设计性实验(1)题/* 方法 (1) 精度控制*/#include <stdio.h>#include <math.h>main() int

4、 s;专业资料整理WORD格式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=%10.6fn",pi);/* 方法 (2) 次数控制 */#include <stdio.h>#include <math.h>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=pi

5、+t; n=n+2; s=-s; t=s/n;pi=pi*4;printf("pi=%10.6fn",pi); 2题main()int i,j,frame;double wheattal=0;double wheatfnu=1;printf("Please input frame s numbers:");scanf("%d",&frame);for(i=0;i<frame;i+)wheattal+=wheatfnu;wheatfnu+=wheatfnu;专业资料整理WORD格式n Total wheattatol s

6、timeter=%en",wheattal/1.40e8); 3题/*方法一 :使用递推公式 n=n+2*/main()inti,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()inti;double s=0,t=1;for(i=1;i<=20;i+)t*=2*i+1;s+=t;printf("s=%lf",s);getch();专业资料整理WORD格式/*方法三 */#in

7、clude "stdio.h"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) 以下程序的功能是计算 150之间能被 7 整除的整数之和。#include<stdio.h>void main()int i,sum=0;for(i=1;50;i+)if(i%7=0) sum+=i;printf

8、("sum=%dn",sum);(2) 下面程序接收来自键盘的输入,直到输入 <Ctrl>+Z( 值为 -1) 键为止。这些字符被原样输出,但假设有连续一个以上的空格时只输出一个空格。请填空。专业资料整理WORD格式#include <stdio.h>void main()char cx;char front= ;while (cx=getchar()!= n )if (cx!= )putchar(cx);if (cx= = )if (front!= )putchar(cx);front=cx;3程序改错(1) 以下程序的功能是求 1+3+5+, 9

9、9的和。#include <stdio.h>void main( ) ints, 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 <stdio.h>void main()专业资料整理WORD格式 int i,x,y=0; /y=1专业资料整理WORD格式scanf("%d",&x);for(i=2;i&l

10、t;=x/2&&y;i+)if(x%i)!=0) y=0; /x%i=0printf("%dn",y);4设计性实验(1)题/* 方法 (1) 精度控制*/#include <stdio.h>#include <math.h>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=%10.6fn",pi);/* 方法 (2) 次数控制 */#

11、include <stdio.h>#include <math.h>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=pi+t; n=n+2;专业资料整理WORD格式s=-s;t=s/n;pi=pi*4;printf("pi=%10.6fn",pi); 2题main()int i,j,frame;double wheattal=0;double wheatfnu=1;printf("Please input

12、 frame s numbers:");scanf("%d",&frame);for(i=0;i<frame;i+)wheattal+=wheatfnu;wheatfnu+=wheatfnu;n Total wheattatols timeter=%en",wheattal/1.40e8); 3题/*方法一 :使用递推公式 n=n+2*/main()inti,n=1;double s=0,t=1;for(i=1;i<=20;i+)t*=n;s+=t;n+=2;printf("s=%lf",s);专业资料整理WORD

13、格式getch();/*方法二 :使用通项公式 2*i+1*/main()inti;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"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=

14、%ld",total);专业资料整理WORD格式2程序填空(1)求任意两个整数之间所有的素数。#include <stdio.h>void main()int i1,i2,i,j,flag;printf("input two integer(i1,i2):");专业资料整理WORD格式scanf("%d%d",&i1,&i2);专业资料整理WORD格式printf("prime number:n");专业资料整理WORD格式for(i=i1;i<=i2;i+)专业资料整理WORD格式flag

15、=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 <stdio.h>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");专业资料整理WORD格式3程序改错(1) 以下程序的功能是输出

16、所有的“水仙花数。所谓“水仙花数是指一个三位数,该数的各位数字立方和等于该数本身的数。例如:153 是一个“水仙333花数,因为 153=1 +5 +3 。#include <stdio.h>void main( ) int x,s,a;for(s=0,x=100;x<1000;s=0, x+) a=x; while(a!=0) s=s+( a%10)*(a%10)*(a%10) ; a=a/10;if(x=s) printf("%d " ,x);(2)以下程序的功能是输出1 至 1000 之间的所有完数。假设一个整数等于该数的所有因子之和,那么称该整数为

17、完数。#include <stdio.h>void main() int i,j; int s; for(i=1;i<=999; i+)s=1; /s=0;for(j=1;j<i-1;j+) /for(j=1;j<=i-1;j+)专业资料整理WORD格式if(i/j=0 ) s=s+j;/i%j专业资料整理WORD格式if(s=i )printf("%5d",i);/s=i专业资料整理WORD格式专业资料整理WORD格式4设计性实验SY61.Cmain() int i,j,k,n=0;/*i,j,k 分别代表三位整数的百位 ,十位 ,个位 .n

18、 代表个数 */ 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)/*在所有组合中找出满足指定条件的*/专业资料整理WORD格式printf("%4d",100*i+10*j+k);n+;if(n%5=0)printf("n");/*表示每行输出5 个数*/专业资料整理WORD格式SY62.C#include<stdio.h>#include<string.h>main()int i,j,k;专业资料整理WORD格

19、式for(i=1;i<=4;i+)/*上三角形有4 行,每循环1 次输出1 行*/专业资料整理WORD格式专业资料整理WORD格式for(k=1;k<8-(2*i-1)/2);k+)/*该循环输出每行的空格.8 用于调节偏离位专业资料整理WORD格式置,可换成别的数>=8 */专业资料整理WORD格式printf(" ");专业资料整理WORD格式for(j=1;j<=2*i-1;j+)/*该循环输出每行的字*符 */专业资料整理WORD格式printf("*");专业资料整理WORD格式putchar(n );/*换行 */专业

20、资料整理WORD格式for(i=3;i>=1;i-)/*下面为倒三角形 ,有 3 行*/for(k=1;k<8-(2*i-1)/2);k+)printf(" ");for(j=1;j<=2*i-1;j+)printf("*");putchar(n );专业资料整理WORD格式sy63.cmain( ) int n=1,score,t; scanf("%d",&score); while (score>=0&&n<=5) n+;t=0;while(score!=0)t=t+(scor

21、e%10)*(score%10);score=score/10;if(t=108)printf("%d",score);scanf("%d",&score);SY64.C#include "math.h"main()float x0,x1,x2,fx0,fx1,fx2; /*x1,x2 分别表示每次区间的左右端点 ,x0 代表区间的中间点 ,fx0,fx1,fx2 代表相应点的函数值 */doprintf("please input x1&x2:");scanf("%f,%f",

22、&x1,&x2);fx1=x1*(2*x1-4)*x1+3)-6;fx2=x2*(2*x2-4)*x2+3)-6;while(fx1*fx2>0); /*该循环指定有根的区间 */ dox0=(x1+x2)/2;专业资料整理WORD格式fx0=x0*(2*x0-4)*x0+3)-6;if(fx0*fx1)<0)/*丢掉右区间 */x2=x0;fx2=fx0;else/*丢掉左区间 */x1=x0;fx1=fx0;while(fabs(fx0)>1e-5);/*该循环实现二分法求根*/printf("root x=%f",x0);2)程序填空

23、( 1#include <stdio.h>void main()int m,n,num1,num2,temp;printf("Input two positive integer:n");scanf("%d,%d",&num1,_&num2_);if(num1<num2)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

24、%dn",m);printf("The lowest common multiple is %dn",num1*num2/_m_);专业资料整理WORD格式(2) 下面程序是计算表达式 1+(1+2)+(1+2+3)+ ,+(1+2+3+,+10) 和。#include<stdio.h>void 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"

25、;,sum); 0 i sum+t3程序改错(1) 下面的程序是求 1100 之间的素数,并将所有素数按每行 10 个输出。#include <stdio.h>专业资料整理WORD格式#define <math.h>/#include<stdio.h>专业资料整理WORD格式void main()专业资料整理WORD格式 int i,m,k,n;/int i,m,k,n=0;专业资料整理WORD格式for(m=1;m<=100;m=m+2)if(n/10=0)/if(n%10=0)printf("n");k=1;for(i=2;i&

26、lt;=sqrt(m);i+)专业资料整理WORD格式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 位。#include<stdio.h>void main()int i;float s;专业资料整理WORD格式i=0;/i=1;专业资料整理WORD格式s=1;/s=0;专业资料整理WORD格式while(i<100) if(i%2=0)专

27、业资料整理WORD格式s=s-1/i;/s=s-1.0/i;专业资料整理WORD格式else专业资料整理WORD格式s=s+1/i;/s=s+1.0/i专业资料整理WORD格式i=i+1;专业资料整理WORD格式printf("1-1/2+1/3-1/4+,-1/100=%10.3fn",s);专业资料整理WORD格式4设计性实验(1) 编程输出以以下列图形。#include<stdio.h>void main()专业资料整理WORD格式int i,j,k;for(i=1;i<=6;i+)for(k=1;k<=20-(2*i-1)/2;k+)prin

28、tf(" ");for(j=1;j<=2*i-1;j+)printf("%d",i);printf("n");(2) 编写一个程序输出所有 5 位数字的回文。方法一 :#include<stdio.h>void main()专业资料整理WORD格式long x,a,t;/x: 原 5 位整数 ,a: 用来暂存 x,t: 把int i,num=0;/i: 表示原 5 位数的某一位 ,num:for(x=10000;x<=99999;x+)/每次取出 1 个a 反序后的数回文数的个数5 位整数专业资料整理WORD格

29、式专业资料整理WORD格式a=x;/把取出的5 位整数保存到a专业资料整理WORD格式t=0;/t用来存放反序后的数专业资料整理WORD格式while(a>0)专业资料整理WORD格式 i=a%10;t=t*10+i;/取出当前数的最后一位到/把取出的 i 组装到 ti专业资料整理WORD格式a=a/10;专业资料整理WORD格式if(x=t)/原来的5 位整数等于反序后的数t专业资料整理WORD格式printf("%ld,",x);num+;专业资料整理WORD格式if(num%10=0)printf("n");/每行输出10 个数专业资料整理W

30、ORD格式专业资料整理WORD格式方法二 :/*求 5 位整数中所有回文 */#include <stdio.h>void main()long int n,m,t=0;for(n=10000;n<=99999;n+)专业资料整理WORD格式if(hw(n)=1) printf("%6ld",n);t+;if(t%5=0)printf("n");/*每行输出5 个数*/专业资料整理WORD格式专业资料整理WORD格式int hw(long int a)/*hw 函数测试 a 是否是回文 */long intm,r=0;m=a;while

31、(m)r=r*10+m%10;m/=10;if(a=r)return 1;/*是回文返回 1 */elsereturn 0;/*是回文返回 0 */(3) 编程计算 e=1+1/1!+1/2!+1/3!+ ,+1/n!。精度为 1e-6即最后一项1/n!<1e-6 就停顿循环。专业资料整理WORD格式提示:注意1/n!=1/n-1! *1/n ;利用循环加上每一次的分项。#include <stdio.h>void main() long i;double e,t;e=1.0;t=1.0;for(i=1;t>1e-6 ;i+)t/=(double)i;e+=t; pri

32、ntf("e=%fn",e);2. 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("%d",&x);a10=x;/* 把 x 放到数据串最末位置*/专业资料整理WORD格式for(i=0;i<10;i+)专业资料整理WORD格式if(x<ai) k=i;break;/*寻找 x 的插入点,当发现插入点时

33、退出 */for(i=10;i>k;i-)/*将插入点以及其后的每个数据后移一个单位给 x 腾位 */* 实例演示腾位8 18 28 38 48 58 68 78 88 98 x8182838384858687888 98插入点*/ai=ai-1;ak=x;/* 将 x 放到插入点位置*/for (i=0;i<11;i+)printf("%3d",ai);printf("n"); i%7=0|i%11=0 n+ i%5=03. a.将 continue;改为 break;b.将 i=k-1; 改为 j=k-1;c.将 j=k+1; 改为 i=

34、k+1;d.将 for(i=0;i<10;i+) 改为 for(i=0;i<9;i+);附:算法简析#include <stdio.h>void main()int x, i,j,k;专业资料整理WORD格式int a10= 8,18,28,38,48,58,68,78,88,98;printf(" 请输入需要删除的一个整数:");scanf("%d",&x);i=0;j=9;while(i<=j)k=(i+j)/2 ;if(ak=x) break;if(ak>x)j=k-1;if(ak<x)i=k+1;

35、/* 二分法查找x 在数组中的位置,该位置即删除点,注意始末坐标不要弄颠倒*/if(i>j) printf("需要删除的数不在数组中n");else for( ;k<9;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;i<9;i+)/* 删除一个数,只剩9 个,数组最末尾储存的是重复的数据倒数第二个,故不输出*/printf("%5d",ai); a.将 f

36、or(i=0,j=0;i<=10;i+) 改为 for(i=1,j=0;i<=10;i+)b.将 if(i%3=0) 改为 if(i%3=0)c.将 for(;j>=0;j+) 改为 for(;j>=0;j-)专业资料整理WORD格式4.专业资料整理WORD格式#include<math.h>#include<stdio.h>int isprime(int x)int k=sqrt(x);for(;k>1;k-)if(x%k=0) return 0;return x;void sort(int a,int x)int i,k,t;for(i

37、=0;i<x-1;i+)for(k=i+1;k<x;k+)if(ai>ak)t=ai;ai=ak;ak=t;void main()int num50,prime50,i,n=0,j;printf("PLease input 50 integers:n");for(i=0;i<50;i+)scanf("%d",&numi);if(j=isprime(numi)!=0)primen+=j;sort(prime,n);printf("The sorted prime numbers are : n");for

38、(i=0;i<n;i+)printf("%-5d",primei);#include<stdio.h>#include<string.h>main()char input10,paswor10="password",ch,flag=0;int count=1,i=0;专业资料整理WORD格式while(count<=3)printf(" 请输入密码 :");while(ch=getch()!=13)inputi+=ch;putchar( * );inputi=0;if(strcmp(input,pa

39、swor)=0)printf("nn 你好!我的主人!");flag=1;break;elseprintf("nn 离我远点! ");count+;getch();if(flag=0)printf(" 密码输入三次错误,你不是我的主人!nn 离我远点! nn否那么,我很生气,后果很严重!");getch();main()int num10,i,max,min,maxj,minj;printf("Please input the data:n");scanf("%d",&num0);max

40、=min=num0;for(i=1;i<10;i+) scanf("%d",&numi); if(max<numi)max=numi;maxj=i; if(min>numi)min=numi;minj=i;printf("The maximum element s underside is %d,max=%d",maxj,nummaxj);专业资料整理WORD格式nThe minimum element s underside is %d,min=%d",minj,numminj);#include<stdio.

41、h>#include<conio.h>void 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;i<n-1;i+)for(j=

42、i+1;j<n;j+)if(ai>aj)t=ai;ai=aj;aj=t;void menu(int a,int n)专业资料整理WORD格式int i;gotoxy(1,24);printf("Datas: ");for(i=0;i<n;i+)printf("%-3d",ai);gotoxy(1,1);printf("MENUprintf("*n");printf("*printf("*1.Find a dataprintf("*printf("*2.Insert a

43、 dataprintf("*printf("*3.Delete a dataprintf("*printf("*4.Exitn");*n");*n");*n");*n");*n");*n");*n");*n");专业资料整理WORD格式printf("*n");printf("*n");printf("PLease input a command=>");void find(int a,int n)i

44、nt x;int low=0,high=n-1,mid;printf("nPLease input a data to be searched: ");scanf("%d",&x);while(low<=high)mid=(low+high)/2;if(x=amid) break;else if(x>amid) low=mid+1;else high=mid-1;nThis data can t be foundtheindatabase!");elseprintf("nThis data is in the po

45、sition %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 be inserted:");scanf("%d",&x);an=x;for(i=0;i<n;i+)if(x<ai) k=i;break;for(i=n;i>k;i-)ai=ai-1;ak=x;gotoxy(1,24);delline();printf("Datas: &qu

46、ot;);for(i=0;i<=n;i+)printf("%-3d",ai);void Delete(int a,int n)专业资料整理WORD格式int x,low,high,mid,i;printf("nPLease input a data to be deleted:");scanf("%d",&x);low=0;high=n-1;while(low<=high)mid=(low+high)/2 ;if(amid=x) break;if(amid>x)high=mid-1;if(amid<x)low=mid+1;if(low>high) printf("The data to be deleted is not in the database!n");

温馨提示

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

评论

0/150

提交评论