第一篇:c語言程序設計(科學出版社)課后習題解答
第3章習題解答
第1章
1.C 語言程序主要由預處理命令、函數(shù)、注釋等組成。
2.填空
(1)分號
(2)main(3)stdio.h 3.源程序:
#include
printf(“*************************n”);printf(“Hello World!n”);
printf(“*************************”);} 4.源程序:
#include
int a, b, c;/* 定義變量 */
scanf(“%d”, &a);/* 輸入第一個整數(shù) */ scanf(“%d”, &b);/* 輸入第二個整數(shù) */ c=a-b;/*
計算差 */
printf(“%d-%d=%d”,a,b,c);/* 輸出結果 */ } 5.(1)
(3)printf(“s=%dn”,s);
第2章
1.(1)c(2)a(3)b g(4)a d e(5)d
2.a.5 b.295
c.4 d.29 e.9 3.a.x=4,y=6
b.x=4,y=3 f.x=3,y=6 4.16 5.#include
int a,b,c;
scanf(“%d%d”,&a,&b);c=a*b;
printf(“%d*%d=%d”,a,b,c);}
第3章
1.(1)b(2)b(3)d(4)a(5)b 2.(1)&a,&b(2)l,s
3.printf(“x=%.2f,y=%.2fn”,x,y);
4.#include
int num1,num2,num3,sum;
float average;
scanf(“%d%d%d”,&num1,&num2,&num3);
sum=num1+num2+num3;
average=sum/3.0;
printf(“sum=%d,average=%.2fn”,sum,average);} 5.#include
int hour,minute,second,total;/* 定義變量代表時、分、秒和總秒數(shù) */
scanf(“%d”,&total);
hour=total/3600;
minute=total%3600/60;
second=total%3600%60;
printf(“%dhours:%dminutes:%dsecondsn”,hour,minute,second);}
第4章
1.(1)a(2)b(3)b(4)b
(5)b 2.0 3.(1)6(2)4(3)1(4)1 4.#include
int x,y;
scanf(“%d”,&x);
if(x>-5 && x<0)
y=5*x;
if(x == 0)
y=-1;
if(x>0 && x<10)
y=2*x+1;
printf(“x=%d,y=%dn”,x,y);} 5.#include
int score,rank;/* score 表示成績,rank 表示級別 */
printf(“Please input score:”);
scanf(“%d”,&score);
rank=score/10;
switch(rank)
{
case 10:
case 9: printf(“成績等級為:An”);break;
case 8: printf(“成績等級為:Bn”);break;
case 7: printf(“成績等級為:Cn”);break;
case 6: printf(“成績等級為:Dn”);break;
default:printf(“成績等級為:En”);break;
} } 6.#include
int n;
printf(“Please input the digit:”);
scanf(“%d”,&n);
switch(n)
{
case 1:printf(“Jan n”);break;
case 2:printf(“Feb n”);break;
case 3:printf(“Mar n”);break;
case 4:printf(“Apr n”);break;
case 5:printf(“May n”);break;
case 6:printf(“Jun n”);break;
case 7:printf(“Jul n”);break;
case 8:printf(“Agu n”);break;
case 9:printf(“Sep n”);break;
case 10:printf(“Oct n”);break;
case 11:printf(“Nov n”);break;
case 12:printf(“Dec n”);break;
} }
第5章
1.(1)b(2)a(3)b(4)d(5)d 2.7,1 3.y=-1 4.m=6 5.10,14 6.3 7.5
8.ABABCDCD 9.# include
int i;
long int sum=0;
for(i=2;i<=200;i+=2)
sum+=i;
printf(“2+4+6+...+200=%ld”,sum);} 10.#include
long int n;
int sum = 0;
printf(“Please input the nber:”);
scanf(“%ld”,&n);
while(n!= 0)
{
sum += n % 10;
n /= 10;
}
printf(“%dn”, sum);}
第6章
1.(1)d(2)b(3)d(4)c
(5)a 2.11 3.3 4.5689 5.12,6
6.(1)i--(2)n
7.(1)char k;
(2)i
float a[10];
int i;
float sum=0,average;
for(i=0;i<10;i++)
{
printf(“a[%d]=?”,i);
scanf(“%f”,&a[i]);
sum+=a[i];
}
average=sum/10;
printf(“average is %.2fn”,average);} 9.#include
int a[N],i,target,found;
for(i=0;i scanf(“%d”,&a[i]); printf(“Please input a number:”); scanf(“%d”,&target); i=0; while(i i++; found = i printf(“%dn”,found);} 10.#include char str[N]; int len=0,i=0; printf(“Please input a string:”); gets(str); while(str[i++]!= 0)len++; printf(“the length of string is %d.n”,len);} 第7章 1.21 2.136 3.16 4.(1)func (2)m++ 5.9 6.1,6,3,2,3 7.2,5,1,2,3,-2 8.#include int a,b,c,max; printf(“Please input three numbers:”); scanf(“%d%d%d”,&a,&b,&c); max=fun(a,b,c); printf(“Max is %d.n”,max);} int fun(int a,int b,int c){ int max; max= a>b?(a>c?a:c):(b>c?b:c); return max;} 9.#include int n; printf(“n=?”); scanf(“%d”,&n); printf(“Sum=%ld.n”,sum(n));} long int sum(int n){ if(n = = 1)return 1; else return sum(n-1)+n;} 10.#include int n; printf(“n=?”); scanf(“%d”,&n); fun(n); } void fun(n){ if(n = = 0)return; else { fun(n/2); printf(“%-2d”,n%2); } } 第8章 1.(1)b(2)d(3)b(4)c(5)c 2.8 3.123456789 4.2 3 4 5 6 5.345 6.1 2 3 4 5 6 7.b[i] 8.bcdefgha 9.p=sum 10.#include { char str[80]; char *p1, *p2;gets(str);p1=str; p2=str+strlen(str)-1; while(p1 puts(p1 } 第9章 1.a.#define F(x)(x)*(x)*(x)b.#define F(x)(x)%4 c.#define F(x,y)(x)*(y)<100?1:0 2.a.4 b.4 c.#define DOUBLE(x)2*(x)3.d 4.-20 5.N is undefined 6.7.5 7.y=6 8.#include #define SWAP(a,b){int temp;temp=a;a=b;b=temp;} main(){ int x,y; printf(“x=?”); scanf(“%d”,&x); printf(“y=?”); scanf(“%d”,&y); SWAP(x,y) printf(“x=%d,y=%d.n”,x,y);} 第10章 1.struct student{ int sno; char sname[10]; char sex;}stu1,stu2;2.12 3.合法的有a,b,d c.改成 s.u.rectangle.length=25; e.改成 s.u.circle.radius=5; f.改成 s.u.circle.radius=5; 4.a,b,c,d(說明:變量 b 有確定的值之后,b++是合法的。)5.改為 typedef struct product { char name[10];float price;}PRODUCT; PRODUCT products[10]; 6.(1)struct employee(2)printemp(emp)7.2 4 3 9 8 8.#include int hour; int minute; int second;}; main(){ struct time_struct time; printf(“Input time?n(Example 18:28:38)n”); scanf(“%d:%d:%d”,&time.hour,&time.minute,&time.second); printf(“Time is %d:%d:%dn”,time.hour,time.minute,time.second);} 9.#include int hour; int minute; int second;}time; void enter_time();void display_time();main(){ enter_time(); display_time();} void enter_time(){ printf(“Enter the time(example 18:28:38)?”); scanf(“%d:%d:%d”,&time.hour,&time.minute,&time.second);} void display_time(){ printf(“Time is %d:%d:%d.n”,time.hour,time.minute,time.second);} 10.#include char name[31];/*旅館名稱*/ char address[31];/*旅館地址*/ int grade;/*旅館級別*/ float average_charge;/*平均房價*/ int number;/*房間數(shù)量*/ }h[N]={ {“h1”,“上海路”,5,500.00,80}, {“h2”,“北京大街”,5,480.00,70}, {“h3”,“南京大街”,3,300.50,100} }; main(){ int grade,i; printf(“請輸入級別(3-5)?”); scanf(“%d”,&grade); for(i=0;i if(h[i].grade==grade) printf(“名稱:%sn 地址:%sn 級別:%dn平均房價%.2fn 房間數(shù)量:%dn”,h[i].name,h[i].address,h[i].grade,h[i].average_charge,h[i].number);} 第11章 1.(1)c (2)d(3)b(4)b(5)b 2.Basican 3.fgetc(fp) 4.“record.dat”, “w” 5.#include typedef struct Employee { int id; char name[20]; char gender[20]; int age; char address[20];}Employee; int main(void){ FILE *fp; char another,choice; Employee emp; long int recsize; fp=fopen(“employee.dat”,“rb+”); if(fp==NULL) { fp=fopen(“employee.dat”,“wb+”); if(fp==NULL) { printf(“Can't Open File”); exit(0); } } recsize=sizeof(emp); while(1) { printf(“1.添加記錄 2.顯示男員工 3.退出n”); printf(“Enter your choice(1-3):”); fflush(stdin); scanf(“%c”,&choice); switch(choice) { case'1': fseek(fp,0,SEEK_END); another='Y'; while(another=='Y'|| another=='y') { printf(“輸入信息(id 姓名 性別 年齡 住址):n”); scanf(“%d %s %s %d %s”,&emp.id,&emp.name,&emp.gender,&emp.age,&emp.address); fwrite(&emp,recsize,1,fp); printf(“是否繼續(xù)(Y/N): ”); fflush(stdin); another=getchar(); } break; case '2': printf(“學號t 姓名t性別t 年齡t住址n”); rewind(fp); while(fread(&emp,recsize,1,fp)==1) if(strcmp(emp.gender,“男”)==0) printf(“%dt%st%st%dt%sn”,emp.id,emp.name,emp.gender,emp.age,emp.address); break; case '3': fclose(fp); exit(0); } } } 6.#include“stdio.h” #include“stdlib.h” #define M 2 #define stu struct student stu { int num; char name[20]; float s1; float s2; float s3; float avg;};main(){ stu st[M]; FILE *fp; int i; printf(“請輸入 5 名同學生的成績,按照學號,姓名,成績 1,成績2,成績 3 的順序,中間用空格隔 開:n”); for(i=0;i { scanf(“%d%s%f%f%f”,&st[i].num,st[i].name,&st[i].s1,&st[i].s2,&st[i].s3); st[i].avg=(st[i].s1+st[i].s2+st[i].s3)/3; } if((fp=fopen(“stud.rec”,“wb”))==NULL) { printf(“cannot open filen”); } for(i=0;i { if(fwrite(&st[i],sizeof(stu),1,fp)!=1) printf(“file write errorn”); } fclose(fp); fp=fopen(“stud.rec”,“rb”); printf(“numtnametscore1tscore2tscore3taveragen”); for(i=0;i { fread(&st[i],sizeof(stu),1,fp); printf(“%dt%st%.2ft%.2ft%.2ft%.2fn”,st[i].num,st[i].name,st[i].s1,st[i].s2,st[i].s3,st[i].avg); } fclose(fp);} 第12章 1.a.2 b.4 c.11 d.4 e.-15 f.28 g.-36 2.程序設計分析:先將整數(shù)x 右移4 位,將該整數(shù)機內(nèi)碼的第4 到7 位移至第0 到3 位,然后與0x000f(***1)進行位與運算,所保留的低4 位就是所要的結果 #include int x,y; scanf(“%d”,&x); y=x>>4;y=y&0x000f; printf(“4~7位的十六進制數(shù):y=%#xn”,y);} 3.d 4.(1)p!=NULL (2)p=p->next 5.p=p->next 6.略 第七章 函數(shù)調(diào)用 7-1 寫兩個函數(shù),分別求兩個整數(shù)的最大公約數(shù)和最小公倍數(shù),#include void main(){ int hcf(int,int);int lcd(int,int,int); int u,v,h,l;scanf(“%d,%d”,&u,&v); h=hcf(u,v);printf(“H.C.F=%dn”,h); l=lcd(u,v,h);printf(“L.C.D=%dn”,l);} int hcf(int u,int v){ int t,r;if(v>u){ t=u; u=v; v=t;} while((r=u%v)!=0){ u=v; v=r;} return(v);} int lcd(int u,int v,int h){ return(u*v/h);} 7-2 求方程ax*x+bx+c=0的根,用3個函數(shù)分別求當b*b-4ac大于0,等于0、小于0時的根并輸出結果。從主函數(shù)輸入abc的值。 #include void main(){ void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;printf(“input a,b,c:”);scanf(“%f,%f,%f”,&a,&b,&c); printf(“equation: %5.2f*x*x+%5.2f*x+%5.2f=0n”,a,b,c);disc=b*b-4*a*c;printf(“root:n”);if(disc>0){ greater_than_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2);} else if(disc==0){ equal_to_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2);} else { smaller_than_zero(a,b); printf(“x1=%f+%fitx2=%f-%fin”,p,q,p,q);} } void greater_than_zero(float a,float b){ x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);} void equal_to_zero(float a,float b){ x1=x2=(-b)/(2*a);} void smaller_than_zero(float a,float b){ p=-b/(2*a);q=sqrt(-disc)/(2*a);} 7-3 寫一個判斷素數(shù)的函數(shù),在主函數(shù)輸入一個整數(shù),輸出是否素數(shù)的信息。 #include void main(){ int prime(int);int n;printf(“ninput an integer:”);scanf(“%d”,&n); if(prime(n)) printf(“n %d is a prime.n”,n);else printf(“n %d is not a prime.n”,n);} int prime(int n){ int flag=1,i;for(i=2;i if(n%i==0) flag=0;return(flag);} 7-4 寫一個函數(shù),使給定的一個3x3的二維整形數(shù)組轉置,即行列轉換。#include void main(){ void convert(int array[][3]);int i,j;printf(“input array:n”);for(i=0;i for(j=0;j scanf(“%d”,&array[i][j]); printf(“noriginal array :n”);for(i=0;i for(j=0;j printf(“%5d”,array[i][j]); printf(“n”);} printf(“convert array:n”);for(i=0;i for(j=0;j printf(“%5d”,array[i][j]); printf(“n”);} } void convert(int array[][3]){ int i,j,t;for(i=0;i for(j=i+1;j { t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } 7-5 寫一個函數(shù),是輸入的字符串按反序存放,在主函數(shù)中輸入和輸出字符竄。#include printf(“input string:”);scanf(“%s”,str); inverse(str); printf(“inverse string:%sn”,str);} void inverse(char str[]){ char t;int i,j;for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){ t=str[i]; str[i]=str[j-1]; str[j-1]=t;} } 7-6 寫一個函數(shù),將兩個字符竄連接。 #include concatenate(s1,s2,s);printf(“nThe new string is %sn”,s);} void concatenate(char string1[],char string2[],char string[]){ int i,j;for(i=0;string1[i]!='
主站蜘蛛池模板:
蜜臀av夜夜澡人人爽人人|
国产成人女人在线观看|
午夜家庭影院|
亚洲v国产v天堂a无码二区|
欧美日韩午夜群交多人轮换|
欧美偷窥清纯综合图区|
国产精品久久久久久亚洲|
黑人巨大精品欧美一区二区免费|
中国老太婆bb无套内射|
在线观看无码不卡av|
亚洲乱色熟女一区二区三区丝袜|
免费无码视频|
免费毛片在线看片免费丝瓜视频|
装睡被陌生人摸出水好爽|
99久久精品国产一区二区三区|
欧美日韩一区二区综合|
中国少妇xxxx做受|
久欠精品国国产99国产精2021|
国产成人啪精品视频免费网|
精品av熟女一区二区偷窥海滩|
亚洲国产成人一区二区在线|
国产成人av乱码在线观看|
中文幕无线码中文字蜜桃|
ass日本丰满熟妇pics|
东京热久久综合久久88|
亚洲精品久久久av无码专区|
五月激激激综合网亚洲|
漂亮人妻被中出中文字幕久久|
久久2017国产视频|
男受被做哭激烈娇喘gv视频|
亚洲欧洲日韩综合色天使|
牛鞭伸入女人下身的真视频|
人妻熟妇乱又伦精品hd|
日本一区二区三区日本免费|
国精产品一区一区二区三区mba|
好爽又高潮了毛片免费下载|
欧美巨大黑人极品精男|
妇女bbbbb撒尿正面视频|
午夜一区一品日本|
色婷婷综合久色aⅴ五区最新|
挺进邻居丰满少妇的身体|
第二篇:C語言課后習題解答