实验2-8参考答案.doc_第1页
实验2-8参考答案.doc_第2页
实验2-8参考答案.doc_第3页
实验2-8参考答案.doc_第4页
实验2-8参考答案.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

实验二、选择结构参考答案1修改下列程序,使之满足当x为10时输出“= =”,否则输出“!=”的条件。 #includestdio.hmain()int x;scanf(%d,&x);if(x=10)printf(=n);else printf(!=n);2修改下列程序,使之实现以下功能:#include “stdio.h” main( ) int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);3程序填空。从键盘输入任意一个字母,将其按小写字母输出。 #include main() char c; scanf(%c,&c); if (c=A&c=Z) c=c+32; printf(n%c,c); 7. 有一函数 x (x1) y = 2x1 (1x10) 3x11 (x10) 编写程序输入x,输出y值。#include stdio.hmain()int x,y; scanf (%d,&x); if (x1) y=x; else if(x10) y=2*x-1;elsey=3*x-11;printf (%d,y);9给一个不多于3位的正整数,要求:(1)求出它是几位数;(2)、分别打出每一位数字;(3)、按逆序打出各位数字,例如原数为321,应输出123。#include stdio.hvoid main()int a,b,c,x,n;scanf(%d,&x);a=x/100;b=(x-a*100)/10;c=x%10;if(a!=0) printf(%d为3位数,原数为%d,逆序数为%dn,x,x,c*100+b*10+a);else if(b!=0) printf(%d为2位数,原数为%d,逆序数为%dn,x,x,c*10+b); else printf(%d为1位数,原数为%d,逆序数为%dn,x,x,c);实验三、循环结构实验(1)1分析并修改下面的程序,使该程序能正常结束运行。 #include main() int x,y; x=2; y=0; while (!y-) printf (“%d,%dn”,x, y);3下面是一个计算e的近似值(使误差小于给定的数值)的程序。main()double e=1.0,x=1.0,y,detax;int i=1;printf(“please input enter :n”);scanf(“%lf”,&detax);y=1/x;while(y=detax)x=x*i;y=1/x;e=e+y;+i;printf(“%12.10f”,e);实验要求:(1)阅读上面的程序,写出程序所依据的计算公式。e=1+1/1!+1/2!+1/3!+.+1/n!(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:a.不进入循环;=1b.只循环一次;无此条件c.只循环两次;=1d.进入死循环(程序将永远循环下去)。 =04编写程序。对输入的任意的一个正整数按反序输出。例如,输入147,输出741。#include stdio.hvoid main()int x,i;scanf(%d,&x);while(x!=0) i=x%10; x=x/10;printf(%d,i);任务2 do-while语句程序设计5.求 1!+2!+3!+4!+5!+6!+7!+8!+9!+10! 请填空将下面的程序补充完整: 答案:4037913#include main( ) int j, m,p,s ; s=0; m=1 ; do p=1; j=1 ; while( j=m ) p *= j ; j+ ; s=s+p; m+ ; while( m=10); 这里是m=10 printf(s=%dn, s ) ; 6. 编写程序。每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数总数达到不超过100的最大值,求每天平均花多少钱? 答案:9.92#include stdio.h / 要考虑到最后一天的苹果数不能计入总和,要减去。void main()int x,sum,day;double ave=0;x=2;day=1;sum=2;dox=2*x; sum=sum+x; day+;while(sum=100);ave=(sum-x)*0.8/(day-1);printf(%lf,ave);实验四、循环结构实验(2)【上机内容】1分析并修改下面的程序,使该程序能正常结束运行。 #include main() int i; for(i=1;i10;i+) printf (“%dn”,i);2分析并修改下面的程序,使sum的值为1+2+10的和 #include main() int i=1;int sum=0; for(;i=10;i+) sum=sum+i; printf (“sum=%dn”,sum);3.运行下列程序,输出结果为_15_ #include main() int i,sum=0; for(i=0;i=10;i+) sum=sum+i; if(i=5) break; printf (“sum=%dn”,sum);4.运行下列程序,输出结果为_50_ #include main() int i,sum=0; for(i=0;i=20;i+) if(i%5)!=0) continue; sum=sum+i; printf (sum=%dn,sum);5.运行下列程序,输出结果为_24_#include main() int i,j,sum=0; for(i=0;i=3;i+) for(j=0;j=5;j+); sum=sum+i*j; printf (sum=%dn,sum);6. 程序填空。求出1000以内能被13整除的最大数。#include main() int i; for(i=1000;i0;i-)if (i%13=0)break; printf(“n%d”,i); 7、程序填空。求Fibonacci 数列:1,1,2,3,5,8, 的前40个数,即: F1=1 ( n = 1 ) F2=1 ( n = 2 ) Fn= Fn-1 + Fn-2 ( n=3 )要求每一行输出8个数。参考答案: #include main( ) long f1, f2 ; int i ; f1=1 ; f2=1 ; for( i=1;i=20; i+ ) printf(%10ld%10ld ,f1, f2 ) ; if(i%4=0) printf( n ) ; f1 = f1 + f2 ; f2 = f2 + f1 ; 8程序填空。从键盘输入10个不为0的整型数,统计其中负数的个数,并求出所有正数的平均值。参考答案:#include main( ) int i, x, count=0 ; float ave=0 ; for( i=0; i0 ) ave +=x; else count+; if( count != 10 ) ave /= 10-count; printf(count:%d,Average:%fn,count,ave ) ;9帕多瓦数列:1,1,1,2,2,3,4,5,7,9,12,16,21,求出这个数列的前20项之和。 答案为:614参考答案:#include main( ) int f1,f2,f3,f,i; long sum=3; f1=f2=f3=1; for(i=4;i=20;i+) f=f1+f2; sum=sum+f; f1=f2; f2=f3; f3=f; printf(sum=%ldn,sum);10.统计能被4整除而且个位数为6的4位数的个数及和。答案:个数为450,总和为:2477700参考答案:#include stdio.hmain() int i,sum=0,count=0; for(i=1000;i=9999;i+) if(i%10=6&i%4=0) count+; sum=sum+i; printf(个数为:%8d,总和为:%8dn,count ,sum);11.求1100之间所有素数的个数及和。答案:个数为25,总和为:1060参考答案:#include #include main() int m,n,i,j,k,sum=0; n=0; for(m=2;m=100;m+) k=(int)sqrt(m); i=2; while(m%i!=0&i=k) i+; if(i=k+1) n+;sum=sum+m; printf(共有%8d个素数,总和为%8dn,n,sum);12编写程序输出下面的数字金字塔。 1 121 12321 1234321 123454321参考答案:#includemain() int n=5,int i,j;for(i=1;i=5;i+) for(j=1;j=5-i;j+) printf( );for(j=1;j=1;j-) printf(%d,j ); printf(n); 实验5-6 参考答案121;2123.求2的4次方。4上机调试下面计算两个整数之和的程序,记录系统给出的出错信息,指出出错原因并予以改正。#include main()int x,y;scanf(d,d,&x,&y); printf(dn,sum(x+y); int sum( int a,b) return (a+b); 改正:#include main() int sum( int a,int b);/ 函数说明语句int x,y;scanf(d,d,&x,&y); printf(dn,sum(x,y);/ 实参个数要与形参个数一致 int sum( int a,int b)/ 参数类型要分别说明 return (a+b); 5上机调试下面判断n是否是素数的程序,函数fun中有逻辑错误,调试并改正。#include fun(int n) int k,yes=1; for(k=2;k=n/2;k+) if(nk=0) yes=0; break; / 添加 break 语句。 else yes=1; return yes;main() int n; scanf(d,&n); if(fun(n) /要有实参 printf(d:yes!n,n); else printf(d:no!n,n);6下面程序中,函数fun的功能是根据形参m计算公式T=1/1!+1/2!+1/3!+1/m!的值,上机调试,请改正程序中的错误。当从键盘输入10时,给出程序运行的正确结果(按四舍五入保留10位小数)。答案应为:1.71828#include main() int m; printf(n input m:); scanf(d,&m); printf(n t= 12.10lf n,fun(m);double fun(int m) double fac,t=0.0; int i=1,j; for(i=1;i=m;i+) fac=1.0; for(j=1;j=m;j+) fac=fac*i;/ 改为:for(j=1;j=i;j+) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。 t+=1.0/fac; return t;任务2 函数的嵌套调用1(1) in main:x=2,y=5(2) in swap:a=2,b=5(3) in swap:a=5,b=2(4) in main:x=2,y=52a=83如输入:12345则输出:54321程序的功能是实现将输入的5个字符逆序输出。 48实验6 函数递归调用、变量的存储类型及编译预处理1下面的程序是用递归方法分别求0!5!,分析递归过程,填空使程序完整。#include stdio.hmain() int i; int fact(int); for(i=0;i=5;i+) printf(40:d!=dn,i,fact(i);int fact(int j) int sum; if(j=0) sum=1; else sum=_fact(j-1)*j;_; return sum;2下面是求m、n最大公约数的递归算法,填空使程序完整。#include stdio.hint gcd(int m,int n) if(mn=0) return n ; else return_gcd(n, m%n)_;void main() int m,n,t; scanf(d,d,&m,&n); if (_mn_) t=m;m=n;n=t; t= gcd( m,n); /*调用函数gcd( m, n);*/ print(gcd=dn,t);修改程序使之同时能完成求m、n的最小公倍数。3下面程序是用递归方法在屏幕上显示如下所示的杨辉三角,填空使程序完整,并分析递归过程。 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 对第x行第y列,其值计算公式为(不计左侧空格时):程序清单如下:#includestdio.hmain()int c(int x,int y);int i,j,n;printf(Input n=);scanf(%d,&n);for(i=1;i=n;i+)/for(j=0;j=n-i;j+)/printf();/删除for(j=1;j=i;j+)printf(%3d,c(i,j);printf(n);int c(int x,int y)int z;if(y=1|y=x)return 1;elsez=c(x-1,y-1)+c(x-1,y);return z;4试用递归法编写求Fibonacci数列前20项的和的程序,Fibonacci数列为1,1,2,3,5,8,13,其通项公式为:#includemain()int sum=0,n;int fib(int n);for(n=1;n=20;n+)sum=sum+fib(n);printf(%dn,sum);int fib(int n

温馨提示

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

评论

0/150

提交评论