C新教材课后习题参考答案汇总

  • 格式:doc
  • 大小:183.00 KB
  • 文档页数:24

第一章一、判断题第二章三、填空题1、1个2、11.53、28 4 54、运算符的优先级结合性5、double6、int k1=7,k2=7; -27、2.5 7.58、2.0000009、double型10、ASCII码第三章二、阅读下列程序,写出运行结果1、567811, 212、n=69 k=963、1 4 40 4 44、3 1 3 3 3 21 1 0 0 1 05、(1)i的值为52,c的值为‟$‟,f的值为9.17,d1的值为3.141593 (2)i的值为52,c的值为‟9‟,f的值为0.17,d1的值为3.141593 (3)i的值为52,c的值为‟9‟,f的值为0.17,d1的值为3.141593 6、3.00%5.00%6.00 7.483三、程序设计题1、#define PI 3.1415#include “stdio.h”main(){ float r,h,v;printf(“input r,h:”);scanf(“%f,%f”,&r,&h);v=PI*r*r*h;printf(“v:%f”,v);}2、#include “stdio.n”main(){ char a,b,c;printf(“input a,b,c:”);scanf(“%c,%c,%c”,&a,&b,&c);printf(“%c,%d\n”,a,a);printf(“%c,%d\n”,b,b);printf(“%c,%d\n”,c,c);}3、#include “stdio.h”main(){int k;printf(“k=”);scanf(“%d”,k);printf(“%o,%x”,k,k);}4、#include “stdio.h”main(){printf(“input ch:”);scanf(“%c”,&ch);clrscr();printf(“%c %c\n”,ch,ch);printf(“ %c %c\n”,ch,ch);printf(“ %c %c\n”,ch,ch);printf(“ %c\n”,ch,ch);printf(“ %c %c\n”,ch,ch);printf(“ %c %c\n”,ch,ch);printf(“%c %c\n”,ch,ch);}5、#include “stdio.h”main(){float cj1,cj2,cj3;printf(“input cj1,cj2,cj3:”);scanf(“%f,%f,%f”,&cj1,&cj2,&cj3);printf(“总成绩为:%5.1f,平均成绩为:%4.1f”,c1+c2+c3,( c1+c2+c3)/3);}第四章一、单项选择题二、阅读下列程序,写出运行结果1.F2. Hello!Good morning!Bye-Bye!3. x<y三、程序填空题1. _c>=‟a‟&&c<=‟u‟__c=c-21_______2. scanf(“%d,%d,%d”,&x,&y,&z);y>z四、程序设计题1. #include<stdio.h>#include<math.h>main( )printf(“input x”);scanf(“%f”,&x);if(x>0) printf(“%f”,sqrt(x));else if(x<0) printf(“%f”,fabs(x));else printf(“Bye,Bye”);}2. #include<stdio.h>main( ){ char c;c=getchar( );if(c>=‟A‟&&c<=‟Z‟) putchar(c+32);else c=getchar( );}3. #include<stdio.h>main(){ int score,grade;printf("Input score: ");scanf("%d", &score);grade= score / 10;switch(grade){ case 0:case 1:case 2:case 3:case 4:case 5: printf("grade=E"); break;case 6: printf("grade=D"); break;case 7: printf("grade=C"); break;case 8: printf("grade=B"); break;case 9:case 10:printf("grade=A"); break;default: printf("no score"); break;}}4. #include<stdio.h>main(){int x,sum;scanf(“%d”,&x);if(x>=1000&&x<=9999)sum=x%10+x/10%10+x/100%10+x/1000;printf(“sum=%d”,sum);}5.#include<stdio.h>void main(){double rate,salary,tax;scanf(“%lf”,&salary);if(salary<850) rate=0;else if(salary<1350) rate=0.05;else if(salary<2850) rate=0.10;else if(salary<5850) rate=0.15;else rate=0.20;tax=rate*(salary-850);printf(“tax=%0.2lf\n”,tax);}6.#include<stdio.h>main(){ char c;c=putchar( );if(c>=‟a‟&&c<=‟z‟) c=c+32;else if(c>=‟A‟&&c<=‟Z‟) c=c-32;printf(“%c”,c);}第五章一、单项选择题二、阅读下列程序,写出运行结果1、1 -22、53、1 3 54、a=85、a=3,i=76、1# 3# 21# 1173#7、*#*#三、程序填空题1.fabs(item)>=0.00001n++;2.if(in<0)in=-in;s=0;digit=in%10;in=in/10;3. n!=0n=n/10;4. if(n<0)n=-n;或n=fabs(n);s=s+n%10;四、程序设计题1.#include"stdio.h"main(){int i;long s=0;for(i=1;i<=1000;i++)if(i%2!=0) s+=i;printf(“ld”,s);}2.#include"stdio.h"#include"math.h"main (){int n, m, i, flag,x,y;scanf(“%d %d”,&x,&y);if(x>y){ i=x; x=y;y=i;}for(n=x;n<=y;n++){ m=sqrt(n);flag=0;for(i=2;i<=m;i++){if(n%i==0){flag=1;break;}}if(flag==0)printf("%5d",n);}}3.#include <stdio.h>#include <math.h>void main(){ double s=0;int i;for(i=2; i<=10; i++)s = s+sqrt(i);printf( "%.10f\n", s);}4.#include <stdio.h>void main(){ long s=1, k=1,n;int i;scanf(“%ld”,n);for(i=2; i<=n; i++){ k = k*i;s = s+k;}printf("%ld", s);}5.#include<stdio.h>main(){float s,h;int i;s=100;h=s/2;for(i=2;i<=10;i++){ s+=h*2;h/=2;}printf(“s=%f\th=%f\n”,s,h);}6.#include <stdio.h>void main(){ int cock, hen, chick;for(cock=0; cock<=20; cock++)for(hen=0; hen<=35; hen++)for(chick=0; chick<=100; chick+=3)if(cock+hen+chick==100)if(cock*5+hen*3+chick/3==100)printf( "%d,%d,%d\n", cock, hen, chick);}7.#include <stdio.h>#include <math.h>void main(){ f loat s=0, a=81;int i;s = 81;for(i=1; i<30; i++){a = sqrt(a);s = s+a;}printf("%.3f", s);}第六章一、单项选择题二、阅读下列程序,写出运行结果1、12、1 3 4 53、hello4、hello everybody5、21三、程序填空题1、i==ja[i][j]2、&a[i]i%4==0putchar(…\n‟);3、str[0]s4、#include “math.h”m%i==0h%10==05、gets(s);s[I]!=‟c‟s[j]=‟\0‟;四、编程题1、#include<stdio.h>main(){int a[3][4],i,j,max;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf(“%d”,&a[i][j]);max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if (max<a[i][j])max=a[i][j];printf(“max=%d”,max);}2. main(){char str1[80],str2[40];int i=0,j=0;printf("\n请输入字符串1:");scanf("%s",str1);printf("\n请输入字符串2:");scanf("%s",str2);while(str1[i]!='\0')i++;while(str2[j]!='\0')str1[i++]=str2[j++];str1[i]='\0';printf("\n连接后字符串为%s",str1);}6. #include<stdio.h>#include<math.h>main(){int a[30],i,j,t,n;printf("请输入n的值:");scanf("%d",&n);printf("请输入%d个值:",n);for(i=0;i<n;i++){scanf("%d",&a[i]);if(a[i]<0) a[i]=fabs(a[i]);}for(i=n;i>0;i--)for(j=0;j<i;j++)if(a[j]<a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} for(i=0;i<=n;i++)printf("%4d",a[i]);}7. #include<stdio.h>main(){int f[11],i;f[1]=0;f[2]=1;for(i=3;i<=10;i++)f[i]=f[i-2]+f[i-1];for(i=1;i<=10;i++){if((i-1)%5==0)printf("\n");printf("%5d",f[i]);}}8. #include<stdio.h>#include<string.h>main(){ int i,m;char c[80];scanf("%s",c);m=strlen(c);for(i=0;i<=m;i++){ if(c[i]>='a'&&c[i]<='u'||c[i]>='A'&&c[i]<='U')c[i]=c[i]+5;elseif(c[i]>='v'&&c[i]<='z'||c[i]>='V'&&c[i]<='Z')c[i]=c[i]-21;}puts(c);}9. #include<stdio.h>#define N 100main(){char str[N],nstr[N],ch;int i=0,j=0;printf("文字:");gets(str);printf("字符");scanf("%c",&ch);while(str[i]!='\0'){if(str[i]!=ch){ nstr[j]=str[i];j++;}i++;}nstr[j]='\0';printf("字符串:%s\n",nstr);}第七章一、单项选择题二、阅读下列程序,写出运行结果1、72、1!=12!=23!=63、 64、-5 2 3 7 95、a=1b=1a=1b=26、A+B=97、 68、6,59、0,310、-2三、编程题1.int isprime(int x){int m,i,flag;;m=sqrt(x);flag=0;for(i=2;i<=m,i++){if(x%i==0) {flag=1; break;}}if(flag==1) return 0;else return 1;}2.解法一:#include<stdio.h>#include<math.h>int tgs(int x){int w;w=(int)log10(x)+1;if(x*x%(int)pow(10,w)==x) return 1; else return 0;}main(){int i,w=0;for(i=2;i<=10;i++)if(tgs(i)) {w++;printf(“%4d”,i);}}解法二:#include<stdio.h>int fun(int x){ if(x<10)return !((x*x-x)%10);else return! ((x*x*-x)%100);}main(){int x,y;printf("please enter a interger number:"); scanf("%d",&x);if(x>100 || x<0){printf("data ennor!\n");exit(0);}y=fun(x);if(y) printf("%d yes\n",x);else printf("%d no\n",x);}3. 方法一:lcd(int u, int v){int a, b, t, r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=0){b=a;a=r;}return(u*v/a);}main(){int u, v, h, l;scanf("%d, %d",&u,&v);printf("最小公倍数=%d\n",l);}方法二:hcf(u,v) /*最大公约数*/int u,v;{int a, b, t, r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=0){b=a;a=r;}return (a);}lcd(u,v,h)int u, v, h;{return(u*v/h);}main(){int u, v, h, l;scanf("%d, %d",&u,&v);h=hcf(u,v);printf("最小公倍数=%d\n",h); l=lcd(u,v,h);printf("最大公约数=%d\n",l);} 6.方法一(递归法):#include<stdio.h>void itos(int n){int i;if((i=n/10)!=0)itos(i);putchar(n%10+‟0‟);main(){int number;printf(“\n输入整数:”); scanf(“%d”,&number);if(number<0){putchar(…-‟);number=-number; }itos(number);}方法二(非递归法):string(int n){char str[10];int i;{putchar(…-‟);n=-n; }i=0;do{str[i++]=n%10+‟0‟;n=n/10;}while(n>0);while(--i>=0)putchar(str[i]);}9. #include<stdio.h>double mp(double x,double y){double rs=1;while(y--!=0)rs=rs*x;return(rs);}double mpp(double x,double y){if(y==1)return x;else return x*mpp(x,y-1);}main(){ double x; int n;scanf("%lf,%d",&x,&n);printf("%f\n",mp(x,n));printf("%f\n",mpp(x,n));}11. #include<stdio.h>#define MAX 1000main(){int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;printf(“\n输入十六进制数”);while((c=getchar())!=‟\0‟&&i<MAX&&flag1){if(c>=‟0‟&&c<=‟9‟||c>=‟a‟&&c<=‟f‟||c>=‟A‟&&C<=‟F‟) {flag=1;t[i++]=c;}else if(flag) {t[i]=‟\0‟;printf(“\n十进制数%d\n”,htoi(t));}}} htoi(char s[ ]){int i,n;n=0;for(i=0;s[i]!=‟\0‟;i++){if(s[i]>=‟0‟&&s[i]<=‟9‟) n=n*10+s[i]-…0‟;if(s[i]>=‟a‟&&s[i]<=‟f‟) n=n*16+s[i]-…a‟+10;if(s[i]>=‟A‟&&s[i]<=‟F‟) n=n*16+s[i]-…A‟+10;}return(n);}12.递归方法:#include "stdio.h"main(){int n;int fact();scanf(“%d”,&n)printf("\n:%d!=%d\n",n,fact(n));}int fact(j)int j;{int sum;if(j==0)sum=1;elsesum=j*fact(j-1);return sum;}第八章一、单项选择题二、程序设计题1、#define mod(i,j) (i)%(j)main(){int x,y,z;printf("imput two integer:\n");scanf("%d%d",&x,&y);z=mod(x,y);printf("%d\n",z);}2、#define l ower(i) (i)>=‟a‟&&(i)<=‟z‟?(i)-32:imain(){char x,y;printf("imput a lowercase:\n");scanf("%c",&x);y=lower(x);printf("%c\n",y);}第九章一、单项选择题二、阅读下列程序,写出运行结果1、HELLO!2、ef3、3,5,5,34、-95、CDG三、程序填空题1、num=*bnum=*c2、*(a+i)=*(a+j)*(a+j)3、char *str*p!=‟\0‟*str=‟\0‟;4、char *s*s-…0‟n*flag5、scanf(“%d”,&n);n==7?weekname[0]:weekname[n]四、程序设计题1、main(){int *a,*b,*c,num;printf("输入3个数:");scanf("%d%d%d",a,b,c);if (*a<*b) {num=*a;*a=*b;*b=num;}if (*a<*c) {num=*a;*a=*c;*c=num;}if (*b<*c) {num=*b;*b=*c;*c=num;}printf("%d,%d,%d\n",*a,*b,*c);getch();}2、#include <stdio.h>main(){int i,m,n,k,mx,nx,*a[10],*p=a;for(i=0;i<10;i++,p++)scanf("%d",p);p=a;mx=nx=*p;for(i=1,m=1;i<9;i++){if(mx<*(p+i)){m=i;mx=*(p+i);}}for(i=1,n=1;i<9;i++){if(nx>*(p+i)){n=i;nx=*(p+i);}}k=*(p+m);*(p+m)=*(p+n);*(p+n)=k;printf("The array has been reverted:\n");for(p=a;p<a+10;p++)printf("%d ",*p);getch();}#include "stdio.h"#include "conio.h"main(){char *c;int letters=0,space=0,digit=0,others=0;printf("please input some characters\n");while((*c=getchar())!='\n'){if(*c>='a'&&*c<='z'||*c>='A'&&*c<='Z')letters++;else if(*c==' ')space++;else if(*c>='0'&&*c<='9')digit++;elseothers++;}printf("all in all:char=%d space=%d digit=%d others=%d\n",letters, space,digit,others);getch();}4、#include "stdio.h"#include "string.h"main(){char *string,*i,*j;int m,n;printf("please input a string:\n");gets(string);m=strlen(string);for(i=string,j=string+m-1;i<=string+(m-1)/2;i++,j--){if (*i!=*j) break;}if (i<j)printf("%s不是回文",string);elseprintf("%s是回文",string);getch();5、#include "stdio.h"main(){char *str;int i=0;printf("please input a string:\n");gets(str);while(str[i]!='\0'){ if(str[i]>='a'&&str[i]<='z')str[i]=str[i]-32;i++;}printf("%s\n",str);getch();}7、#include "stdio.h"#include "conio.h"main(){char str[100],*p;printf("please input a string:\n");gets(str);for(p=str;*p;p++){if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')*p=*p+5;}printf("%s\n",str);getch();8、#include "stdio.h"main(){int x[3][4],i,j,m,*p[3];for(i=0;i<3;i++) p[i]=x[i];for(i=0;i<3;i++)for(j=0;i<4;j++) *(p[i]+j)=x[i][j];m=x[0][0];for(i=0;i<3;i++)for(j=0;i<4;j++){if (m<*(p[i]+j)) m=*(p[i]+j);}printf("%d\n",m);getch();}9、#include <stdio.h>void itostr(char *,long);/*函数声明*/void reverse(char *);void itostr(char *str,long n){int sign;char *strtmp=str;if(n<0)/*当负数是保存符号,并把n取绝对值*/ {sign=-1;n=-n;}else sign=1;do /*用循环把整数转成倒排的2进制*/ {*str++=n%2+'0';}while((n/=2)>0);if(sign<0)*str++='-';*str='\0';reverse(strtmp);/*把倒排的2进制再倒回到正常*/ }void reverse(char *str)/* 字符串倒排函数*/ {char *t;int c;t=str+strlen(str)-1; /*指针t指向串末尾*/for(;str<t;str++,t--)/*倒排动作*/{c=*str;*str=*t;*t=c;}}main(){char *p,s[6];int n;char str[40];p=s;gets(p);n=*p-'0';while(*(++p)!='0') n=n*16+(*p)-'0';itostr(str,n);printf("\n %s",str);getch();}10、#include <stdio.h>#include <string.h>main(){char str[100],*p,*q;printf("please input a string:");gets(str);for(p=str;*p;p++){for(q=p;*p=*q;q++);strcpy(p+1,q);}printf("result:%s\n",str);getch();}第十章一、选择题二、程序阅读题1、7,32、10,x三、程序填空题1、p!=nullc++;p->next2、i++<3old=p->ageq->name,q->age3、&a->x&a->ysqrt(a->x*a->x+a->y*a->y)第十一章一、选择题二、填空1、字符流或二进制数据流2、文本文件3、EOF4、标准输出、标准出错输出5、返回NULL6、fseek(fp,32,0)三、程序填空题1、#include<stdio.h>FILE *fp;“abc.dat”,”ab”fclose(fp);2、int zm=0,qt=0;ch=fgetc(fp)qt++3、int n=1;gets(fname);!feof(in)四、程序设计题(略)。