C语言程序设计(张淑华、朱丽莉版)课后习题参考答案_c语言课后习题及答案
C语言程序设计(张淑华、朱丽莉版)课后习题参考答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课后习题及答案”。
C语言程序设计(张淑华、朱丽莉主编)课后习题解答
(仅供参考)
习
题
一
一、选择题
1.B
2.D
3.B
4.A
5.B 6.C
7.C
二、填空题
1..obj
2.函数
3./* */
4.#include
int a,b;
a,b
三、简答题(略)
习
题
二
一、选择题
1.B
2.B
3.A
4.D
5.A 6.C
7.C
8.A
9.C
10.B 11.A
12.A
13.C
14.A
15.C
二、填空题
1.变量
2.存储数据的单元
3.非0、0
4.(1)a>=0
(2)0 5.1
6.1
7.-30
8.38
9.4 , 7 10.-6 177772
11.9.9
12.7
三、写出下列程序的运行结果
1.0,0,5
2.18
3.64
512
4.5 5.d4,c
四、编程题
1.#include
#define PI 3.1415926
void main()
{
float r,s;
printf(“Please input circinal radiin”);
scanf(“%f”,&r);
s=PI*r*r;
printf(“r=%.2f,s=%.2fn”,r,s);
} 2.#include
void main()
{
char c1,c2;
printf(“Please input a majusculen”);
scanf(“%c”,&c1);
c2=c1>’A’&&c1
printf(“%cn”,c2);
} 3.#include
void main()
{
int a=0,b;
scanf(“%c”,&b);
b=b&a;
printf(“b=%dn”,b);
}
习
题
三
一、选择题
1.C
2.C
3.A
4.C
5.D 6.原题第2行应为 c=(c-=a-5),(a=b,b+3);答案为B 否则输出结果为5,0,5 7.D
8.C
9.A
10.B
二、填空题
1.-50 300、a=-50,b=300
a=-50
b=300 2.10 20 30、10,20,30、a=10,b=20,c=30 3.15、0、0
三、写出下列程序的运行结果
1.a=789.654321,a= 789.65,a= 789.65432100,a=789.654321 2.b=15,b=17,b=f
3.c=1,x=0,y=0,z=1
4.21
20,20 5.在TC环境下为216,125
在VC环境下为 216,180 6.a=A,b=d,c=F
7.8.x=4.500000,y=4,x+y=8.500000
四、编程题
1.#include
void main()
{
printf(“**********************************n”);
printf(“
HAPPY NEW YEAR!
n”);
printf(“**********************************n”);
} 2.
9,4,12,12
(1)#include
void main()
{
int a=5,b=8,c=10,m,max;
m= a>b?a:b;
max=c>m?c:m;
printf(“max=%dn”,max);
}
(2)#include
void main()
{
int a,b,c,m,max;
scanf(“%d,%d,%d”,&a,&b,&c);
max=a>b?a:(b>c?b:c);
printf(“max=%dn”,max);
}
习
题
一、选择题
1.D
2.D
3.C
6.A
7.C
8.C
二、填空题
1.6、5、5
2.(a%3==0||a%7==0)
三、写出下列程序的运行结果
1.4
2.64
3.a=7,b=4
四、编程题
1.另见填空题3
#include
void main(){ float a,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{ t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf(“%.2f,%.2f,%.2fn”,a,b,c);
} 2.#include
void main()
四
4.A
9.D 3.(1)a>b
4.46
5.D
10.B
(2)a=c;(3)a,b,c
5.*#
{
int a,b;
scanf(“%d,%d”,&a,&b);
if(a%b==0)
printf(“%d is divisible by %dn”,a,b);
else
printf(“%d is not divisible by %dn”,a,b);
} 3.(1)#include
void main()
{ int x,y;
scanf(“%d”,&x);
if(x>-5&&x
y=x;
printf(“y=%dn”,y);
else if(x==0)
y=x-1;
printf(“y=%dn”,y);
else if(x>0&&x
y=x+1;
printf(“y=%dn”,y);
else
printf(“Data out of rangen”);
}(2)#include
void main(){ int x,y;
scanf(“%d”,&x);
switch(x)
{
case-1:
case-2:
case-3:
case-4:y=x;printf(“y=%dn”,y);break;
case 0:y=x-1;printf(“y=%dn”,y);break;
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:y=x+1;printf(“y=%dn”,y);break;
default: printf(“Data out of rangen”);
} 4.#include
void main(){
long num;
int indiv,ten,hundred,thousand,tenthousand,place;/*分别代表个位、十位、百位、千位、万位和位数*/
printf(“Please Input a integer(0~99999):”);
scanf(“%ld”,&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else
place=1;
printf(“place=%dn”,place);
printf(“For each digit:”);
tenthousand=num/10000;
thousand=(int)(num-tenthousand*10000)/1000;hundred=(int)(num-tenthousand*10000-thousand*1000)/100;ten=(int)(num-tenthousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-tenthousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{
case 1:printf(“%d”,indiv);break;
case 2:printf(“%d,%d”,ten,indiv);break;
case 3:printf(“%d,%d,%d”,hundred,ten,indiv);break;
case 4:printf(“%d,%d,%d,%d”,thousand,hundred,ten,indiv);break;
case 5:printf(“%d,%d,%d,%d,%d”,tenthousand,thousand,hundred,ten,indiv);
} }
习
题
五
一、选择题
1.D
2.C
3.D
4.B
5.C 6.B
7.C
8.B
9.B
10.B
二、填空题
1.(1)x>=0 或!(x
(2)x
(2)j%3 或 j%3!=0 3.(1)pi
(2)fabs(t)
(3)4
三、写出下列程序的运行结果
1.1
2.y=-1
3.4
4.a=2,b=8
5.*7 6.45
7.1
8.s=0
四、编程题
1.#include
void main(){
int i,j,k;for(i=1;i
printf(“ “);/*输出*号前面的空格*/
for(k=1;k
printf(“*”);/*输出*号*/
printf(“n”);/*输出完一行*号后换行*/ }
} 2.
#include “stdio.h” void main(){
int num,n1,n2,p=1;
scanf(“%d”,&num);while(num){ n1=num/10;
n2=num%10;
p*=n2;
num=n1;}
printf(“num=%d,p=%dn”,num,p);} 3.
#include “stdio.h” void main(){
int i;
float s1,s2,s3,s4,s5,sum,avg;
for(i=1;i
{
printf(“Please enter a five subjects scoren”);
scanf(“%f,%f,%f,%f,%f”,&s1,&s2,&s3,&s4,&s5);
sum=0;
sum+=s1+s2+s3+s4+s5;
avg=sum/5;
printf(“%d individuals,the average score is %.2fn”,i,avg);
} }
习
题
六
一、选择题
1.D
2.C
3.D
4.D
5.B 6.A
7.C
8.D
9.A
二、填空题
1.地址常量
2.非0
3.3.(1)j=9
(2)j>=0
4.(1)0
(2)6 5.(1)gets(temp);
(2)strcpy(temp,str);
6.(1)i
(2)a[i][i] 7.(1)&a[i]
(2)i%4==0
(3)printf(“n:”);
8.(1)s[i]>=48 && s[i]='0' && s[i]
(2)d[j]=0;或d[j]=' ';
三、写出下列程序的运行结果
1.13715
2.s=15
3.58
4.11
5.7 0 6.how
7.max=9,row=1,col=0
8.6,4,3,2,are you? I am fine
四、编程题
1.#include
#define N 10
void main(){ int a[32],x,k,r,i;
printf(“Please input an integer:“);
k=-1;
do
{ r=x%2;
a[++k]=r;
x/=2;
}
while(x>=1);
for(i=k;i>=0;i--)printf(“%1d”,a[i]);printf(“n”);
} 2.#include
#define N 10
void main(){ int a[N+1]={10,20,30,40,50,60,70,80,90,100};
int t1,t2,num,i,j;
printf(“array a:n”);for(i=0;i
printf(“%d”,a[i]);
printf(“n”);
printf(“Insert data:”);
scanf(“%d”,&num);
if(num>a[N-1])
a[N]=num;
else
{ for(i=0;i
{ if(a[i]>num)
{ t1=a[i];
a[i]=num;
for(j=i+1;j
{ t2=a[j];a[j]=t1;t1=t2;}
break;
}
}
}
printf(”Current array a:n”);for(i=0;i
#define N 6
void main(){ int i,j,a[N][N];for(i=1;i
a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i
printf(“%5d ”,a[i][j]);
printf(”n”);
} } 4.
#include “stdio.h”
void main()
{ char s[80],t[80],d;
int i,j;
printf(“Please enter a string:n”);
gets(s);
printf(“delete?n”);
d=getchar();
for(i=j=0;s[i]!=' ';i++)
if(s[i]!=d){ t[j]=s[i];j++;} t[j]=' ';printf(“%sn”,t);
} 5.#include “stdio.h”
#define N 8
void main()
{
int s[N][3],i,j,k,m,t1;
float a[N],sum,t2;
for(i=0;i
{
printf(“Please enter the %d-th three subjects scoren”,i);
sum=0;
for(j=0;j
{
scanf(“%d”,&s[i][j]);
sum+=s[i][j];
}
a[i]=sum/3;
}
for(i=0;i
{
k=i;
for(j=i+1;j
if(a[k]
if(k!=i)
{ for(m=0;m
{ t1=s[i][m];s[i][m]=s[k][m];s[k][m]=t1;} /*交换整行的值*/
t2=a[i];a[i]=a[k];a[k]=t2;
}
}
for(i=0;i
{
printf(“%d-th ”,i);
for(j=0;j
printf(“%d ”,s[i][j]);
}
printf(“%.2fn”,a[i]);
}
习
题
七
一、选择题
1.C
2.A
3.B
4.B
5.A 6.D
7.C
8.D
9.C
10.C
二、填空题1.struct STRU t[20];
2.x.x、x.y、x.z.y、x.z.z
3.4,8
三、写出下列程序的运行结果
1.6
2.0
3.4E5S
4.21
5.Zhao,m,85,90
四、编程题
1.#include “stdio.h”
#define N 45
struct student
{
char name[20];
char sex[7];
int age;
int score;
}std[N];
void main()
{
int i,max=0,rowi;
for(i=0;i
{
printf(“Please enter the data of the %d-th student:n”,i);
printf(“name:”);
scanf(“%s”,std[i].name);
printf(“sex:”);
scanf(“%s”,std[i].sex);
printf(“age:”);
scanf(“%d”,&std[i].age);
printf(“score:”);
scanf(“%d”,&std[i].score);
if(max
{
max=std[i].score;
rowi=i;
}
}
printf(“name:%s ”,std[rowi].name);
printf(“sex:%s ”,std[rowi].sex);
printf(“age:%d ”,std[rowi].age);
printf(“score:%dn”,std[rowi].score);
} 2.#include “stdio.h”
#define N 5
struct student {
char name[20];
char sex[7];
int score;}std[N];void main(){
int i,ml=0,fml=0;
float sum=0,avg;
for(i=0;i
{
printf(“Please enter the data of the %d-th student:n”,i);
printf(“name:”);
scanf(“%s”,std[i].name);
printf(“sex:”);
scanf(“%s”,std[i].sex);
if(std[i].sex[0]=='m'||std[i].sex[0]=='M')
ml+=1;else
fml+=1;
printf(“score:”);
scanf(“%d”,&std[i].score);
sum+=std[i].score;}
avg=sum/N;
printf(“The number of male students:%dn”,ml);
printf(“The number of female students are:%dn”,fml);} printf(“The average scores are:%.2fn”,avg);
习
题
八
一、选择题
1.A
2.C
3.D
4.A
5.C 6.A
7.D
二、填空题
1.(1)high=mid-1
(2)low=mid+1
2.(1)int m
(2)m%i==0
(3)return s 3.(1)max=x[i][j]
(2)max
三、写出下列程序的运行结果
1.625
2.Qian,p,95,92
3.2
4.12
5.h=8
四、编程题
1.#include “stdio.h”
void main()
{
int prime(int);
int x;
printf(“nPlease input an integer:”);
scanf(“%d”,&x);
if(prime(x))
printf(“n%d is prime.n”,x);
else
printf(“n%d is not prime.n”,x);} int prime(int n){
int flag=1,i;
if(n%i==0)
for(i=2;i
flag=0;
return(flag);
} 2.#include “stdio.h”
void delask(char a[])
{ int i,j;
char b[80];
for(i=j=0;a[i]!=' ';i++)
if(a[i]!='*')
{
while(a[i]!=' '){
b[j]=a[i];
j++;
i++;}
break;
}
b[j]=' ';
for(i=0;b[i]!=' ';i++)
a[i]=b[i];
a[i]=' ';
}
void main()
{
char s[80];
printf(“Please enter a string:n”);
scanf(“%s”,s);
delask(s);
printf(“%sn”,s);
}
3.#include “stdio.h”
struct date
{
int day;
int month;
int year;
};
int days(struct date dt)
{
int y,m,d,ds[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,s=0;
y=dt.year;
m=dt.month;
d=dt.day;
if(y%4==0 && y%100!=0||y%400==0)
ds[1]=29;
/* 计算每月的天数是本年第几天 */
switch(m)
{ case 1:for(i=0;i
s+=ds[i];
s+=d;
break;
case 2:for(i=0;i
s+=ds[i];
s+=d;
break;
case 3:for(i=0;i
s+=ds[i];
s+=d;
break;
case 4:for(i=0;i
s+=ds[i];
s+=d;
break;
case 5:for(i=0;i
s+=ds[i];
s+=d;
break;
case 6:for(i=0;i
s+=ds[i];
s+=d;
break;
case 7:for(i=0;i
s+=ds[i];
s+=d;
break;
case 8:for(i=0;i
s+=ds[i];
s+=d;
break;
case 9:for(i=0;i
s+=ds[i];
s+=d;
break;
case 10:for(i=0;i
s+=ds[i];
s+=d;
break;
case 11:for(i=0;i
s+=ds[i];
s+=d;
break;
case 12:for(i=0;i
s+=ds[i];
s+=d;
break;
}
return(s);
}
void main()
{
struct date ymd;
int dys;
printf(“Input year month and dayn”);
scanf(“%d,%d,%d”,&ymd.year,&ymd.month,&ymd.day);
dys=days(ymd);
printf(“Today is the first %d days in the middle of this year.n”,dys);
}
习
题
九
一、选择题
1.A
2.D
3.A
4. D
5.B
二、写出下列程序的运行结果
1.10
2.9
3.***
4.12 6. 1
三、编程题
1.#include “stdio.h”
#define N 10
float fmax=0,fmin=0;
float average(float fscore[],int n)
{
int i;
float faver,fsum=fscore[0];
fmax=fmin=fscore[0];
for(i=1;i
{
if(fscore[i]>fmax)
6.A
5.8
fmax=fscore[i];
else if(fscore[i]
fmin=fscore[i];
fsum+=fscore[i];
}
faver=fsum/n;
return(faver);
}
void main()
{
float fave,fnumb[N];
int i;
for(i=0;i
scanf(“%f”,&fnumb[i]);
fave=average(fnumb,N);
printf(“max=%.2f min=%.2f average=%.2fn”,fmax,fmin, fave);
} 2.此题有误,用宏定义较难实现。以下程序仅供参考 #include “stdio.h” void main(){
char strg[30]=“C Language Program”,c;
int i=0;
while((c=strg[i])!=' ')
{
i++;
if(c>='a' && c
c=c-32;
else
if(c>='A' && c
c=c+32;
printf(“%c”,c);
}
printf(“n”);} 3.#include “stdio.h”
#include “math.h”
#define S(a,b,c)((a+b+c)/2)
#define AREA(a,b,c)sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))
void main()
{
float a,b,c;
printf(“Please input a,b,c:”);
scanf(“%f,%f,%f”,&a,&b,&c);
if(a+b>c && a+c>b && b+c>a)
printf(“%.2fn”,AREA(a,b,c));
else
printf(“It is not a triangle!n”);
}
习
题
十一、选择题
1.B
2.D
3.D
4.D
5.C 6.A
7.A
8.C
9.D
10.A 11.A
12.B
13.C
14.A
15.C
二、写出下列程序的运行结果
1.2
2.0
3.105.CBADGFE
6.30,30
7.The data:
i=5
c=B
三、编程题
1.#include
#include
void fun(char *s,int *a,int *b)
{
while(*s!=' ')
{
if(*s>=65 && *s
*a+=1;
/* 可用(*a)++;*/
if(*s>=97 && *s
*b+=1;
/* 可用(*b)++;*/
s++;
}
}
void main()
{
char s[100];
int upper=0,lower=0;
printf(“请输入一串字符:n”);
gets(s);
fun(s,&upper,&lower);
printf(“upper=%d,lower=%dn”,upper,lower);
}
2.#include
void fun(int *p1,int *p2)
{
int p;
p=*p1;
*p1=*p2;
*p2=p;
}
void main()
{
int a,b,*p11,*p22;
4.8 8.4 4 4 45 6 7 8 9 10
scanf(“%d,%d”,&a,&b);
p11=&a;p22=&b;
if(a
printf(“%d,%dn”,a,b);
}
习
题
十一
一、选择题
1.B
2.D
3.B
4.C
5.C 6.C
7.C
8.A
9.D
10.B
二、写出下列程序的运行结果
1.1,2,3,0,0,1,2,3,0,0,2.this_is_a_test20.010000
三、编程题
1.#include “stdio.h”
#include “stdlib.h”
void main()
{
FILE *fp;
char ch;
if((fp=fopen(“test”,“w”))==NULL)
{
printf(“Cannot open the file!n”);
exit(0);
}
printf(“Input a string:n”);
while((ch=getchar())!='!')
{
if(ch>='a' && ch
ch=ch-32;
fputc(ch,fp);
}
fclose(fp);
/* 以下是从文件中读出数据,并在屏幕上显示。在本题中可不写 */
fp=fopen(“test”,“r”);
while((ch=fgetc(fp))!=EOF)
putchar(ch);
printf(“n”);
fclose(fp);
} 2.#include “stdio.h”
#include “stdlib.h”
#define N 5
struct student
{
char num[10];
char name[9];
int score[3];
float avg;
}stu[N];
void main()
{
int i,j,sum;
FILE *fp;
for(i=0;i
{
printf(“Please input the data of the %d-th studentsn”,i);
printf(“studentID:”);
scanf(“%s”,stu[i].num);
printf(“name:”);
scanf(“%s”,stu[i].name);
sum=0;
for(j=0;j
{
printf(“score %d:”,j);
scanf(“%d”,&stu[i].score[j]);
sum+=stu[i].score[j];
}
stu[i].avg=sum/3.0;
}
/* 将数据写入文件 */
fp=fopen(“stud”,“w”);
for(i=0;i
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf(“File write error!n”);
fclose(fp);
/* 以下是从文件中读出数据,并在屏幕上显示。在本题中可不写 */
fp=fopen(“stud”,“r”);
for(i=0;i
{
fread(&stu[i],sizeof(struct student),1,fp);
printf(“%-10s %-10s”,stu[i].num,stu[i].name);
for(j=0;j
printf(“%8d ”,stu[i].score[j]);
printf(“%6.2fn”,stu[i].avg);
}
fclose(fp);
}
C语言程序设计教程课后习题答案第一章 C语言程序设计概述 -习题答案1 算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。答1......
/*练习5-3*/ #include int prime(int m) {int i;for(i=2;iif(m%i==0)break;if(i==m)return 1;elsereturn 2; } main() {int i,m,n,sum=0,a=0;printf("enter m and n:(1scan......
C++语言程序设计(清华大学郑莉)课后习题答案第 一 章 概述1-1 简述计算机程序设计语言的发展历程。解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言......
/*练习7-1*/ #include main() { int a[10],n,sum=0,i; float ave; printf("enter n:\n"); scanf("%d",&n); printf("enter %d ge zheng shu:\n",n); for(i=0;......
高等院校计算机基础教育规划教材《C++程序设计》课后习题参考答案――武汉大学出版社习题1参考答案一、选择题 1.A 2.D二、填空题1.BASIC、FORTRAN、AL_GOL60和COBOL 2.8 3......
