c语言上机实验答案.doc
实验四 循环结构程序设计(4学时)一、实验方式:一人一机二、实验目的:1、熟练掌握while语句、do-while语句和for语句。2、练习并掌握循环结构的嵌套形式。3、掌握循环结构的程序设计方法。三、实验内容: 说明:前四题为必做题目,后两题为选做题目。1、从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。(实验指导书P117)2、求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身。(实验指导书P118)3、判断输入的某个数是否为素数。若是,输出YES,否则输出NO。(书P123)4、计算的近似值。公式如下:/4=1-1/3+1/5-1/7+,直到最后一项的绝对值小于10-6为止。(书P123)5、计算 s=1!+2!+20! 的值并输出。6、输入10个整数,统计并输出其中正数、负数和零的个数。四、实验步骤与过程:1.#include<conio.h>#include<stdio.h>void main()float x,max,min;printf("please input scores:");scanf("%f",&x);max=min=x; while(x>=0)if(x>max)max=x;if(x<min)min=x;scanf("%f",&x);printf("nmax=%fnmin=%fn",max,min);getch();2.#include<stdio.h>void main()int x,y,z;int k=100;while(k<1000)x=k/100;y=(k/10)%10;z=k%10;if(k=x*x*x+y*y*y+z*z*z)printf("%dn",k);k+;3.#include<stdio.h>#include<math.h>void main()int i,x,yes,a;printf("enter integer number:");scanf("%d",&x);yes=1;i=2;a=(int)sqrt(double)x);while(yes&&i<=a)if(x%i=0)yes=0;i=i+1;printf("%d",x);if(yes)printf("YESn");elseprintf("NOn");getchar();4.#include<stdio.h>#include<math.h>void main()float pi,t,n;int sign=1;pi=0.0;n=1.0;t=1.0;while(fabs(t)>=1e-6)t=sign/n;pi+=t;n+=2;sign=-sign;pi=pi*4;printf("pi=%fn",pi);getchar();5.#include<stdio.h>void main()int i,j,n;double m,s=0;for(i=1;i<=20;i+)for(j=1,m=1;j<=i;j+)m*=j;s+=m;printf("result is:%g",s);getchar();6.#include<stdio.h>void main()int a,b,c,n,i;a=0;b=0;c=0;printf("please enter ten numbers:");for(i=1;i<=10;i+)scanf("%d",&n); if(n=0) a+; elseif(n>0) b+;elsec+;printf("零的个数为:%d",a);printf("正数的个数为:%d",b);printf("负数的个数为:%d",c);实验五 综合实验1:结构化程序设计(2学时)一、实验方式:一人一机二、实验目的:1、进一步掌握选择结构、循环结构的编程特点。2、掌握C语言的结构化程序设计思想。3、学习利用循环结构实现的一些常用算法(如穷举、迭代、递推等)。三、实验内容: 说明:前两题为必做题目,后两题为选做题目。1、编一程序,对于给定的一个百分制成绩,输出对应A,B,C,D,E表示的的等级成绩。设:90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。(书P93)2、百马百担问题。(实验指导书P121)3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。4、输出如下图案: * * * * * * *四、实验步骤与过程:1.#include<stdio.h>void main()int score,temp,logic;char grade;logic=1;while(logic)printf("input score:");scanf("%d",&score);if(score>100)|(score<0)printf("n error,input again!n");elselogic=0;printf("n");if(score=100)temp=9;elsetemp=(score-score%10)/10;switch(temp)case 9:grade='A'break;case 8:grade='B'break; case 7:grade='C'break;case 6:grade='D'break;case 5: case 4:case 3: case 2:case 1: case 0:grade='E'printf("score is :%d,the grade is:%c.n",score,grade);2.#include<stdio.h>void main()int m,n,k;int sum=0;printf("各种驮法如下: n");for(m=1;m<=100;m+)for(n=1;n<=100-m;n+)k=100-m-n;if(k%2=0&&3*m+2*n+0.5*k=100)printf("大马%3d匹;中马%3d匹;小马%3d匹.n",m,n,k);sum+;printf("共有%d种驮法.n",sum);3.#include <stdio.h>void main()int m=0,n=0,k=0,j=0;char x;printf("请输入一行字符:n");scanf("%c",&x);while(x!=10)if(x>=48&&x<=57)m+;else if(x>=65&&x<=90|x>=97&&x<=122)n+;else if(x=32)j+;else k+;scanf("%c",&x);printf("这行字符中有数字%d个,英文字母%d个,空格%d个,其他字符%d个。n",m,n,j,k);4.#include<stdio.h>void main()int i,j,k;for(i=1;i<=4;i+)for(j=1;j<=20-i;j+)printf(" ");for(k=1;k<=2*i-1;k+)printf("*");printf("n");for(i=3;i>0;i-) for(j=1;j<=20-i;j+)printf(" ");for(k=1;k<=2*i-1;k+)printf("*");printf("n");getchar();实验六 函数程序设计(4学时)一、实验方式:一人一机二、实验目的:1、掌握C语言中函数的三要素:函数定义、函数调用和函数说明。2、掌握通过参数在函数间传递数据的方法。3、掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。三、实验内容: 说明:前四题为必做题目,后两题为选做题目。1、从键盘输入三角形的3条边,调用三角形面积函数求出其面积,并输出结果。(实验指导书P130)2、输入整数n,输出高度为n的等边三角形。当n=5时的等边三角形如下:(实验指导书P134) * * * * *3、输入并运行以下程序,分析运行结果。 #include <stdio.h>int a=5;int b=7; void main( ) int a=4,b=5,c; c=plus(a,b); printf(“a+b=%dn”,c);plus(int x,int y) int z; z=x+y; return (z);4、求500以内的所有亲密数对。若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数对。(实验指导书P136)5、输入并运行以下程序,分析运行结果。 #include <stdio.h> int d=1; fun(int p) static int d=5; d+=p; printf(“%d ”,d); return (d);void main( ) int a=3; printf(“%d ”,fun(a+fun(d);6、设计一个函数,输出整数n的所有素数因子。(书P157)四、实验步骤与过程:1.#include<math.h>#include<stdio.h>float area(float a,float b,float c)float s,p,area;s=(a+b+c)/2; p=s*(s-a)*(s-b)*(s-c);area=sqrt(p);return(area);void main()float x,y,z,ts;scanf("%f,%f,%f",&x,&y,&z);if(x+y>z)&&(x+z>y)&&(y+z>x)ts=area(x,y,z); printf("area=%fn",ts); else printf("data error!");2.#include<stdio.h>void trangle(int n)int i,j;for(i=0;i<n;i+)for(j=0;j<=20-i;j+)printf(" ");for(j=0;j<=2*i;j+)printf("*");putchar('n');void main()int n;printf("请输入一个整数:");scanf("%d",&n);printf("n");trangle(n);3.#include <stdio.h>int a=5;int b=7; void main( ) int a=4,b=5,c; c=a+b; printf("a+b=%dn",c);plus(int x,int y) int z; z=x+y; return (z);4.#include<stdio.h>int facsum(int m)int sum=1,f=2;while(f<=m/2)if(m%f=0)sum=sum+f;f+;return sum; void main()int m=3,n,k;while(m<=500)n=facsum(m);k=facsum(n);if(m=k&&m<=n)printf("亲密对数是:%dn%dn",m,n);m+;5.#include <stdio.h> int d=1; fun(int p) static int d=5; d+=p; printf("%d ",d); return (d);void main( ) int a=3; printf("%d ",fun(a+fun(d);6.#include<stdio.h>int prime(int n)int i,flag=1;for(i=2;i<=n/2;i+);if(n%i=0)flag=0;return flag; return flag;void factor(int n) int i;i=2;while(i<=n)if(n%i=0)&&prime(i)printf("%d ",i);n=n/i;continue;i+; void main()int num;printf("Enter num: ");scanf("%d",&num);printf("prime factor is: n");factor(num);