2013版全国计算机等级考试二级C教程课后编程题答案3-16#include<stdio.h>main(){double a,b,c,s,v;printf("input a,b,c:");scanf("a=%f b=%f c=%f", &a,&b,&c);s=a*b;v=a*b*c;printf("a=%f,b=%f,c=%f\n",a,b,c);printf("s=%f,v=%f",s,v);return 0;}3-17#include <stdio.h>main(){int a,b,c;printf("请输入需要划算成小时和分钟的数值\n");scanf("%d",&a);b=a/60;c=a%60;printf("a=%d小时%d分钟",b,c);return 0;}3-18#include <stdio.h>main(){int a,b,c,d;printf("请输入两个整数a和b\n");scanf("%d %d",&a,&b);c=a/b;d=a%b;printf("a和b的商和余数分别是%d %d",c,d); return 0;}3-19#include<stdio.h>main(){double a,b,c,d;printf("please input three numbers\n"); scanf("%lf%lf%lf",&a,&b,&c);d=(a+b+c)/3;printf("d=%lf",d);return 0;}3-20#include<stdio.h>main(){printf("please input three numbers"); int a,b,c,t;scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d,b=%d,c=%d",a,b,c); return 0;}4-21#include<stdio.h>main(){int a;printf("请输入a的值a=\n");scanf("%d",&a);switch(a/10){case 0: printf("m=1"); break;case 1: printf("m=1"); break;case 2: printf("m=1"); break;case 3: printf("m=2");break;case 4: printf("m=3");break;case 5: printf("m=4");break;default: printf("m=5");return 0;}}4-22#include<stdio.h>main(){int a,b,c,d,e,f,y,m,t;printf("please input her or his birthday \n"); scanf("%d%d%d",&a,&b,&c);printf("请输入现在的日期\n");scanf("%d%d%d",&d,&e,&f);y=d-a;m=e-b;t=f-c;printf("该生的实际年龄是%d年%d月%d天",y,m,t); return 0;}4-24#include<stdio.h>main(){int a,b,c,max;printf("请输入三个整数\n");scanf("%d%d%d",&a,&b,&c);max=a;if(a<b) max=b;if(max<c) max=c;printf("max=%d",max);return 0;}4-25#include <stdio.h>main(){double x,y;printf("请输入x的值\n");scanf("%lf",&x);if(-5<x&&x<0) y=x;if(x==0) y=x-1;if(0<x&&x<10) y=x+1;if(x<-5||x==-5)printf("您输入的x的值不在查找范围内"); if(x>10||x==10) printf("您输入的x的值不在查找范围内"); printf("y=%lf",y);return 0;5-17#include<stdio.h>main(){int n,i=1,t,sum=0;for(n=1;n<=101;n+=2){t=i*n;sum+=t;i=-i;}printf("sum=%d",sum);return 0;}5-18#include<stdio.h>main(){int t=1,n;float sum=1.0;for(n=1;n<=50;n++){t=t*n;sum+=1/t;}printf("e=%.3f",sum);return 0;}5-19#include<stdio.h>main(){int y,n=0;for(y=2000;y<=3000;y++){if(y%4==0&&y%100!=0||y%400==0) {printf("%d ",y);n++;}if(n%10==0) printf("\n");}printf("n=%d",n);return 0;}5-20#include<stdio.h>main(){int i,j,k,m,n,h;for(i=1;i<=3;i++){for(j=i;j<=3;j++)printf(" ");for(k=0;k<2*i-1;k++)printf("*");printf("\n");}for(m=0;m<4;m++){for(n=0;n<m;n++) printf(" ");for(h=0;h<7-2*m;h++) printf("*");printf("\n");}return 0;}6-19#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); do{ch=getchar();printf("ch=%c ASCII=%d",ch,ch);n++;if(n%3==0) putchar('\n');}while((ch=getchar())!='\n');putchar('\n');return 0;6-20#include<stdio.h>main(){char ch;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){if(ch!=' ') printf("%c",ch);}putchar('\n');return 0;}6-216-21#include<stdio.h>main(){printf("请输入几行数字并用!来结束\n");char ch;int n=0;while((ch=getchar())!='!'){if(ch=='\n') n++;}printf("输入的行数是:");printf("%d",n);return 0;}6-22#include<stdio.h>main(){char ch;int n=0;printf("请输入一行字符并用回车换行符结束输入\n"); while((ch=getchar())!='\n'){ if('a'<ch&&ch<'z') n++;}printf("n=%d",n);putchar('\n');return 0;}6-23#include<stdio.h>main(){ int i,j,k;for(i=1;i<=5;i++){for(j=0;j<=5-i;j++) printf(" ");for(k=0;k<2*i-1;k++) printf("%c",'A'+i-1); putchar('\n');}return 0;}int mymod(int a,int b){int c;c=b%a;return c;}7-15#include<stdio.h>main(){ int a,b,c;printf("please input two numbers\n"); scanf("%d%d",&a,&b);c=mymod(a,b);printf("所求余数是%d",c); return 0;}7-16#include<stdio.h>main(){int m,n;printf("请输入m的值\n"); scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-17#include<stdio.h>main(){int m,n;printf("请输入m的值\n"); scanf("%d",m);double t=1.0;for(n=2;n<=m;n++)t+=1/(n*n);printf("t=%f",t);return 0;}7-18float f(float x){float s;s=x*x-5*x+4;return s;}#include<stdio.h>main(){float t,y1;printf("请输入参数t的值\n"); scanf("%f",&t);y1=f(t);printf("y1=%f",y1);return 0;}8-17voidf( float a, float b, float *p1,float *p2) {*p1=a+b;*p2=a-b;}#include<stdio.h>main(){float x, y ;printf("请输入x和y的值\n");scanf ("%f%f",x,y);f(x,y,&x,&y);printf("%f%f",x,y);return 0;}8-18void f(int x ,int y ,int z ,int *p1 ,int *p2) {*p1=x;*p2=z;if(*p1>y) *p1=y;if(*p1>z) *p1=z;if(*p2<y) *p2=y;if(*p2<x) *p2=x;}#include<stdio.h>main(){printf("请输入a b c的值\n");int a,b,c;scanf("%d%d%d",&a,&b,&c);f(a,b,c,&a,&b);printf("三个数中最小的数是%d最大的数是%d",a,b); return 0;}9-27#include<stdio.h>main(){char ch;int num[9]={0},i;printf("请输入一行字符以回车来结束输入\n"); while((ch=getchar())!='\n')if('0'<ch&&ch<'9')num[ch-'0']+=1;for(i=0;i<9;i++)printf("%d字符出现的次数是:%d次\n",i,num[i]);return 0;}9-28#include<stdio.h>main(){int a[10]={0,1,2,3,4,5,6,7,8,9},i,n;printf("请输入需要向前移动的第一个元素的下标n(n>0):\n"); scanf("%d",&n);for(i=n;i<=9;i++)a[i-1]=a[i];for(i=0;i<=8;i++)printf("%d",a[i]);return 0;}9-29#include<stdio.h>#include<stdlib.h>main(){int y[20],h[20],k=0,i,j;printf("y数组中的值如下\n");for(i=0;i<20;i++){ y[i]=rand()%99;printf("%d ",y[i]);}for(i=0;i<=10;i++){if(y[i]%2==1){h[k]=y[i];k++;}}printf("y数组中的奇数如下\n"); for(j=0;j<k;j++)printf("%d ",h[j]);return 0;}9-30#include<stdio.h>main(){int j,p,k,m;char a[8]={'a','2','c','d','e','f','g','9'},t; for(j=0;j<8;j++){if('A'<=a[j]&&a[j]<='z'){p=j;for(k=j+1;k<7;k++)if('A'<=a[k]&&a[k]<='z')if(a[p]<a[k]) p=k;t=a[j]; a[j]=a[p]; a[p]=t;}}for(m=0;m<=7;m++)printf("%c ",a[m]);return 0;}9-31#include<stdio.h>main(){int i=0,m;char ch,a[11]={0},x;printf("请输入8个有序的数\n"); do {ch=getchar();a[i]=ch;i++;}while((ch=getchar())!='\n');printf("输入的数分别是:");for(m=0;m<8;m++)printf(" a[%d]=%c\n ",m,a[m]); putchar('\n');printf("请输入需要插入的数\n"); int j,k,s,l,p;scanf("%c",&x);if(x<a[0]){for(l=10;l>=1;l--)a[l]=a[l-1];a[0]=x;}if(a[0]<x&&x<a[9]){for(j=0;j<=8;j++)if(a[j]<x&&x<a[j+1]){p=j+1;for(k=10;k>j+1;k--)a[k]=a[k-1];}}a[p]=x;if(x>a[9])a[10]=x;for(s=0;s<=8;s++)printf("%c ",a[s]);return 0;}9-32#include<stdio.h>main(){int h,j,i,k,a[15];printf("请输入需要转化成2进制的10进制数\n"); scanf("%d",&h);do{j=h%2;h=h/2;a[i]=j;i++;}while(h/2==0);for(k=i;k>=0;k--)printf("%d",a[k]);return 0;}9-33#include<stdio.h>#include<stdlib.h>main(){int i=0,n=1,a[15],j,x;x=rand()%20;a[i]=x;for(j=0;n<=14;j++){ x=rand()%20;while(i<n&&x!=a[i])i++;if(i==n){a[n]=x;n++;}i=0;}printf("a数组中不重复的15个数是:");for(j=0;j<=14;j++)printf("%d " ,a[j]);return 0;}9-34#include <stdio.h>#include <stdlib.h>main(){int a[5][5],k=0,c1=0,c2=0,h[5]={0},e[5]={0},o,i,j,l,n,y,z; for(i=0;i<5;i++)for(j=0;j<5;j++){a[i][j]=rand()%30;printf("%d ",a[i][j]);k++;if(k%5==0)printf("\n");}for(z=0;z<=4;z++){c1=c1+a[z][z];c2=c2+a[z][5-z];}printf("c1=%d c2=%d\n",c1,c2); for(l=0;l<5;l++)for(n=0;n<5;n++){h[l]=h[l]+a[l][n];e[l]=e[l]+a[n][l];}for(o=0;o<5;o++)printf("h[%d]=%d ",o,h[o]); printf("\n");for(y=0;y<=4;y++)printf("e[%d]=%d ",y,e[y]); return 0;}9-36include<stdio.h>main(){inta[9][9],k,i,j;printf("* * A MULTIPLICATION TABLE * *\n"); printf(".......................................................\n"); printf("(1)");for(k=2;k<=9;k++)printf("(%d)",k);printf("\n");for(i=0;i<9;i++){printf("(%d)",i+1);for(j=0;j<9;j++){a[i][j]=(i+1)*(j+1);printf("%-4d",a[i][j]);}printf("\n");}printf(".......................................................\n"); return 0;}9-37#include<stdio.h>#include<stdlib.h>main(){int a[5][5],i,j,k,m;for(i=0;i<5;i++){for(j=0;j<5;j++){a[i][j]=rand()%100;printf("%-4d",a[i][j]);}printf("\n\n");}printf("转置后的距阵如下\n"); for(k=0;k<5;k++){ for(m=0;m<5;m++)printf("%-4d",a[m][k]);printf("\n");}return 0;}10-19#include<stdio.h>scomp(char*s1,char*s2){int i;i=0;while(sl[i]==s2[i]&&s1[i]) i++;jreturn (s1[i]-s2[i]);}main(){char str1[]="ABC",str2[10];get(tr2);if(scomp(str1,str2)<0printf("str1>str2\n"); else if(scomp (str1,str2)<0)printf("str1<str2\n"); elseprintf("str1=str2\n");}10-20#include<stdio.h>void gettext (char(*)[61],int*);void puttext (char[][61],int);main(){char text[40][61];int n;gettext (text,&n);puttext (text,n);}void gettext (char(*t)[61],int*m){ int n;printf("enter texline,ended to empty line:\n"); n=0;gets(t[n]);while(*t[n]){n++;gets(t[n]);}*m=n;}void puttext (char t[][61],int n){ int i;for(i=0;i<n;i++){ printf("%-2d:",i+1);puts(t[i]);}}10-21#include<stdio.h>#include<string.h>getstr(char p[][80]){char t[80];int n=0;printf("enter string.a empty sring to end\n");gets(t);while(strcmp(t," ")){strcmp(p[n],t);n++;}return n;}char*findmin(char(*a)[80],int n){char*p;int i;p=a[0];for(i=0;i<=n;i++)if(strcmp(p,a[i]))p=a[i];return p;}11-11#include<stdio.h>#include<string.h>main(int argv,char*a[]){char str[]="Ilove you pretty because not olny are you elegent but also you make so success";int i;printf("请输入outch或outch-2或outch+6\n");if(*(a[1]+1)==2)for(i=0;i<=1;i++)printf("%c",str[strlen(str)-1-i]);if(*(a[1]+1)==6)for(i=0;i<=5;i++)printf("%c",str[i]);if(argv==1)for(i=0;i<=10;i++)printf("%c",str[i]);return 0;}11-12#include<stdio.h>void f(int n){int d,t;d=n%2;printf("%d",d);t=n/2;if(t>=1) f(t);}main(){int num;printf("请输入一个10进制的数\n"); scanf("%d",&num);f(num);return 0;11-13#include<stdio.h>int f(int n){int t=0;if(n!=0) return n+f(n-1);else return 0;}main(){int a,s;printf("请输入a的值\n");scanf("%d",&a);printf("%d",f(a));}11-14#include<stdio.h>#define N30struct stud{char num[5],name[10]; int s[4];double ave;};void readrec(struct stud*ps);void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name);for(j=0;j<4;j++) printf("%3d",ps[i].s[j]);printf("%6.1f\n",ps[i].ave);}}14-12#include<stdio.h>#define N30struct stud{char num[5],name[10];int s[4];double ave;};void readrec(struct stud*ps);void write (struct stud*ps);main(){struct stud student[N];readrec(student);write(student);return 0;}void readrec(struct stud*ps){int i,j;for(i=0;i<N;i++){gets(ps[i].num);gets(ps[i].name);ps[i].ave=0;for(j=0;j>4;j++){scanf("%d",&ps[i].s[j]);ps[i].ave+=ps[i].s[j]/4.0;} getchar();}void write (struct stud*ps){int i,j;for(i=0;i<N;i++){printf("%s %s",(ps+i)->num,ps[i].name); for(j=0;j<4;j++) printf("%3d",ps[i].s[j]); printf("%6.1f\n",ps[i].ave);}}14-13#include<stdio.h>#include<stdlib.h>struct student {int date;struct student*next;};typedef struct student SLIST;SLIST * create_slist(){ int c;SLIST*h,*s,*r;h=(SLIST*)malloc(sizeof(SLIST));r=h;printf("请输入整形数据并以-1来结束\n"); scanf("%d",&c);while(c!=-1){s=(SLIST*)malloc(sizeof(SLIST)); s->date=c;r->next=s;r=s;scanf("%d",&c);}r->next='\0';return h;}int maxaval(SLIST*head){int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next)if(p->date>m) m=p->date; return m;}SLIST *maxadd(SLIST*head) {int m;SLIST *p,*pmax;p=head->next;m=p->date; pmax=p;for(p=p->next;p;p=p->next) if(p->date>m) pmax=p; return pmax;}main(){SLIST *add;add=create_slist();printf("%d\n", maxaval(add)); printf("%d",maxadd(add));。