安徽大学C语言实验平台作业答案汇总.doc
实验三C根本数据类型与运算1. 编程:根据需要定义相关变量,键盘输入10.0、20.6、5.0三个实数分别赋给相关三个变量,输出该3个变量的和s、乘积p和平均值a。 2. 编程:输入球的半径,计算球体外表积和球体积。 3. 编程:定义6个变量,通过键盘将“10, 10, 40000, a, 3.14, hello这六个值分别赋给相应变量,然后在屏幕上输出变量的值每行输出一个变量。 4. 编程:从键盘接收1个字符给变量s1,1个字符串允许带有空格给字符数组s2,输出字符变量s1的ASCII码值与字符数组s2中的字符串。 5. 编程:从键盘输入二个整数分别赋给整型变量a、b,将它们按由小到大的顺序输出。 6. 编程:调用标准库函数sinx计算6800的正弦值此题为选做。 7. 编程:键盘输入一个实数赋给变量x,计算 y=x*x*x+x*x+x 的值,分别输出y值、y值的整数局部和小数局部此题为选做。 8. 编程:键盘输入四个整数分别赋给整型变量a、b、c、d,用三目运算方法将它们按由大到小的顺序输出此题为选做。1. #include<stdio.h>main()float x,y,z,s,p,a;scanf("x=%fy=%fz=%f",&x,&y,&z);s=x+y+z;p=x*y*z;a=s/3;printf("s=%f,p=%f,a=%f",s,p,a);2. #include<stdio.h>main()float r,s,v;printf("input r");scanf("%f",&r);s=4*3.14*r*r;v=4/3*3.14*r*r*r;printf("s=%f,v=%f",s,v);3. #include<stdio.h>main()int a,b;long c;char d,st6;float e;scanf("%d%d%ld%c%f%s",&a,&b,&c,&d,&e,st);printf("a=%dn,b=%dn,c=%dn,d=%cn,e=%fn,ch=%s",a,b,c,d,e,st);4. #include<stdio.h>main() char s1,s26;scanf("%c%s",&s1,s2);printf("s1=%d,s2=%s",s1,s2);5. #include<stdio.h>main() int a,b;scanf("a=%db=%d",&a,&b);if (a<b)printf("a=%db=%d",a,b);else printf("b=%da=%d",b,a);6. #include<math.h>#include<stdio.h>main()float a,b;scanf("%f",&a); b=sin(a); printf("%f",b);7. #include<stdio.h>main()float x,y,b;int a;scanf("%f",&x);y=x*x*x+x*x+x;a=(int)y;b=y-a;printf("%fn%dn%fn",y,a,b);实验四C分支结构程序设计1. 编程:从键盘输入一个字符,如是大写字母,那么输出相应小写字母;如是小写字母,那么原样输出;其它字符输出“Not letter!。 2. 编程:判断输入的正整数是否既是3又是5的整数倍。假设是,输出Yes,否那么输出No。 3. 编程:从键盘输入三个整数,分别赋给变量a,b,c,输出其中的最大值要求不改变a、b、c的值。 4. 编程:用scanf输入任意两个数分别赋给变量a、b,假设a大于等于b,那么直接输出a、b,否那么将a、b的值交换即a的原值放入b中,b的原值放入a中后再输出。 5. 编程:输入整数a和b,假设a2+ b2大于100,那么输出a2+ b2百位以上的数字,否那么输出两数之和。 6. 编程:从键盘输入三个整数,分别赋给变量a,b,c,请按从小到大的顺序依次输出a、b、c要求不改变a、b、c的值。 7. 编程:从键盘输入三个整数,分别赋给变量a,b,c,请按从小到大的顺序依次将这三个数存放于a、b、c中,最后输出a、b、c。 8. 编程:由系统生成一个10以的随机整数,用户从键盘上输入一个10以的整数,如果两者相等输出“OK,否那么输出“ERROR。 注:随机数的生成必须包含头文件#include <stdlib.h>、#include <time.h>,必须用初始化语句srand(unsigned)time(NULL);,表达式rand()%a+1的值为1a的随机整数1. #include<stdio.h>main()char x;scanf("%c",&x);if(x>='a'&&x<='z') printf("%c",x);else if (x>='A'&&x<='Z') printf("%c",x+32); else printf("Not letter!");2. #include<stdio.h>main()int x;scanf("%d",&x);if (x>0) if(x%3=0&&x%5=0) printf("Yesn"); else printf("Non");else printf("Error!");3. #include<stdio.h>main()int a,b,c,max;scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=max>c?max:c;printf("a=%d,b=%d,c=%d,max=%d",a,b,c,max);4. #include<stdio.h>main()float a,b;scanf("%f%f",&a,&b);if(a<b)a=a+b; b=a-b; a=a-b;printf("a=%f,b=%fn",a,b);5.#include<stdio.h>main()int a,b,t,r,s;scanf("%d%d",&a,&b);s=a+b;r=a*a+b*b;t=r/100;if(r>100)printf("%d",t);else printf("%d",s);6.#include<stdio.h>int main()int a,b,c,d,max,min;scanf("%d%d%d",&a,&b,&c);if(a>=b)max=a;min=b; else max=b; min=a;if(c>=max)max=c;if(c<=min) min=c;d=a+b+c-min-max;printf("%d %d %dn",min,d,max);7.#include <stdio.h>main() int a, b, c, d; scanf("%d%d%d",&a,&b,&c); if(a>=b) d = a; a = b; b = d; else if(b>=c) d = b; b = c; c = d; printf("a=%d b=%d c=%d",a,b,c);8.#include<stdio.h>#include<stdlib.h>#include<time.h>main()int a,b;srand(unsigned)time(NULL);b=rand()%10+1;scanf("%d",&a);printf("a=%d,随机数b=%dn",a,b);if(a=b)printf("OK!n");else printf("ERROR!n");实验五C多分支结构程序设计*1. 编程:计算奖学金ss的值,奖学金ss与成绩s的关系为: 具体要求: 1用 if 语句实现分支结构的编程。 2s为整型,ss要求准确到小数点后二位。 3用scanf函数给s赋值,且输入前有相应提示。 4结果输出时采用以下形式: 成绩s具体值,奖学金ss=具体值 2. 设函数f(x)如下,求函数函数法f(x)的值。 具体要求: 1用条件表达式编程。 2用if语句编程。 3用scanf函数给自变量赋值,且输入前有相应提示。 4结果输出时采用以下形式: x具体值,f(x)=具体值 5给出你所使用的测试用例。提示:按C的语法规那么,标识符由字母、数字、下划线组成,不能将f(x)作为变量名,此题中,函数名可起为 f 或 y 等。但作为非格式控制字符,f(x)完全可以出现在printf函数的双引号。 3. 编程:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 1能同时被3,5,7整除。 2能被其中两数整除指出是哪两个数。 3能被其中一个数指出是哪一个数整除。 4不能被3,5,7任一个数整除。 4. 编程:用switch 语句编写一个简单的计算器程序,输入格式为:data1 op data2。其中data1和data2为参加运算的两个数;op为运算符,取值只能是+、-、*、/。 5. 编程:计算你的出生日期是星期几。 1通过键盘输入你出生那一年的元旦是星期几 2通过键盘输入你的出生日期 3输出结果1.#include<stdio.h>main()int s; float ss;printf("Please input sn");scanf("%d",&s);if(s<0|s>100) printf("ERROR!n");else if(s>=0&&s<80) ss=0; else if(s>=80&&s<90) ss=100+s; else if(s>=90&&s<=100) ss=200+s*3/2;printf("成绩s=%d,奖学金ss=%0.2fn",s,ss);2.#include<stdio.h>main()float x;int f;printf("Please input xn");scanf("%f",&x);if(x=0) f=0;else f=(x>0)?1:-1;printf("x=%f,f(x)=%dn",x,f);3.#include<stdio.h>main()int x,a,b,c;printf("请输入一个整数x");scanf("%d",&x);a=x%3;b=x%5;c=x%7;if(a=0&&b=0&&c=0) printf("%d能同时被3,5,7整除n",x);else if(a=0 && b=0) printf("%d能被3,5整除n",x); else if(a=0 && c=0) printf("%d能被3,7整除n",x); else if(b=0 && c=0) printf("%d能被5,7整除n",x); else if(a=0) printf("%d能被3整除n",x); else if(b=0) printf("%d能被5整除n",x); else if(c=0) printf("%d能被7整除n",x); else printf("%d不能被3,5,7任意一个数整除n",x);4.#include <stdio.h>main()char op;float d1,d2;printf("请输入算式");scanf("%f%c%f",&d1,&op,&d2);switch(op) case '+': printf("%g+%g=%gn",d1,d2,d1+d2);break; case '-': printf("%g-%g=%gn",d1,d2,d1-d2);break; case '*': printf("%g*%g=%gn",d1,d2,d1*d2);break; case '/': printf("%g/%g=%gn",d1,d2,d1/d2);break; 5.#include<stdio.h>main()int x,m,d;printf("请输入你出生那年元旦的星期1至7:n");printf("请输入你的出生日期 mm/dd : n");scanf("%d,%d,%d",&x,&m,&d);switch (m*30+d)/7)case 0:printf("你出生那天为星期%d",x);break;case 1:printf("你出生那天为星期%d",x+1);break;case 2:printf("你出生那天为星期%d",x+2);break;case 3:printf("你出生那天为星期%d",x+3);break;case 4:printf("你出生那天为星期%d",x+4);break;case 5:printf("你出生那天为星期%d",x+5);break;case 6:printf("你出生那天为星期%d",x+6);break;实验六C循环结构程序设计1. 编程:输出200以所有能被7整除的数。 2. 编程:求出1 1000之间能被13整除的最大的那个数。 3. 编程:找出假设干个非零数中的最小值m以与它们的平均值a。 要求:假设干个数由键盘输入,每次输入一个赋给变量x,x为零时,完毕输入。 4. 编程:求两个正整数m、n之间所有奇数之和x与偶数之和y。 要求: 1m、n的值由键盘输入。 2输入时,允许用户随意先输入大的或小的整数。 5. 编程:计算函数y的值。要求键盘接收自变量x的值,假设x的值不为零,计算函数y的值并输出,再从键盘接收下一个x的值,直到x的值为零,显示“Thank You,Bye!,此后完毕程序,函数y与自变量x的关系为: 6. 编程:计算的近似值,的计算公式为: 要求: 1n值由键盘输入。 2分别输出当n 为10、100、1000时的计算结果。 3输出时要求每行显示一组n、的值,每行形式如下: n具体值, = 具体值 7. 我国现有人口13亿,设年增长率为1%,编写程序,计算多少年后增加到20亿。 8. 求解爱因斯坦数学题。有一条长阶梯,假设每步跨2阶,那么最后剩余1阶;假设每步跨3阶,那么最后剩2阶;假设每步跨5阶,那么最后剩4阶;假设每步跨6阶,那么最后剩5阶;假设每步跨7阶,最后才正好一阶不剩。请问,这条阶梯最少共有多少阶? 9. 每个苹果0.8 元,第一天买2 个苹果,第二天开始,每天买前一天的2 倍,直至购置的苹果个数达到不超过100 的最大值。编程:求每天平均花多少钱?此题为选做1.#include<stdio.h>main()int i;for(i=1;i<=200;i+)if(i%7!=0) continue;printf("%d ",i);2.#include<stdio.h>main()int i,max=0;for(i=0;i<=1000;i+)if(i%13!=0) continue;if (max<i) max=i;printf("max=%dn",max);3.#include<stdio.h>main()int i;float x,m,s,a;scanf("%f",&x);if(x!=0) m=x;s=x;for(i=1;i+)scanf("%f",&x);if(x=0) break;s=s+x;if(m>x)m=x;a=s/i;printf("最小值m=%f,平均值a=%f",m,a);4.#include <stdio.h>void main()int i,m,n,t,x=0,y=0;scanf("%d%d",&m,&n);if(m>n)t=m;m=n;n=t;for(i=m;i<=n;i+) if(i%2) x+=i;else y+=i;printf("x=%dn",x);printf("y=%dn",y);5.#include<stdio.h>main()float x,y;printf("input x:");scanf("%f",&x);for (;x>=0;)if(x>0&&x<100)y=3*x+1;printf("%f",y);else if(x>=100)y=x*x-1;printf("%f",y);elseprintf("thank you bey !");break;scanf("%f",&x);6.#include<stdio.h>main() int n,i; double t,sum; printf("请输入n的值n"); scanf("%d",&n); sum=2; i=1; t=2; while(i<n) t=t*(2*i)*(2*i)/(2*i-1)/(2*i+1); i=i+1; printf("n=%d,=%fn",n,t);7.#include<stdio.h>main()double t=13,s=0;while(t<=20)t=t*(1+0.01);s+;printf("需要经过%lf 年",s);8.#include<stdio.h>main()int x=7;while( !(x%2=1&&x%3=2&&x%5=4&&x%6=5)x=x+7;printf("%dn",x);9.#include <stdio.h>main()float s=0; int n=1,p=0,d=0; do d+; n=n*2; p=p+n; while(p+n*2<=100); s=p*0.8/d; printf("每天平均花%g元钱!n",s);实验七C多重循环结构程序设计1. 编程:输出100以个位数为6且能被3整除的所有数。 2. 编程:键盘输入6 位学生的5门课成绩,分别统计出每个学生的平均成绩。 3. 编程:输入一个正整数,统计该数的各位数字中零的个数,并求各位数字中的最大者。 4. 编程:分别用do while、while、for三种循环结构求: 1!+2!+3!+.+n! ,要求n的值由键盘输入。 5. 编程:计算100至1000之间有多少个数其各位数字之和是5。 6. 编程:从键盘输入的10个整数中,找出第一个能被7整除的数。假设找到,输出此数后退出;假设未找到,输出“not exist。 7. 编程:输出1至100之间满足如下条件的数:各位数的乘积大于各位数的和。 8. 编程:将整数316表示为两个加数的和,使这两个加数分别能被13和11整除。 9. 编程:打印出所有的"水仙花数"。所谓的"水仙花数"是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个"水仙花数",因为有153=1*1*1+5*5*5+3*3*3。10. 编程:一条有10个车站的铁路线,共需要准备多少种车票?1.#include<stdio.h>main()int i;for(i=1;i<=100;i+)if(i%10=6&&i%3=0)printf("%d ",i);2.#include<stdio.h>main()int i,j,a65;float s;for(i=0;i<6;i+)s=0;for(j=0;j<5;j+)printf("请输入第%d个学生的第%d门成绩",i+1,j+1);scanf("%d",&aij);s=s+aij;s=s/5;printf("第%d个学生平均成绩为%fn",i+1,s);3.#include<stdio.h>main()int x,i,max,t;i=0;max=0;scanf("%d",&x);dot=x%10;if(t=0) +i;else if(max<t) max=t;x=x/10;while(x);printf("i=%d,max=%d",i,max);4.#include<stdio.h>main()int n,i,a,s=0;printf("请输入n:");scanf("%d",&n);a=1;for(i=1;i<=n;i+)a=a*i;s=s+a;printf("s=%dn",s);#include<stdio.h>main()int n,i=1,a=1,s=0;printf("请输入n:");scanf("%d",&n);while(i<=n)a=a*i; s=s+a; i+;print("s=%d",s);#include<stdio.h>main()int n,i=1,a=1,s=0;printf("请输入n:");scanf("%d",&n);doa=a*i;s=s+a;i+;while(i<=n);printf("s=%d",s);5.void main()int i,s,k,count=0;for(i=100;i<1000;i+)s=0;k=i;while(k)s=s+k%10;k=k/10;if(s!=5)continue;elsecount+;printf("%dn",count);6.#include <stdio.h>main()int x,i;printf("请输入10个整数:"); for(i=1;i<=10;i+)scanf("%d",&x); if(x%7=0) printf("first number is %d",x);break; if(i>10) printf("not exist!");7.#include <stdio.h>main ( )int n,k=1,s=0,m ; for (n=1;n<=100;n+) k=1;s=0;m=n; while (m>=1) k*=m%10; s+=m%10; m=m/10 ; if(k>s) printf("%dn",n); 8.#include<stdio.h>main()int i=0,j,k;doi+;k=316-13*i;while(k%11);j=k/11;printf("316=13*%d+11*%dn",i,j);9.#include<stdio.h>main()int i,j,k,n; for(n=100;n<1000;n+) i=n/100; j=(n-i*100)/10; k=n%10; if(i*i*i+j*j*j+k*k*k=n) printf("%dn",n); 实验八C程序控制结构综合应用1. 编程计算:s=1+12+123+1234+12345+123456+1234567。 2. 编程: 找出1至99之间的全部同构数。所谓同构数是这样一组数:它出现在其平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。 3. 假设用0至9之间不同的三个数构成一个三位数,编程统计共有多少种方法。 4. 编程:键盘输入一个不多于5位的正整数,要求:此题为选做 (1)求它是几位数 (2)逆序打印出各位数字。如原数为123,输出那么为321。 5. 编程:找出以下疑案的作案人此题为选做该案涉与6个嫌疑人A、B、C、D、E、F,并且: (1)A、B至少有一人作案。 (2)A、E、F这3人中至少有2人参与作案。 (3)A、D不可能是同案犯。 (4)B、C或同时作案,或与本案无关。 (5)C、D中有且仅有一人作案。 (6)如果D没有作案,那么E也不可能参与作案。 6. 编程:输出以下形式的辉三角形的前10行此题为选做 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1.#include<stdio.h>main()int s=0,i=1,t=0;while(i<10)t=t*10+i;s+=t;i+;printf("s=%dn",s);2.#include<stdio.h>main()int i;for(i=1;i<=99;i+) if(i*i%10=i|i*i%100=i) printf("%dn",i);3.#include <stdio.h> main()int i,j,k,count=0;for(i=1;i<=9;i+) for(j=0;j<=9;j+)if(i=j) continue;else for(k=0;k<=9;k+)if(k!=i&&k!=j) count+;printf("%dn",count);实验九C的数组1. 编程实现:输入一个正整数n1<n10,再输入n个整数,把这些数逆序存放到数组中再按顺序输出。 例如:输入5,再输入三个数8、23、1、7、19,那么输出为:19、7、1、23、8。 2. 编程实现:输入10个正整数,将它们中的最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的10个数。 3. 编程实现:二次等差数列的前4项为2,5,10,17,请定义一维整型数组存储该数列的前20项,并每5个数为一行输出该数列的前20项。 4. 一组整型数据已按从小到大排列好,现任意输入一个整数,请按原来排序的规律将它插入到数组中(例如:原来的一组整数为1,3,5,8,9,假设输入的整数是7,那么最终的结果为: 1,3,5,7,8,9),请编程实现。 5. 编程:将一个4×4的整型矩阵元素按副对角线右上到左下互换。 要求: 1键盘输入矩阵各元素的值。 2互换前,按矩阵形式输出矩阵。 3互换后,按矩阵形式输出矩阵。 6. 求一个4×4的整数矩阵的副对角线右上到左下上所有奇数的和sum与偶数的平均值ave。 要求:结果保存2位小数 7. 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半角元素的值和它们之和。 8. 定义一个实数型数组,将10个实数输入到数组中,编程实现任一块区间所有元素的平均值,即输入两整数m,n,计算出数组中第m个元素开始的后n个元素的平均值,包括第m个元素(假设n值过大,即个数太多,超过数组的最后一个元素,那么统计到最后一个元素)。 例如:数组元素为1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,输入3,5,那么输出5.0。 9. 一个整型数组有10个元素,编写程序删除所有值为n的元素。如:数组中为1,3,2,4,2,7,9,0,2,5,n的值为2,删除后输出数组元素应该为1,3,4,7,9,0,5。此题为选做10. 定义两个N行N列的二维数组a、b,编写程序,将a数组最后一行放到b数组的第0列中,把a数组中的第0行放到b数组的最后一列中,b所指二维数组中其他元素的数据不变。此题为选做11. 试编程实现如下功能:先定义一个4行5列的数组矩阵,调用库函数rand()随机产生20-50之间的整数给数组元素赋值,再将矩阵中第二列与第四列的元素互换。要求先输出原数组,再输出交换后的数组rand函数的使用请参阅教材259页。此题为选做1.#include<stdio.h> main()int a10,n,i;scanf("%d",&n);for(i=n-1;i>=0;i-)scanf("%d",&ai);for(i=0;i<n;i+)printf("%d ",ai);printf("n");2.#include <stdio.h>main()int n,i,a10,max,min,t,r,p;scanf("%d",&n);for (i=1;i<=n;i+)scanf("%d",&ai);min=a1;for (i=1;i<=n;i+)if (ai<a1)min=ai;r=i;t=a1,a1=min,ar=t;max=an;for (i=1;i<=n;i+)if (ai>an)max=ai;p=i;t=an,an=max,ap=t;for (i=1;i<=n;i+)printf("%d",&ai);3.#include <stdio.h>void main()int a21,i; for(i=1;i<=20;i+) ai=i*i+1; printf("%d ",ai); if(i%5=0) printf("n"); 4.#include <stdio.h>main()int a10=1,3,5,7,9,11,13,15,17,i,j,n;printf("请输入1个整数");scanf("%d",&n);for(i=0;i<9;i+) if(ai>n) for(j=9;j>i;j-)aj=aj-1; ai=n; break; if(n>=a8)a9=n;for(i=0;i<10;i+)printf("%d ",ai);printf("n ");6.#include<stdio.h>main()int a44,i,j,t=0; float s1=0 ,s2=0,ave; for(i=0;i<=3;i+) for(j=0;j<=3;j+) printf("input 16 ints:");scanf("%d",&aij);for(i=0;i<=3;i+) for(j=3;j>=0;j-) if(i+j=3) if(aij%2!=0)s1=s1+aij; else t+; s2=s2+aij; ave=s2/t; printf("s=%0.2fnave=%0.2fn",s1,ave);7.#include <stdio.h>main() int i,j,k=1,s=0; int a55; for(i=0;i<5;i+) for(j=0;j<5;j+) aij=k; k+; putchar(10); for(i=0;i<5;i+) for(j=0;j<5;j+) printf("%dt",aij); printf("n"); putchar(10); for(i=0;i<5;i+) for(j=0;j<=i;j+) printf("%dt",aij); printf("n"); s=s+aij; printf("s=%d",s);实验十C字符数组和字符串函数*1. 编写字符串拷贝程序,并要求拷贝过程中将字符串中的小写字母转换成大写字母。 2. 从键盘输入两个字符串a和b,要求不使用库函数strcat,把串b的前5个字符连接到串a中;如果b中的长度小于5,那么把b的所有元素都连接到a中。 3. 输入一个以回车完毕的字符串少于80个字符,再输入一个字符,统计并输出该字符在字符串中出现的次数,然后输出该字符串。 4. 编程: 输入一个字符串,输出该字符串中出现次数最多的字符以与出现的次数。 5. 编程: 键盘接收一个字符串(只含大、小写英文字母),将该字符串加密后输出。 加密规那么为:假设为小写字母那么不变,假设为大写字母那么将其转换为小写后再后移一个字母,例如“A应转换为“b,“B应转换为“c,“Y应转换为“z,而“Z应转换为“a