C语言实验参考答案-详细版-安徽大学_第1页
C语言实验参考答案-详细版-安徽大学_第2页
C语言实验参考答案-详细版-安徽大学_第3页
C语言实验参考答案-详细版-安徽大学_第4页
C语言实验参考答案-详细版-安徽大学_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、 PAGE 73C语言实验参考答案实验一5、输入并运行自已编写的程序(教材第一章P14 三 编程题)。实验二1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。#include main()float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%fn”,s,t,a);2、编程。要求用户输入两个整数a、b(分别为20、10), 读取用户从键盘输入的值,然后:1)用整数输出这两个数的和、

2、差;2)用长整型输出这两个数的积,用float输出商;3)用整数输出这两个数的余数,用float输出平均值。#include main()int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);he=a+b;cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ldn”,he,cha,ji);printf(“a/b=%f,a%b=%d,aver=%fn”,shang,yu,aver

3、);3.再次运行程序第2题中的程序,使整数a、b的值分别为10、20,分析程序运行结果,并给出说明。程序同上。实验三1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。例如,输入整数5,程序运行后输出字符5。#include main()int a;char c;printf(“a=”);scanf(“%d”,&a);c=a+48;putchar(c);2、编程。输入半径,计算球体表面积()和球体积 ()。#include #define PI 3.1415926main()float r,s,v;printf(“r=”);scanf(“%f”,&r);s=4*

4、PI*r*r;v=4/3.0*PI*r*r*r;printf(“s=%f,v=%fn”,s,v);3、编写一个程序,要求通过键盘给6个变量赋值,然后将变量的值在屏幕上打印输出。这六个变量的值分别为:10,10,40000,a,3.14,hello。#include main()int a,b;long c;char d,ch6;float e;scanf(“%d%d%ld%c%f%s”,&a,&b,&c,&d,&e,ch);printf(“%d,%d,%ld,%c,%f,%sn”,a,b,c,d,e,ch);实验四1.编程实现:键盘输入三个整数,分别存放到变量a,b,c中,输出其中的最小值(要

5、求不改变a、b、c的值)。#include main()int a,b,c,min;printf(请输入三个整数a,b,c=);scanf (%d,%d,%d,&a,&b,&c);min=ab?(bc?c:b):(ac?c:a);printf(min=%dn,min);2.编程实现:键盘输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则输出相应大写字母;其它字符原样输出。#include main()char c;printf(请输入一个字符:);scanf (%c,&c);if(c=a&c=A&c=Z)c=c+32;printf(%cn,c);3、计算以下分段函数值#inclu

6、de main()double x,y;printf(请输入一个实数:);scanf (%lf,&x);if(x=0&x10&x!=2&x!=3)y=x*x-5*x+6;else y=x*x-x-1;printf(x=%f,f(x)=%fn,x,y);4.编写程序,键盘接收一个字符串(只含大、小写英文字母),将该字符串加密后输出。加密规则为:若为小写字母则不变,若为大写字母则将其转换为小写后再后移一个字母,例如“A”应转换为“b”,“B”应转换为“c”,“Y”应转换为“z”,而“Z”应转换为“a”。#include main()char c20;int i;printf(请输入一个字符串(只含

7、英文字母):);gets (c);for(i=0;ci!=0;i+)if(ci= A&ci= Y)ci=ci+33;else if(ci=Z)ci=a;puts(c);putchar(n);5.编写程序,用scanf输入任意两个数给变量a、b,若a大于等于b,则直接输出a、b,否则将a、b的值交换(即a的原值放入b中,b的原值放入a中)后再输出。#include main()float a,b,t;printf(请输入两个数:);scanf (%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf (a=%f,b=%f,a,b);6.编写程序:由系统生成一个10以内的随机整

8、数,用户从键盘上输入一个10以内的整数,如果两者相等输出“OK”,否则输出“ERROR”。 #include #include #include main()int a,b;srand( (unsigned)time(NULL);b=rand()%10+1;printf(请输入一个10以内的整数:);scanf(%d,&a);printf(a=%d,随机数b=%dn,a,b);if(a=b) printf(OK!n);else printf(ERROR!n);7.编写程序要求输入整数a和b,若a2+ b2大于100,则输出a2+ b2百位以上的数字,否则输出两数之和。(此题为选做)#inclu

9、de main()int a,b,t;printf(请输入两个整数a,b=);scanf (%d,%d,&a,&b);t= a*a+b*b;if(t=100) printf(a+b =%d,a+b);else t=t/100;printf (a*a+b*b百位以上的数字是%dn,t);实验五1. 编程,计算函数y的值,已知函数y与自变量x的关系为:#include main()float x,y;printf(“请输入一个非负数x=”);scanf(“%f”,&x);if(x=0&x=100)y=x*x*x-20;if(x=0)printf(“y=%fn”,y);else printf(“输入

10、错误!n”);2. 编写一个简单的计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。#include main()char op;float d1,d2;printf(请输入算式(如3+5):);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,d

11、2,d1*d2);break; case /: printf(%g%g=%gn,d1,d2,d1/d2);break; 2. 编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:能同时被3,5,7整除能被其中两数(要指出是哪两个数)整除能被其中一个数(要指出是哪一个数)整除不能被3,5,7任一个数整除#include main()int n;printf(请输入一个整数n=);scanf(%d,&n);if(n%3=0&n%5=0&n%7=0)printf(%d能被3,5,7整除n,n);else if(n%3=0&n%5=0)printf(%d能被3,5整除n,n);el

12、se if(n%3=0&n%7=0)printf(%d能被3,7整除n,n);else if(n%5=0&n%7=0)printf(%d能被5,7整除n,n);else if(n%3=0)printf(%d能被3整除n,n);else if(n%5=0)printf(%d能被5整除n,n);else if(n%7=0)printf(%d能被7整除n,n);else printf(%d不能被3,5,7任一个整除n,n);4. 已知从2008年12月开始,银行整存整取存款不同期限的年利率分别为:三个月 1.71%,半年 1.98%,一年 2.25%,两年 2.79%,三年 3.33%,五年 3.6

13、0%。编写程序,要求输入存钱的本金和期限,求出到期时能从银行得到的利息与本金的合计数。#include main()char c;float x,y;printf(请输入存款本金x=);scanf(%f,&x);dogetchar(); /*接受回车符*/clrscr(); /*清屏*/printf(n存款期限:n);printf(a三个月(年利率1.71%)n);printf(b半年(年利率1.98%)n);printf(c一年(年利率2.52%)n);printf(d两年(年利率2.79%)n);printf(e三年(年利率3.33%)n);printf(f五年(年利率3.60%)n);p

14、rintf(请输入存款期限(a,b,c,d,e,f):);scanf(%c,&c);while(!(c=a&c=f);printf(%g元存期,x);x=x/100;switch(c) case a:y=x*(100+1.71/4); printf(三个月);break; case b: y=x*(100+1.98/2); printf(半年);break; case c: y=x*(100+2.25); printf(一年);break; case d: y=x*(100+2.79*2); printf(两年); break; case e: y=x*(100+3.33*3); printf

15、(三年);break; case f: y=x*(100+3.6*5); printf(五年);break; printf(到期的本息合计为%f元n,y);5. 设函数(1)用条件表达式求函数值y。(2)用if 语句编程,输入x,输出y,并给出你所使用的测试用例。解(1)用条件表达式求函数值y。#include main()float x;int y;printf(请输入x=);scanf (%f,&x);y=(x=0)?(x0?1:0):-1;printf(y=%dn,y);解(2)用if 语句编程,输入x,输出y。#include main()float x;int y;printf(请输

16、入x=);scanf (%f,&x);if(x=0) if(x0)y=1; else y=0;else y=-1;printf(y=%dn,y);6. 编写程序:键盘上输入一个不多于5位的正整数,要求:求它是几位数逆序打印出各位数字。如原数为123,应输出321。(此题为选做)#include #include main()long n,m,p,w1=0,w2=0,w3=0,w4=0,w5=0,t=0;printf(请输入一个非负整数(n100000)n=);scanf(%ld,&n);if(n/10000)!=0)m=5;else if(n/1000!=0)m=4;else if(n/100

17、!=0)m=3;else if(n/10!=0)m=2;else m=1;switch(m) case 5:p=n/10000;w1=p;n-=p*10000;t+=w1*pow(10,m-5); case 4:p=n/1000;w2=p;n-=p*1000;t+=w2*pow(10,m-4); case 3:p=n/100;w3=p;n-=p*100;t+=w3*pow(10,m-3); case 2:p=n/10;w4=p;n-=p*10;t+=w4*pow(10,m-2); case 1:p=n;w5=p;t+=w5*pow(10,m-1); printf(输入的是%ld位数,逆序数为%

18、ldn,m,t);实验六1、编程:输出200以内所有能被7整除的数。#include main()int i;for(i=0;i=200;i+=7) printf(“%4d”,i);2、从键盘输入n个数(n10),找出其中最小值,请编写相应程序。#include main()int n,i,a,min;printf(“n=”);scanf(“%d”,&n);for(i=1;ia)min=a; printf(“min=%d”,min);3、键盘输入正整数m和n(mn),计算mn之间所有奇数之和x与偶数之和y,请编程实现。#include main()int m,n,i,x1=0,x2=0;pri

19、ntf(“input m,n(mn):”);scanf(“%d,%d”,&m,&n);for(i=m;i=n;i+) if(i%2=1)x1+=i; else x2+=i;printf(“x1(奇数之和)=%d,x2(偶数之和)=%dn”,x1,x2);4.编程,计算函数y的值。要求键盘接收自变量x的值,若x 的值不为零,则计算函数y的值并输出,再从键盘接收下一个x的值,直到x的值为零,则显示“Thank You,Bye!”,尔后结束程序,已知函数y与自变量x的关系为: #include main()float x=1,y;doif(x0) printf(输入错误(x0&x=100)y=x*x

20、*x-20;if(x0)printf(y(%g)=%gn,x,y);while(x!=0);printf(Thank You,Bye!n);5.编写程序:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。#include main()int i;float f1=1,f2=2,f,s=0;for(i=1;i=20;i+) f=f2/f1;s+=f; f=f1;f1=f2;f2=f+f2; printf(s(20)=%gn,s);6.我国现有人口13亿,设年增长率为1%,编写程序,计算多少年后增加到20亿。#include main()float p

21、=13; int n=0; do p=p*1.01; n+; while(p20.); printf(%d年后人口增加到20亿!n,n);7.求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?#include main() int n=7; do if(n%2!=1)n+;continue; if(n%3!=2) n+;continue; if(n%5!=4) n+;continue; if(n%6!=5) n+;continue; if

22、(n%7!=0) n+;continue; break; while(1); printf(这条阶梯共有%d阶!n,n);(说明:该题应有多解:119,329,)8.每个苹果0.8 元,第一天买2 个苹果,第二天开始,每天买前一天的2 倍,直至购买的苹果个数达到不超过100 的最大值。编写程序求每天平均花多少钱?(此题为选做)#include main()float s=0; int n=1,p=0,d=0; do d+; /*第d天*/n=n*2; /*买n 个苹果*/p=p+n; /*共p 个苹果*/ while(p+n*2=100); s=p*0.8/d; printf(每天平均花%g元

23、钱!n,s);9.编写程序,求一个整数任意次方的最后三位数。即求xy的最后三位数,要求x,y 从键盘输入。(注意xy的结果是否会溢出)。(此题为选做)#include #include main()double x,y,m;int m3;printf(请输入x,y=);scanf(%lf,%lf,&x,&y);m=pow(x,y);m3=(int)m%1000;printf(x的y次方为%g,其最后三位数是%0.3dn,m,m3);实验七1.编写程序,从键盘输入6 名学生的5 门成绩,分别统计出每个学生的平均成绩。#include main()int a,b,s;float v;for(a=1

24、;a=6;a+)v=0; for(b=1;b=5;b+) printf(请输入第%d名学生的第%d门成绩:,a,b); scanf(%d,&s); v=v+s; printf(第%d名学生的平均成绩为:%gn,a,v/5.);2、打印出所有的水仙花数,所谓的水仙花数是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为有153=1*1*1+5*5*5+3*3*3 。解(1)#include main()int a,b,c,n;for(a=1;a=9;a+)for(b=0;b=9;b+)for(c=0;c=9;c+) n=100*a+10*b+c; if(n=a*a*a

25、+b*b*b+c*c*c) printf(“%dn”,n);解(2)#include main()int a,b,c,n;for(n=100;n=999;n+) a=n/100; b=n%100/10; c=n%10; if(n=a*a*a+b*b*b+c*c*c) printf(“%dn”,n);3、请分别用三种循环结构编程计算: 1!+2!+3!+.+n!,n的值由键盘输入。解(1)#include main()int n,i;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);for(i=1;i=n;i+) p*=i; sum+=p;printf(“1!

26、+2!+%d!=%ldn”,n,sum);解(2)#include main()int n,i=1;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);while(i=n) p*=i; sum+=p; i+;printf(“1!+2!+%d!=%ldn”,n,sum);解(3)#include main()int n,i=1;long p=1,sum=0;printf(“n=”);scanf(“%d”,&n);do p*=i; sum+=p; i+;while(i=n);printf(“1!+2!+%d!=%ldn”,n,sum);4.用循环语句编写程序,其功

27、能是计算: s=1+12+123+1234+12345+123456+1234567#include main()long i,t=0,s=0;for(i=1;i=7;i+) t=10*t+i; /*printf(t=%ldn,t);*/ s=s+t; printf(s=%ldn,s);5.编写程序,输出下列形式的杨辉三角形的前10行。(此题为选做) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 #include main()int i,j,a10=1,1;printf(%4dn%4d%4dn,a0,a0,a1); for(i=2;i=1;j-)aj+=aj-1; for(j=0

28、;j=i;j+) printf(%4d,aj); printf(n);getch();实验八1、打印输出由1,2,3,4四个数字组成的4位数,并统计它的个数(允许该4位数中有相同的数字,例如:1111,1122,,1212等).。#include main()int n,a,b,c,d,num=0;for(a=1;a=4;a+)for(b=1;b=4;b+)for(c=1;c=4;c+)for(d=1;d=4;d+) n=1000*a+100*b+10*c+d; printf(“%5d”,n); num+;printf(“nnum=%dn”,num);2、从键盘输入10个正整数进行求和,如果错

29、误地输入了负数,则求和结束。请分别用break和不用break编写相应程序。解(1) 用break编写程序#include main()int i,n,sum=0;for(i=1;i=0)sum+=n;else break;printf(“sum=%d”,sum);解(2) 不用break编写程序#include main()int i=1,n=0,sum=0;while(i=0) scanf(“%d”,&n); if(n=0)sum+=n;i+;printf(“sum=%d”,sum);3.勾股定理为:a2+b2=c2,编写程序,输出30以内满足上述关系的整数组合,例如3,4,5就是一个整数

30、组合。#include main()int a,b,c,n;for(a=1;a=30;a+)for(b=a;b=30;b+)for(c=a;c=30;c+) if(c*c=a*a+b*b) printf(%d,%d,%dn,a,b,c); 4.计算并输出500以内最大的10个素数之和。#include main()int a,b,s=0,n=0;for(a=500;a=2;a-)for(b=2;b=a-1;b+) if(a%b=0)break; if(b=a)n+;s=s+a;printf(%d ,a); if(n=10) break;printf(ns=%dn,s);5.请验证2000以内的

31、哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和。#include main()int n,m,a,b;for(n=6;n=2000;n+=2)for(m=3;mn;m+=2) for(a=2;am;a+) if(m%a=0)break; if(a=m)for(b=2;bn-m;b+) if(n-m)%b=0)break; if(b=n-m) printf(%d=%3d+%3dn,n,m,n-m);break; 6.编写程序:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5(此题为选做)#include main()int n,m,k=1;printf(请输入一个正

32、整数n=);scanf(%d,&n);printf(%d=,n);for(m=2;m=n;m+)if(n%m=0)if(k=1) printf(%d,m);else printf(*%d,m);k+;n=n/m;m-;continue; printf(n);7.编写程序,求一个正整数的位数(提示:关系表达式的值可以参与算术运算)。(此题为选做)#include main()long a,n=0,m=1; printf(请输入一个正整数a=); scanf(%ld,&a);doif(a/m!=0)n+;m=m*10; else break; while(1);printf(正整数%ld的位数是:

33、%ldn,a,n);实验九1、求一个33的整数矩阵的副对角线上所有奇数的和sum2。#include main()int a33,sum2=0,i,j;for(i=0;i3;i+)for(j=0;j3;j+) scanf(“%d”,&aij); if(i+j=2&aij%2)sum2+=aij;printf(“sum2=%d”,sum2);2、输入一个正整数n(1n10),再输入n个整数,请编程实现: = 1 * GB2 输出这些数的平均值(保留2位小数)。 = 2 * GB2 把这些数逆序后再输出。 = 3 * GB2 输出它们中的最大值及其下标(设最大值唯一,下标从0开始)。 = 4 *

34、GB2 将它们中的最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。#include main()int a10,n,min,max,xb0,xb1,i,sum,t;float aver;printf(n=);scanf(%d,&n);for(i=0;in;i+) scanf(%d,&ai);min=a0;xb0=0;max=a0;xb1=0;sum=a0;for(i=1;iai)min=ai;xb0=i; if(maxai)max=ai;xb1=i;sum+=ai; aver=1.0*sum/n;printf(1)平均值为:%3.2fn,aver);printf(2)逆序

35、输出:);for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t;for(i=0;in;i+)printf(%4d,ai);printf(n);printf(3)最大值为:%d,其下标为:%dn,max,xb1);t=a0;a0=axb0;axb0=t;for(i=0;in;i+)if(ai=max)xb1=i;t=an-1;an-1=axb1;axb1=t;printf(4)经交换后输出:);for(i=0;in;i+)printf(%4d,ai);printf(n);3.定义一个含有30个整型元素的数组a,按顺序分别赋予从2开始的偶数;然后按顺序每5个数求出一个平均

36、值,放在另一个数组b中存储,输出数组b中6个元素的值。#include main()int a30,i,j;float b6=0,0,0,0,0,0;for(i=0;i30;i+)ai=(i+1)*2;for(i=0;i6;i+) for(j=0;j5;j+) bi+=ai*5+j; bi=bi/5.; printf(b%d=%gn,i+1,bi); 4.通过循环按行顺序为一个55的二维数组a赋1到25的自然数,然后输出该数组的左下半角元素的值。#include main()int a55,i,j;for(i=0;i5;i+)for(j=0;j5;j+)aij=i*5+j+1;for(i=0;

37、i5;i+)for(j=0;j=i;j+) printf(%3d,aij); printf(n);5.从键盘输入两个字符串a和b,要求不使用库函数strcat,把串b的前5个字符连接到串a中;如果b中的长度小于5,则把b的所有元素都连接到a中。#include main()char a20,b20;int i,j;gets(a);gets(b);for(i=0;ai!=0;i+);for(j=0;bj!=0&j5;j+)ai+j=bj;ai+j=0;puts(a);6.定义两个N行N列的二维数组a、b,编写程序,将a数组最后一行放到b数组的第0列中,把a数组中的第0行放到b数组的最后一列中,b

38、所指二维数组中其他元素的数据不变。#include main()int i,j ,a33=1,2,3,4,5,6,7,8,9;int b33=11,12,13,14,15,16,17,18,19;printf(变换前数组a,b:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,aij); printf(n);printf(n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,bij); printf(n);for(i=0;i3;i+)bi0=a2i;bi2=a0i;printf(变换后数组a,b:n);for(i=0;i3;i+)

39、for(j=0;j3;j+)printf(%3d,aij);printf(n);printf(n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%3d,bij);printf(n);7.一个整型数组有10个元素,编写程序删除所有值为n的元素。要求主函数完成n的输入,数组元素的输入以及进行删除后数组元素的输出。子函数完成删除功能。(此题为选做) #include main()int a10,i,n,k=0,j;printf(请输入10个整数:n);for(i=0;i10;i+)scanf(%d,&ai);printf(请输入1个要被删除的整数:n);scanf(%d,&

40、n);for(i=0;i10;i+)if(ai=n)for(j=i;j9;j+)aj=aj+1; i-;k+;continue;printf(删除后数组的输出:n);for(i=0;i10-k;i+)printf(%d ,ai);printf(n );8.试编程实现如下功能:先定义一个4行5列的数组(矩阵),调用库函数rand()随机产生20-50之间的整数给数组元素赋值,再将矩阵中第二列与第四列的元素互换。要求先输出原数组,再输出交换后的数组。(rand函数的使用请参阅教材259页)(此题为选做)#include #include #include main()int a45,i,j,t;s

41、rand( (unsigned)time(NULL);printf(变换前数组a:n);for(i=0;i4;i+)for(j=0;j5;j+)aij= rand()%30+21;printf(%3d,aij);printf(n); printf(变换后数组a:n);for(i=0;i4;i+)t=ai1;ai1=ai3;ai3=t;for(i=0;i4;i+)for(j=0;j5;j+)printf(%3d,aij);printf(n);9.已知一组整型数据已按从小到大排列好,现任意输入一个整数,请按原来排序的规律将它插入到数组中(例如:原来的一组整数为1,3,5,8,9,若输入的整数是7,

42、则最终的结果为: 1,3,5,7,8,9)。(此题为选做)#include main()int a10=1,3,5,7,9,11,13,15,17,i,j,n;printf(请输入1个整数:);scanf(%d,&n);for(i=0;in) for(j=9;ji;j-)aj=aj-1; ai=n; break; if(n=a8)a9=n;for(i=0;i10;i+)printf(%d ,ai);printf(n );10.编写程序实现对字符串的加密,要求从键盘输入一个字符串,输出加密之后的字符串。加密规则为:对于串中第奇数个字符,若是字母,则把该字母变为它后面的字母(若为Z则变为A),不是

43、字母则不变;对于偶数个字符,若是字母,则把该字母变为它前面的字母(若为A则变为Z),不是字母则不变;大小写字母都遵循此规则。例如: 若原字符串是:AbbaZG Ha-MnnK Yzx 加密字符串为:BaczAF Gb-NmoJ Xaw (此题为选做)#include main()char a20;int i;printf(请输入一个字符串:);gets(a);for(i=0;ai!=0;i+) if(ai=a&ai=A&ai=Z) if(i%2=1) switch(ai) case a:ai=z; break; case A:ai=Z; break; default:ai=ai-1; else

44、 switch(ai) case z:ai=a; break; case Z:ai=A; break; default:ai=ai+1; puts(a);printf(n );11.编写程序:输入一个整数,输出该整数的平方螺旋矩阵。例如输入4,则输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 (此题为选做)#include main()int i,j,m,n=1,a1010; printf(请输入一个小于10的整数:); scanf(%d,&m); for(i=0;i=m/2;i+) /*共旋转m/2圈*/for(j=i;jm-i;j+) aij=n+;

45、for(j=i+1;ji;j-) am-i-1j=n+; for(j=m-i-1;ji;j-) aji=n+; for(i=0;im;i+)printf(nn); for(j=0;jm;j+) printf(%5d,aij); 实验十1.编写字符串拷贝程序,并要求将字符串中的小写字母转换成大写字母。#include #include main()char a80,b80;int i,l;printf(输入一个字符串:);gets(a);for(i=0;ai!=0;i+) bi=ai;if(bi=a&bi=z)bi=toupper(bi);puts(b);2、输入一个以回车结束的字符串(少于80

46、个字符),将该字符串逆序后输出。#include #include main()char c80,ch;int i,l;gets(c);l=strlen(c);for(i=0;il/2;i+) ch=ci;ci=cl-i-1;cl-i-1=ch;puts(c);3、输入一个以回车结束的字符串(少于80个字符),再输入一个字符,统计并输出该字符在字符串中出现的次数,然后再输出该字符串。#include main()char c80,ch;int i,num=0;gets(c);ch=getchar();for(i=0;ci!=0;i+)if(ci=ch)num+;printf(“num(%c)=

47、%dn”,ch,num);puts(c);4.编写程序:输入一行英文字符串,统计单词的个数(单词和单词以空格分隔)。(此题为选做)#includemain()char c50;int j=0,k,n=0;printf(输入一个字符串:);gets(c);while(cj= )j+;if(cj!=0)n+;j+;for(k=j;k50;k+)if(ck= & ck+1!= & ck+1!=0)n+; if(ck=0)break;printf(n=%dn,n);实验十一1、用指针方法,编写一个函数,求矩阵主对角线元素之和Sum。#include main()int i,j,a33,*p=*a,su

48、m=0;for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,p);if(i=j)sum+=*p;p+;printf(sum=%dn,sum);2、编一个程序,输入15个整数存入一维数组,按逆序存放后再输出(用指针完成)。#include main() int i,a15,*p=a,*q,temp;for(i=0;i15;i+)scanf(%d,p+i);q=&a14;for(i=0;i7;i+) temp=*p; *p=*q; *q=temp; p+; q-;p=a;for(i=0;i15;i+)printf(%3d,*(p+i);3、输入一个36的二维整型数组,输出其中

49、最大值、最小值以及它们所在行和列的下标(用指针完成)。#include main()int i,j,a36,*p=*a,min,max,xb0_h,xb0_l,xb1_h,xb1_l;for(i=0;i3;i+)for(j=0;j6;j+)scanf(%d,p);if(i=0&j=0)max=*p;min=*p;xb0_h=0;xb0_l=0;xb1_h=0;xb1_l=0;if(max*p) min=*p;xb0_h=i;xb0_l=j;p+;printf(最大值为:%d,行标:%d,列标:%dn,max,xb1_h,xb1_l);printf(最小值为:%d,行标:%d,列标:%dn,mi

50、n,xb0_h,xb0_l);4.用指针编写程序实现:输入一个字符串,计算该字符串的长度,并统计该串中含小写字母、大写字母和其他字符的个数。#include main()char a100,*p=a; int n=0,xiao=0,da=0,qita=0; printf(请输入一个字符串:); gets(p); while(*p) n+; if(*p=a&*p=A&*p=Z)da+;else qita+;p+;printf(n字符串长度=%d,n);printf(n小写字母个数=%d,大写字母个数=%d,其他字符个数=%dn,xiao,da,qita);5.用指针编写程序完成,将字符串a赋给一

51、个字符数组,然后从第一个字母开始间隔地输出该串。#include main()char a100,*p=a; int n=0; printf(请输入一个字符串:); gets(p); while(*p) n+; if(n%2=1)putchar(*p);p+;6.编写一个指针型函数,从键盘接收一个17之间的整数,根据指定的数字,返回与该数字相对应的是星期几。例如数字6则返回Saturday。(此题为选做)#include char *f(int m,char (*p)10)if(m=7)m=0;p+=m;return p;main()int n;char c710=Sunday,Monday,

52、Tuesday,Wednesday,Thursday,Friday,Saturday,(*q)4;q=c;doprintf(请输入一个1-7的整数:); scanf(%d,&n);while(n7);printf(%sn,f(n,q);7.用指针编写程序实现,将一个字符串按逆序存放。要求主函数中完成字符串的输入和输出。子函数完成逆序存放。(此题为选做)#include #include void g(char a)int n,m;char *p=a,t;m=strlen(a);for(n=0;nm/2;n+)t=*(p+n);*(p+n)=*(p+m-n-1);*(p+m-n-1)=t;mai

53、n()char c50,*q=c;printf(请输入一个字符串:);gets(q);g(c);printf(逆序后的字符串:);puts(q);实验十二1.编写程序:定义一个10个元素的职工结构体数组(职工号、姓名、性别、出生年份、职务),从键盘输入数据后,输出年龄最大的和最小的职工信息。 #include main()int i,max=0,min=0,year1,year2;struct zg char num10; char name20; char sex3; int year; char zw10;z10;for(i=0;izi.year)year1=zi.year;max=i;i

54、f(year2zi.year) year2=zi.year;min=i;printf(年龄最大者:%s %s %s %d %sn,zmax.num,,zmax.sex,zmax.year,zmax.zw); printf(年龄最小者:%s %s %s %d %sn,zmin.num,,zmin.sex,zmin.year,zmin.zw); 2.试利用指向结构体的指针编制一程序,实现输入三位学生的学号、姓名、数学期中和期末成绩,然后求出每一位学生的平均成绩并输出成绩表按成绩由高到底排序输出三位学生的相关信息。#include main()int i=0,j,

55、n3=0,1,2,t;struct student char num10; char name20; int grade1,grade2; float aver; stu3,*p;for(p=stu;pnum,p-name,&p-grade1,&p-grade2); p-aver=(p-grade1+p-grade2)/2.; i+; printf(1)成绩表:n);printf(姓名 期中成绩 期末成绩 平均成绩n);for(p=stu;pname,p-grade1,p-grade2,p-aver);for(i=0;i3;i+)for(j=i;j3;j+) if(stui.averstuj.

56、aver) t=ni;ni=nj;nj=t;printf(2)成绩排序:n);printf(学号 姓名 期中成绩 期末成绩 平均成绩n);for(i=0;i3;i+)printf(%4s%8s%10d%10d%10.2fn,stuni.num,,stuni.grade1,stuni.grade2,stuni.aver);3.有一个包括学生学号、姓名和三门课成绩的结构变量,要求在主函数中对该变量赋值,在另一个函数中将其值打印出来。#include struct student char num10; char name20; int grade1,grade2,grade3;

57、 stu;main()void p();printf(请输入学生的学号、姓名、成绩1、成绩2、成绩3:);scanf(%s%s%d%d%d,stu.num,,&stu.grade1,&stu.grade2,&stu.grade3); p();void p()printf(学号 姓名 成绩1 成绩2 成绩3n);printf(%4s%7s%7d%7d%7dn,stu.num,,stu.grade1,stu.grade2,stu.grade3);实验十三1.定义一个函数,求2005000之间满足“用4除余1,用5除余3,用7除余4”的数,且一行打印6个。#inclu

58、de void f(int n);main()int n;for(n=200;n=5000;n+)f(n);void f(int n)static int p=0,m=0;if(n%4=1 & n%5=3 & n%7=4) p+; printf(%6d,n); m=1; else m=0;if(p%6=0&m=1)printf(n);2.编写函数isprime( ),用来判断一个整形数a是否为素数,若是素数,函数返回1,否则返回0。#include int isprime(int a);main()int a,n=0;printf(“a=”);scanf(“%d”,&a);if(a0)n=is

59、prime(a);if(n=1)printf(“%d是素数”,a);else printf(“%d不是素数”,a);int isprime(int a)int m;for(m=2;ma;m+)if(a%m=0)return 0;return 1;3.在主函数main()中已有变量定义和函数调用语句:“int a=1,b= -5,c; c=fun (a ,,b)”; fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数。请你:(1) 编写fun函数。 fun(int x , int y) (2) 写出这个主函数main()#include int fun(int x,int y);ma

60、in()int a=1,b=-5,c;c=fun(a,b);printf(“c=%dn”,c);int fun(int x,int y)if(xy)return x-y;else return y-x;4.编写函数,其功能是删除字符串s中的所有数字字符。解一:用外部数组编程#include char s20;void del();main()printf(“请输入一个字符串:”);gets(s);del();puts(s);void del()int i,j;for(i=0;si!=0;i+)if(si=0&si=9)for(j=i;sj!=0;j+)sj=sj+1; i-;解二:用指针作参数

温馨提示

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

评论

0/150

提交评论