欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:29928098       资源大小:148.50KB        全文页数:90页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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 ( (cx=getchar()!=n ) if (cx!= )putchar(cx); if (cx= = )if (front!= ) putchar(cx); front=cx;  3程序改错(1)下列程序的功能是求1+3+5+99的和。 #include <stdio.h> 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 <stdio.h>void main() int i,x,y=0;   /y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i+) if (x%i)!=0) y=0;   /x%i=0 printf("%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)次数控制*/#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;  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 frames numbers:");  scanf("%d",&frame);  for(i=0;i<frame;i+)   wheattal+=wheatfnu;  wheatfnu+=wheatfnu;   printf("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"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("sum=%dn",sum); (2) 下面程序接收来自键盘的输入,直到输入<Ctrl>+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。#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+99的和。 #include <stdio.h> 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 <stdio.h>void main() int i,x,y=0;   /y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i+) if (x%i)!=0) y=0;   /x%i=0 printf("%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)次数控制*/#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;  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 frames numbers:");  scanf("%d",&frame);  for(i=0;i<frame;i+)   wheattal+=wheatfnu;  wheatfnu+=wheatfnu;   printf("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"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 <stdio.h> 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 ;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 <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");  3程序改错(1)下列程序的功能是输出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,该数的各位数字立方和等于该数本身的数。例如:153是一个“水仙花数”,因为153=13+53+33。 #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之间的所有完数。若一个整数等于该数的所有因子之和,则称该整数为完数。#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+)if(i/j=0 ) s=s+j; /i%j if(s=i)printf("%5d",i);    /s=i 4设计性实验SY61.Cmain() 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个数*/          SY62.C#include<stdio.h>#include<string.h>main() int i,j,k; for(i=1;i<=4;i+)    /*上三角形有4行,每循环1次输出1行*/      for(k=1;k<8-(2*i-1)/2);k+)  /*该循环输出每行的空格.8用于调节偏离位置,可换成别的数(>=8)*/     printf(" ");    for(j=1;j<=2*i-1;j+)  /*该循环输出每行的*字符*/       printf("*");    putchar(n);        /*换行*/  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);      sy63.cmain( ) int n=1,score,t; scanf("%d",&score); while (score>=0&&n<=5) n+; t=0; while(score!=0) t=t+(score%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代表相应点的函数值*/  do   printf("please input x1&x2:");    scanf("%f,%f",&x1,&x2);    fx1=x1*(2*x1-4)*x1+3)-6;    fx2=x2*(2*x2-4)*x2+3)-6;   while(fx1*fx2>0);     /*该循环指定有根的区间*/  do      x0=(x1+x2)/2;    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)程序填空(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 %dn",m);     printf("The lowest common multiple is %dn",num1*num2/_m_);  (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",sum);  0   i     sum+t3程序改错(1)下面的程序是求1100之间的素数,并将所有素数按每行10个输出。#include <stdio.h>#define <math.h>               /#include<stdio.h>void 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(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位。#include<stdio.h>void main()int i; float s; i=0;              /i=1; s=1;              /s=0;while(i<100) if(i%2=0) s=s-1/i;      /s=s-1.0/i; else s=s+1/i;      /s=s+1.0/i i=i+1; printf("1-1/2+1/3-1/4+-1/100=%10.3fn",s);  4设计性实验(1)编程输出以下图形。 #include<stdio.h>   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  <stdio.h> void main()    long x,a,t;    /x:原5位整数,a:用来暂存x,t:把a反序后的数   int i,num=0;   /i:表示原5位数的某一位,num:回文数的个数   for(x=10000;x<=99999;x+)   /每次取出1个5位整数          a=x;                    /把取出的5位整数保存到a    t=0;                    /t用来存放反序后的数                  while(a>0)       i=a%10;               /取出当前数的最后一位到i         t=t*10+i;             /把取出的i组装到t         a=a/10;          if(x=t)                /原来的5位整数等于反序后的数t    printf("%ld,",x);  num+;    if(num%10=0)  printf("n");  /每行输出10个数   方法二:/*求5位整数中所有回文*/#include <stdio.h>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,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 <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; printf("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放到数据串最末位置*/ for(i=0;i<10;i+) if(x<ai) k=i;break;/*寻找x的插入点,当发现插入点时退出*/ for(i=10;i>k;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;i<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;i<10;i+)改为for(i=0;i<9;i+);附:算法简析 #include <stdio.h> void main() 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(i<=j) k=(i+j)/2 ; if(ak=x) break; if(ak>x) j=k-1; if(ak<x) i=k+1; /*二分法查找x在数组中的位置,该位置即删除点,注意始末坐标不要弄颠倒*/ if(i>j) printf("需要删除的数不在数组中n"); else for( ;k<9;k+) ak=ak+1;/*挤位,后面的数据向删除点靠拢*/*实例演示挤位(若删除38) 删除点8,18,28,38,48,58,68,78,88,98 8,18,28,48,58,68,78,88,98,98*/ for (i=0;i<9;i+)/*删除一个数,只剩9个,数组最末尾储存的是重复的数据(倒数第二个),故不输出*/ printf("%5d",ai); a.将for(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-)4.#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=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(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; while(count<=3) printf("请输入密码:"); while(ch=getch()!=13) inputi+=ch; putchar(*); inputi=0; if(strcmp(input,paswor)=0) printf("nn你好!我的主人!"); flag=1; break; else printf("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=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 elements underside is %d,max=%d",maxj,nummaxj); printf("nThe minimum elements underside is %d,min=%d",minj,numminj);#include<stdio.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=i+1;j<n;j+) if(ai>aj) t=ai; ai=aj; aj=t; void menu(int a,int n) int i; gotoxy(1,24); printf("Datas: "); for(i=0;i<n;i+) printf("%-3d",ai); gotoxy(1,1); printf(" MENU n"); printf("*n"); printf("* *n"); printf("* 1.Find a data *n"); printf("* *n"); printf("* 2.Insert a data *n"); printf("* *n"); printf("* 3.Delete a data *n"); printf("* *n"); printf("* 4.Exit *n"); printf("* *n"); printf("*n"); printf("PLease input a command=>");  void find(int a,int n) int x; int low=0,high=n-1,mid; printf("nPLease input a data to be searched: "); scanf("%d",&x); while(

    注意事项

    本文(C语言程序设计实验与习题答案.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开