C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案

时间:2019-05-12 16:44:38下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案》。

第一篇:C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案

第1章习题参考答案(17)x==0

1.单项选择题(18)sqrt(fabs(a-b))/(3*(a+b))

(1)

A

(2)

C

(19)sqrt((x*x+y*y)/(a+b))(3)

D

(4)

C

(5)

B2.填空题(1)函数(2)主函数(main)

(3)第printf()2章习题参考答案,scanf()1 .单项选择题((1(53)))

CC C

(2)

B(6)

(C 4)

(7)C

D(B 10)

(C8()1

1)C

D

()(D)

(13)

B 2 .填空题(1)1(2)26(3)6,4,2(4)10 , 6(5)3.000000(6)双精度(double)(7)9(8)字母,数字,下划线

(9)13.700000(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0(13)10,9,11((x<0&&y<0)||(x<0&&z<0)||(y<0||z<015))(16)double

第3章习题参考答案 1 .单项选择题(1)

C

(2)

C

((C 53))

DC(6)

(4)

D

((8)

D

B

()()B

C 10(1

5))

(13C()B(11)

B

(12)

B)

(A 14)

B

2.填空题

(1)用;表示结束(2){ }(3)y=x<0?1:x==0?0:-1(y%4==0&&y%100!=0||y%400==0 4)(5)上面未配对(6)default标号

(7)while,do while,for(8)do while(9)本次

(10)本层 3 .阅读程序,指出结果(1)yes(2)*&(3)ABother(4)28 70(5)2,0(6)8(7)36(8)1

(9)3,1,-1,3,1,-1(10)a=12,y=12(11)i=6,k=4(12)1,-2 4 .程序填空(1)x:y,u:z(m=m/10 2)m=n,m!=0,(t*n/(2*n+1)3)t

, printf(, “%lfn”,2*s)(4)m%5==0,printf(“%dn”,k)(cx 5)cx=getchar(), cx!=front ,(6)double s=0 , 1.0/k

, %lf(7)s>=0

, s int main(){

double x,y;

scanf(“%lf”,&x);

if(x<1)

y=x;

else if(x>=1.0&&x<10)

y=2*x-11;

else

y=3*x-11;

printf(“%lfn”,y);

return 0;}(2).

#include int main(){

double x,y,z,min;

scanf(“%lf%lf%lf”,&x,&y,&z);

if(x>y)

min=y;

else

min=x;

if(min>z)

min=z;

printf(“min=%lfn”,min);

return 0;}(3).

#include int main(){

int y,m,d,flag,s=0,w,i;

scanf(“%d%d%d”,&y,&m,&d);flag=(y%4==0&&y%100!=0||y%400

==0);

w=((y-1)*365+(y-1)/4-(y-1)/100+(y-

1)/400)%7;

for(i=1;i<=m;i++)

{

switch(i)

{

case 1:s=d;break;

case 2:s=31+d;break;

case 3:s=59+d;break;

case 4:s=90+d;break;

case 5:s=120+d;break;

case 6:s=151+d;break;

case 7:s=181+d;break;

case 8:s=212+d;break;

case 9:s=243+d;break;

case 10:s=273+d;break;

case 11:s=304+d;break;

case 12:s=334+d;break;

}

}

if(flag==1&&m>2)

s=s+1;

s=(w+s)%7;

if(s==0)

printf(“星期日n”);

else

printf(“星期%dn”,s);

return 0;}

(4).

#include

int main(){

float p,r;

scanf(“%f”,&p);

if(p<=10)

r=p*0.1;

else if(p>10&&p<=20)

r=10*0.1+(p-10)*0.075;

else if(p>20&&p<=40)r=10*0.1+10*0.075+(p-20)*0.05;

else if(p>40&&p<=60)r=10*0.1+10*0.075+20*0.05+(p-40)

*0.03;

else if(p>60&&p<=100)r=10*0.1+10*0.075+20*0.05+20*0.0

3+(p-60)*0.015;

else if(p>100)r=10*0.1+10*0.075+20*0.05+20*0.0

3+40*0.015+(p-100)*0.01;

printf(“%fn”,r);

return 0;}

5). #include

int main(){

char c;

while((c=getchar())!='n')

{

if(c>='a'&&c<='z')

c=c-32;

putchar(c);

}

return 0;}

(6). #include

int main(){

int m,k=2;

printf(“输入一个正整数:n”);

scanf(“%d”,&m);

while(k

if(m%k==0)

{

printf(“%4d”,k);

m=m/k;

}

else

k++;

printf(“%4dn”,m);

return 0;}

(7). #include

int main(){

int a,n,s=0,p=0,i;

scanf(“%d %d”,&n,&a);

for(i=1;i<=n;i++)

{

p=p*10+a;

s=s+p;

}

printf(“%dn”,s);

return 0;}

8). #include

int main(){

int i,j,k;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

printf(“%5d”,100*i+10*j+k);

return 0;}

9). #include

#include

int main(){

float a=-10,b=10,x,f1,f2,f;

f1=(((2*a-4)*a+3)*a)-6;

f2=(((2*b-4)*b+3)*b)-6;

do

{

x=(a+b)/2;

f=(((2*x-4)*x+3)*x)-6;

if(f*f1<0)

{

b=x;

f2=f;

}

else

{

a=x;

f1=f;

}

}while(fabs(f)>=1e-6);

printf(“%6.2fn”,x);

return 0;}

(10). #include

#include

int main(){

int n=2;

double eps,t,s=0,x;

scanf(“%lf %lf”,&x,&eps);

t=x;

s=t;

while(fabs(t)>=eps)

{

t=-t*(2*n-3)*x*x/(2*n-2);

s=s+t/(2*n);

n++;

}

printf(“%d,%lfn”,n,s);

return 0;}

11). #include

int main(){

unsigned long s,t=0,p=1;

scanf(“%u”,&s);

while(s!=0)

{

if((s%10)%2!=0)

{

t=t+(s%10)*p;

p=p*10;

}

s=s/10;

}

printf(“%un”,t);

return 0;}

第4章习题参考答案 1

.单项选择题((1)(53))

D

(2)

D

DD(6)

(B 4)

(7)B A((8)

D

D 10)

(13D()11)A

B((14 9))(C B)2

.填空题(1)2(2)嵌套

,递归

(态变量3)全局变量,动态变量,局部变量

,静

(extern

4)auto , static , register ,(5)外部变量

(6)编译,运行 3 .阅读程序,指出结果(1)15

(2)5(3)5,4,3(4)i=5

i=2

i=2

i=4

i=2(5)求水仙花数(6)-5*5*5

(7)30(8)0 10

11

12 4 .程序填空(1)float fun(float , float)x+y,x-y , z+y,z-y(2)x,x*x+1

(3)s=0 ,a=a+b 5 .编程题(1).

#include

unsigned int fun(unsigned int);

int main(){

unsigned int s;

scanf(“%u”,&s);

printf(“%un”,fun(s));

return 0;}

unsigned int fun(unsigned int s){

unsigned int p=0;

while(s!=0)

{

p=p+s%10;

s=s/10;

}

return p;}

2). #include

#include

#include void

f2(float,float,float,float);void

f1(float,float,float,float);void f3(float,float,float,float);int main(){

float a,b,c,d;

scanf(“%f %f %f”,&a,&b,&c);

if(a==0)

{

printf(“不是一元二次方程n”);

exit(0);

}

d=b*b-4*a*c;

if(d>0),f1(a,b,c,d);

else if(d==0)

f2(a,b,c,d);

else

f3(a,b,c,d);

return 0;}

void f1(float a,float b,float c,float d){

float x1,x2;

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf(“%.2f ,%.2fn”,x1,x2);

} }

void f2(float a,float b,float c,float d){

float x1,x2;

{

x1=-b/(2*a);

x2=-b/(2*a);

printf(“%.2f ,%.2fn”,x1,x2);

} }

void f3(float a,float b,float c,float d){

float x1,x2;

{

x1=-b/(2*a);

x2=sqrt(-d)/(2*a);

printf(“%.2f+i*%.2fn”,x1,x2);

printf(“%.2f-i*%.2fn”,x1,x2);

} }

3).#include

double p(int,double);

int main(){

int n;

double x;

do

{

scanf(“%d”,&n);

}while(n<0);

scanf(“%lf”,&x);

printf(“%lfn”,p(n,x));

return 0;}

double p(int n,double x){

double pn;

if(n==0)

pn=1;

else if(n==1)

pn=x;

else pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;

return pn;}(4). #include #define RATE 0.053 double fun(float);void display(float,int);int main(){

float dep;

int season;

scanf(“%f %d”,&dep,&season);

display(dep,season);

return 0;} double fun(float d){

return d*RATE;} void display(float d,int s){

int i;余额

printf(“季度

利 n”);息

printf(“n”);

for(i=1;i<=s;i++)

{ printf(“%-4d

n”,i,fun(d),fun(d)*i+d);

%-.2f

%-.2f

printf(“n”);

} }(5). #include double fun(void);int main(){

printf(“%lfn”,fun());

return 0;} double fun(void){

double s=0;

int n=1;while((double)(2*n-1)/((2*n)*(2*n))

>1e-4)

{ s=s+(double)(2*n-1)/((2*n)*(2*n));

n++;

}

}

return s;(6).

#include int fun(int);int main(){

int w;

scanf(“%d”,&w);

printf(“%dn”,fun(w));

return 0;}

int fun(int w){

int n=1,p=1,m;

m=w;

while(m>10)

{

m=m/10;

p=p*10;

n++;

}

return w%p;}

第5章习题参考答案 1、选择题:(1)

C

(2)

B C

(3)

B(4)

B

(5)

A(6)

D

(7)

D

(8)

B、填空题(1)0,9(2)float realArray[100],char strArray[16],int 运算符intArray[1000](3)sizeof(4)6字节 3结果、阅读程序,写出下面程序的运行(1)aa

bb

cc dd(2)ab

c

d(3)ahAMa(4)0010

5)1 3 4 5(6)This is the title.Name 1 is Rosalinda

Name 2 is Zeke is Zeke

The biggest name alpabetically

Zeke

Both names are Rosalinda

(0 7)0

0

0

0

0

0

0 6

0

5 748

0 18

0 24

0 30

0

20 177 36

0 42 42

0

35 4、程序填空(1)a[i][j]!= a[j][i] , 1

(a[maxi] = a[mini] 2)0, a[i] < a[mini] ,maxi = i ,(-999, 3)int a[], int b[], b[i] = a[i], a

#include

int main(){

int a[3][4] = {0, 2,9,7,5,13,6,8,27,11,1,3

};

int i,j,temp;

for(i=0,j=0;j<4;j++){

temp = a[2-i][j];

a[2-i][j] = a[i][j];

a[i][j] = temp;

}

for(i=0;i<3;i++){

for(j=0;j<4;j++)

printf(“%3d”,a[i][j]);

printf(“n”);

}

return 0;}

(2)#include

int main(){

static int a[6][6];

int i,j,t=1;

for(i=0;i<6;i++){

t = i+1;

for(j=0;j

a[i][j] = t--;

}

for(i=0;i<6;i++){

for(j=0;j<6;j++)

printf(“%3d”,a[i][j]);

printf(“n”);

}

return 0;}

(3)

#include

#define M 3

#define N 4

#define R 5

int main(){

a[M][N],b[N][R],c[M][R];

static

int i,j,k;

printf(“Matrix a:n”);

for(i = 0;i < M;i++)

for(j = 0;j < N;j++)

scanf(“%d”,&a[i][j]);

printf(“Matrix b:n”);

for(i = 0;i < N;i++)

for(j = 0;j < R;j++)

scanf(“%d”,&b[i][j]);

for(i = 0;i < M;i ++)

for(j = 0;j < N;j++)

for(k = 0;k < R;k++)

c[i][k] += a[i][j]*b[j][k];

for(i = 0;i < M;i++){

for(j = 0;j < R;j++)

printf(“%3d”,c[i][j]);

int

printf(“n”);

}

return 0;}

(4)#include

#define M 5

int main(){

static int a[M];100,maxi,mini,temp;

int i,max =-1,min =

for(i = 0;i < M;i++)的值

scanf(“%d”,&a[i]);//0~99间

for(i = 0;i < M;i++){

if(max < a[i]){

max = a[i];

maxi = i;

}

if(min > a[i]){

min = a[i];

mini = i;

}

}

temp = a[maxi];

a[maxi] = a[mini];

a[mini] = temp;

for(i = 0;i < M;i++)

printf(“%3d”,a[i]);

return 0;}

3(5)#include

#define M 3

#define N 4

int main(){

static int a[M][N];-1,sumcol=0,sumrow=0;

int max =

int i,j,maxi,col;

for(i = 0;i < M;i++){

sumrow = 0;

for(j = 0;j < N;j++){

scanf(“%d”,&a[i][j]);

sumrow += a[i][j];

}

if(max < sumrow){

max = sumrow;

maxi = i;

}

} caculated?(>0)“);

printf(”which col sum will be

scanf(“%d”,&col);

for(i = 0;i < M;i ++)

sumcol += a[i][col-1];max,printf(“The %dth row's sum is

max=%dn”,maxi+1,max);sum=%dn“,col,sumcol);

printf(”The %dth column's

return 0;}

(6)

#include

#define M 81

int main(){

static char str[M];

int i,count = 0;

char ch;

gets(str);区,以便读入字符数据

fflush(stdin);//清空输入缓冲

found?“);

printf(”Which character will be

ch = getchar();

for(i = 0;i < strlen(str);i++)

if(ch == str[i])

count++;'%c' is %dn“,ch,count);

printf(”The number of character

return 0;}

(7)#include

#include

#define N 10

//同学人数 #define M 5

//课程数 void enter_scores(void);

void average[N][3]);sort_scores(int score[][M], int

void disp_scores(int score[][M]);

void histogram(int n, int score[][M]);

void printchar(int n);static int score[N][M];

static 值,第int aver[N][3];//第1列为均值逆序int main()2列原始顺序,第3列为均 {

int course;

enter_scores();printf(“n===========Oringenal

Score Start=========n”);

disp_scores(score);printf(“n===========Oringenal

Score End===========n”);

Score Start============n“);

printf(”n===========Sorted

sort_scores(score,aver);Score End==============n“);

printf(”n===========Sorted

statisticed?n“);

printf(”nWhich class will be

scanf(“%d”,&course);

histogram(course, score);

system(“Pause”);

return 0;}

/*

输入成绩 */ void enter_scores(){

int i, j;

for(i=0;i

for(j=0;j

scanf(“%d”,&score[i][j]);

aver[i][0] += score[i][j];

}

}

for(i = 0;i < N;i++)

for(j = 1;j < 3;j++)

aver[i][j] = i;}

/* 成绩排序.*/ void average[N][3])sort_scores(int score[][M], int {

int i,j,t;

int temp,tempindex;

for(i = 0;i < N1*t;}

(6)#include

5#define M 5 #define N 3 int sum(int *a);

int main(){

static int a[M][N];

int i,j;

for(i = 0;i < M;i++)

for(j = 0;j < N;j++)

scanf(“%d”,&a[i][j]);

for(i = 0;i < M;i ++)sum: %3dn“, i, sum(a[i]));

printf(”Row %d

return 0;}

int sum(int *ptr){

int i,result = 0;

for(i = 0;i < N;i++)

result += *(ptr+i);

return result;}

题:

第7章习题答案

1、选择

D C

((14))

C

B

(2()C

(3)D

(7)

B

(8))

A A

((69))

(1

3()10)

B(11)D(12)

A

D 2、判断题(1)×

(2)

(3)

√√((√(68)4))

×××

(5)

((79))

(10)√

第8章习题答案、选择题:(A 1)

C

(2)

D

(3)

(4)

A

(5)

D(6)

C

(7)

D

(8)

B 2、填空题(1)

.(成员域访问运算符),-〉(成员域间接访问运算符)(2)

4, 6.0

(3)

enum(4)typedef(5)

age, q->name,q->age

3结果、阅读程序,写出下面程序的运行(1)p!=NULL, c++, p->next

(2)p1->next, p1->next, p1->next 4、程序阅读题(1)7,3

(2)zhangping 20(3)Li:3

Zhang:3

Wang:2 5 .编程题 #include

#include

#define N 10

/*学生人数 */ #define M 3

/* 课程数

*/ struct */ stu{

/*定义结构体类型

char name[15];

char num[6];

float score[M];

float aver;} */ student[N];

/*说明结构体变量

struct student[]);stu findmax(struct stu

void input(struct stu student[]);

void output(struct stu student[]);

int main(){

struct stu temp;

input(student);

output(student);

temp = findmax(student);

printf(“Max is:n”);printf(“%15s%8s%7.2f%7.2f%7.2f%

7.2f”,temp.name,temp.num,1temp.score[0],temp.score[1],temp.sc

ore[2],temp.aver/M);

system(“Pause”);

return 0;}

struct student[])stu findmax(struct stu {

float max = 0.0;

int i,maxi;

for(i=0;i

{

if(max < student[i].aver)

{

max = student[i].aver;

maxi = i;

}

}

return student[maxi];}

void input(struct stu student[]){

int i,j;

printf(“input data:n”);

for(i=0;i

nt[i].num);%s”,student[i].name,stude

student[i].aver = 0;

for(j=0;j

{ &student[i].score[j]);

scanf(“%f”,student[i].score[j];

student[i].aver +=

}

} }

void output(struct stu student[]){

int i,j;

for(i=0;i

dent[i].num);

for(j=0;j

printf(“%7.2f”,printf(“%7.2fn”,student[i].aver/M);

} }

第9章

习题答案 1、选择题: B((41))

B A

((52))

D A

(3)D

(69))

A A

((107))

C A

(8)2、填空题(1)文本文件,二进制文件(2)fopen,fclose

3)fprintf, fscanf, feof fgets

(4)fwrite,fread, fputs,

5)文本 , 二进制(6)1,0

7)

字节,流式 3、程序填空题(1)*fp1, *fp2,ftell(fp1);fgetc(fp1),fp2

(2)*fp, fp,sizeof(stud[0])*i,0 &stud[i]

fgetc(fp),(3count++)

r

,sizeof(r),()

r.num,r.total

FILE *f, 4、编程题 #include

#define N 5

/*学生人数

*/

*/ #define M 3

/* 课程数

型 */ struct stu{

/*定义结构体类

char name[15];

char num[6];

float score[M];

float aver;体变量} student[N];*/

/*说明结构void sort(struct stu student[]);student[], void writetofile(struct stu mode[]);int main()char filename[],char {

FILE *fp;

struct stu *ptr=NULL;

int i,j;

printf(“input data:n”);

for(i=0;i

nt[i].num);%s”,student[i].name,stude

student[i].aver = 0;

for(j=0;j

{ &student[i].score[j]);

scanf(“%f”,student[i].score[j];

student[i].aver +=

}

} “student.txt”,“w”);

writetofile(student,“sort.txt”,“w”);

writetofile(student,“sort2.txt”,“w”);

writetofile(student,sort(student);“sort.txt”,“a”);

writetofile(student,*)malloc(sizeof(struct stu));

ptr =(struct stu

ptr->name,ptr->num);

scanf(“%s %s”,ptr->aver = 0;

for(j=0;j

{

scanf(“%f”,&ptr->score[j]);

ptr->aver += ptr->score[j];

}((fp=fopen(“sort2.txt”,“a”))==NULL)

if

{

printf(“cannot open file”);

exit(0);

} fprintf(fp,“%s

m);

%s”,ptr->name,ptr->nu

for(j=0;jscore[j]);

fprintf(fp,“%7.2f”, fprintf(fp,“%7.2fn”,ptr->aver/M);

fclose(fp);

return 0;} void sort(struct stu student[]){

struct stu temp;

int i,j,k;

for(i=0;i

k=i;

for(j=i+1;j

if(student[j].aver <

if(k!=i)

{

temp=student[i];

student[i]=student[k];

student[k]=temp;

}

} }

student[],2void writetofile(struct stu mode[]){ char filename[],char

FILE *fp;

int i,j;((fp=fopen(filename,mode))==NULL

if)

{

printf(“cannot open file”);

exit(0);

}

for(i=0;i

{

fprintf(fp,“%s udent[i].num);

%s”,student[i].name,st

for(j=0;j

fprintf(fp,“%7.2f”, fprintf(fp,“%7.2fn”,student[i].aver/M);

}

fclose(fp);}

第二篇:C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]

第1章习题参考答案

1.单项选择题

(1)A(2)C(3)D(4)C(5)B 2.填空题(1)函数

(2)主函数(main)(3)printf(),scanf()

第2章习题参考答案

1.单项选择题

1-5 CBCCC 6-10 CDCDC 11-13 DBB 2.填空题

(1)1(2)26(3)6,4,2(4)10 , 6(5)3.000000(6)双精度(double)(7)9(8)字母,数字,下划线(9)13.700000(10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0(13)10,9,11(15)(x<0&&y<0)||(x<0&&z<0)||(y<0||z<0)(16)double(17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))

第3章习题参考答案

1.单项选择题

1-5 CCCDD 6-10 BCDBC 11-15 BCBBB 16 A 2.填空题

(1)用;表示结束(2){ }(3)y=x<0?1:x==0?0:-1(4)y%4==0&&y%100!=0||y%400==0(5)上面未配对(6)default标号(7)while,do while,for(8)do while(9)本次(10)本层 3.阅读程序,指出结果

(1)yes(2)*&(3)ABother(4)28 70(5)2,0(6)8(7)36(8)1(9)3,1,-1,3,1,-1(10)a=12,y=12(11)i=6,k=4(12)1,-2 4.程序填空

(1)x:y,u:z(2)m=n,m!=0,m=m/10(3)t

,t*n/(2*n+1), printf(“%lfn”,2*s)(4)m%5==0,printf(“%dn”,k)(5)cx=getchar(), cx!=front , cx

(6)double s=0 , 1.0/k

, %lf(7)s>=0

, s

#include int main(){

double x,y;

scanf(“%lf”,&x);

if(x<1)

y=x;

else if(x>=1.0&&x<10)

y=2*x-11;

else

y=3*x-11;

printf(“%lfn”,y);

return 0;}(2).

#include int main(){

double x,y,z,min;

scanf(“%lf%lf%lf”,&x,&y,&z);

if(x>y)

min=y;

else

min=x;

if(min>z)

min=z;

printf(“min=%lfn”,min);

return 0;}(3).

#include int main(){

int y,m,d,flag,s=0,w,i;

scanf(“%d%d%d”,&y,&m,&d);

flag=(y%4==0&&y%100!=0||y%400==0);

w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;

for(i=1;i<=m;i++)

{

switch(i)

{

case 1:s=d;break;

case 2:s=31+d;break;

case 3:s=59+d;break;

case 4:s=90+d;break;

case 5:s=120+d;break;

case 6:s=151+d;break;

case 7:s=181+d;break;

case 8:s=212+d;break;

case 9:s=243+d;break;

case 10:s=273+d;break;

case 11:s=304+d;break;

case 12:s=334+d;break;

} }

if(flag==1&&m>2)

s=s+1;

s=(w+s)%7;

if(s==0)

printf(“星期日n”);

else

printf(“星期%dn”,s);

return 0;}

(4).

#include int main(){

float p,r;

scanf(“%f”,&p);

if(p<=10)

r=p*0.1;

else if(p>10&&p<=20)

r=10*0.1+(p-10)*0.075;

else if(p>20&&p<=40)

r=10*0.1+10*0.075+(p-20)*0.05;

else if(p>40&&p<=60)

r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;

else if(p>60&&p<=100)

r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015;

else if(p>100)

r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01;

printf(“%fn”,r);

return 0;}(5).

#include int main(){

char c;

while((c=getchar())!='n')

{

if(c>='a'&&c<='z')

c=c-32;

putchar(c);

}

return 0;}(6).

#include int main(){

int m,k=2;

printf(“输入一个正整数:n”);

scanf(“%d”,&m);

while(k

if(m%k==0)

{

printf(“%4d”,k);

m=m/k;

}

else

k++;

printf(“%4dn”,m);

return 0;}(7).

#include int main(){

int a,n,s=0,p=0,i;

scanf(“%d %d”,&n,&a);

for(i=1;i<=n;i++)

{

p=p*10+a;

s=s+p;

}

printf(“%dn”,s);

return 0;}(8).

#include int main()

{

int i,j,k;

for(i=1;i<=9;i++)

for(j=0;j<=9;j++)

for(k=0;k<=9;k++)

printf(“%5d”,100*i+10*j+k);

return 0;}(9).

#include #include int main(){

float a=-10,b=10,x,f1,f2,f;

f1=(((2*a-4)*a+3)*a)-6;

f2=(((2*b-4)*b+3)*b)-6;

do

{

x=(a+b)/2;

f=(((2*x-4)*x+3)*x)-6;

if(f*f1<0)

{

b=x;

f2=f;

}

else

{

a=x;

f1=f;

}

}while(fabs(f)>=1e-6);

printf(“%6.2fn”,x);

return 0;}(10).

#include

#include int main(){

int n=2;

double eps,t,s=0,x;

scanf(“%lf %lf”,&x,&eps);

t=x;

s=t;

while(fabs(t)>=eps)

{

t=-t*(2*n-3)*x*x/(2*n-2);

s=s+t/(2*n);

n++;

}

printf(“%d,%lfn”,n,s);

return 0;}

(11).

#include int main(){

unsigned long s,t=0,p=1;

scanf(“%u”,&s);

while(s!=0)

{

if((s%10)%2!=0)

{

t=t+(s%10)*p;

p=p*10;

}

s=s/10;

}

printf(“%un”,t);

return 0;}

第4章习题参考答案

1.单项选择题

1-5 DDDBD 6-10 BADCD 11-14 BDAB 2.填空题

(1)2(2)嵌套,递归

(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern(5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3(4)i=5

i=2

i=2

i=4

i=2(5)求水仙花数(6)-5*5*5(7)30(8)0 10 11 12 4.程序填空

(1)float fun(float , float),x+y,x-y , z+y,z-y(2)x,x*x+1(3)s=0 ,a=a+b 5.编程题

(1).

while(s!=0)#include

{ unsigned int fun(unsigned int);

p=p+s%10;int main()

s=s/10;{

}

unsigned int s;

return p;

scanf(“%u”,&s);}

printf(“%un”,fun(s));(2).

return 0;#include } #include unsigned int fun(unsigned int s)#include { void f1(float,float,float,float);

unsigned int p=0;void f2(float,float,float,float);

void f3(float,float,float,float);int main(){

float a,b,c,d;

scanf(“%f %f %f”,&a,&b,&c);

if(a==0)

{

printf(“不是一元二次方程n”);

exit(0);

}

d=b*b-4*a*c;

if(d>0)

f1(a,b,c,d);

else if(d==0)

f2(a,b,c,d);

else

f3(a,b,c,d);

return 0;} void f1(float a,float b,float c,float d){

float x1,x2;

{

x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf(“%.2f ,%.2fn”,x1,x2);

} } void f2(float a,float b,float c,float d){

float x1,x2;

{

x1=-b/(2*a);

x2=-b/(2*a);

printf(“%.2f ,%.2fn”,x1,x2);

} }

void f3(float a,float b,float c,float d){

float x1,x2;

{

x1=-b/(2*a);

x2=sqrt(-d)/(2*a);

printf(“%.2f+i*%.2fn”,x1,x2);

printf(“%.2f-i*%.2fn”,x1,x2);

} }

(3).#include double p(int,double);int main(){

int n;

double x;

do

{

scanf(“%d”,&n);

}while(n<0);

scanf(“%lf”,&x);

printf(“%lfn”,p(n,x));

return 0;}

double p(int n,double x){

double pn;

if(n==0)

pn=1;

else if(n==1)

pn=x;

else

pn=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;

return pn;}

(4).

#include #define RATE 0.053 double fun(float);void display(float,int);int main(){

float dep;

int season;

scanf(“%f %d”,&dep,&season);

display(dep,season);

return 0;} double fun(float d){

return d*RATE;} void display(float d,int s){

int i;

printf(“季度

余额n”);

printf(“n”);

for(i=1;i<=s;i++)

{

printf(“%-4d

%-.2f

%-.2fn”,i,fun(d),fun(d)*i+d);

printf(“n”);

} }

(5).

#include double fun(void);int main(){

printf(“%lfn”,fun());

return 0;}

double fun(void){

double s=0;

int n=1;

while((double)(2*n-1)/((2*n)*(2*n))>1e-4)

{

s=s+(double)(2*n-1)/((2*n)*(2*n));

n++;

}

return s;}(6).

#include int fun(int);int main(){

int w;

scanf(“%d”,&w);

printf(“%dn”,fun(w));

return 0;}

int fun(int w){

int n=1,p=1,m;

m=w;

while(m>10)

{

m=m/10;

p=p*10;

n++;

}

return w%p;} 第5章习题参考答案

1、选择题:

1-5 C(B C)BBA 6-8 DDB

2、填空题

(1)0,9(2)float realArray[100],char strArray[16],int intArray[1000](3)运算符 sizeof(4)6字节

3、阅读程序,写出下面程序的运行结果(1)aa

bb

cc dd(2)ab

c

d(3)ahAMa(4)0010(5)1 3 4 5(6)This is the title.Name 1 is Rosalinda

Name 2 is Zeke

The biggest name alpabetically is Zeke

Both names are Rosalinda Zeke(7)0

0

0

0

0

0

0

0

0

0 748

0

0

0 177

0

0

4、程序填空

(1)a[i][j]!= a[j][i] , 1(2)0, a[i] < a[mini] ,maxi = i ,a[maxi] = a[mini]

(3)int a[], int b[], b[i] = a[i],-999,arraycopy(a,b), b[i++](4)a

5、编程题(1)

#include int main(){

int a[3][4] = {0, 2,9,7,5,13,6,8,27,11,1,3

};

int i,j,temp;

for(i=0,j=0;j<4;j++){

temp = a[2-i][j];

a[2-i][j] = a[i][j];

a[i][j] = temp;

}

for(i=0;i<3;i++){

for(j=0;j<4;j++)

printf(“%3d”,a[i][j]);

printf(“n”);

}

return 0;}

(2)

#include int main(){

static int a[6][6];

int i,j,t=1;

for(i=0;i<6;i++){

t = i+1;

for(j=0;j

a[i][j] = t--;

}

for(i=0;i<6;i++){

for(j=0;j<6;j++)

printf(“%3d”,a[i][j]);

printf(“n”);

}

return 0;}(3)

#include #define M 3 #define N 4 #define R 5 int main(){

static int a[M][N],b[N][R],c[M][R];

int i,j,k;

printf(“Matrix a:n”);

for(i = 0;i < M;i++)

for(j = 0;j < N;j++)

scanf(“%d”,&a[i][j]);

printf(“Matrix b:n”);

for(i = 0;i < N;i++)

for(j = 0;j < R;j++)

scanf(“%d”,&b[i][j]);

for(i = 0;i < M;i ++)

for(j = 0;j < N;j++)

for(k = 0;k < R;k++)

c[i][k] += a[i][j]*b[j][k];

for(i = 0;i < M;i++){

for(j = 0;j < R;j++)

printf(“%3d”,c[i][j]);

printf(“n”);

}

return 0;}(4)

#include #define M 5 int main(){

static int a[M];

int i,max =-1,min = 100,maxi,mini,temp;

for(i = 0;i < M;i++)

scanf(“%d”,&a[i]);//0~99间的值

for(i = 0;i < M;i++){

if(max < a[i]){

max = a[i];

maxi = i;

}

if(min > a[i]){

min = a[i];

mini = i;

}

}

temp = a[maxi];

a[maxi] = a[mini];

a[mini] = temp;

for(i = 0;i < M;i++)

printf(“%3d”,a[i]);

return 0;}

3(5)

#include #define M 3 #define N 4 int main(){

static int a[M][N];

int max =-1,sumcol=0,sumrow=0;

int i,j,maxi,col;

for(i = 0;i < M;i++){

sumrow = 0;

for(j = 0;j < N;j++){

scanf(“%d”,&a[i][j]);

sumrow += a[i][j];

}

if(max < sumrow){

max = sumrow;

maxi = i;

}

}

printf(“which col sum will be caculated?(>0)”);

scanf(“%d”,&col);

for(i = 0;i < M;i ++)

sumcol += a[i][col-1];

printf(“The %dth row's sum is max, max=%dn”,maxi+1,max);

printf(“The %dth column's sum=%dn”,col,sumcol);

return 0;}(6)

#include #define M 81 int main(){

static char str[M];

int i,count = 0;

char ch;

gets(str);

fflush(stdin);//清空输入缓冲区,以便读入字符数据

printf(“Which character will be found?”);

ch = getchar();

for(i = 0;i < strlen(str);i++)

if(ch == str[i])

count++;

printf(“The number of character '%c' is %dn”,ch,count);

return 0;}

(7)

#include #include #define N 10

//同学人数 #define M 5

//课程数 void enter_scores(void);void sort_scores(int score[][M], int average[N][3]);void disp_scores(int score[][M]);void histogram(int n, int score[][M]);void printchar(int n);static int score[N][M];static int aver[N][3];//第1列为均值,第2列原始顺序,第3列为均值逆序int main()

{

int course;

enter_scores();

printf(“n===========Oringenal Score Start=========n”);

disp_scores(score);

printf(“n===========Oringenal Score End===========n”);

printf(“n===========Sorted Score Start============n”);

sort_scores(score,aver);

printf(“n===========Sorted Score End==============n”);

printf(“nWhich class will be statisticed?n”);

scanf(“%d”,&course);

histogram(course, score);

system(“Pause”);

return 0;} /* 输入成绩 */ void enter_scores(){

int i, j;

for(i=0;i

for(j=0;j

scanf(“%d”,&score[i][j]);

aver[i][0] += score[i][j];

}

}

for(i = 0;i < N;i++)

for(j = 1;j < 3;j++)

aver[i][j] = i;} /* 成绩排序.*/ void sort_scores(int score[][M], int average[N][3]){

int i,j,t;

int temp,tempindex;

for(i = 0;i < N1*t;}(6)

#include

5#define M 5 #define N 3 int sum(int *a)int main(){

static int a[M][N];

int i,j;

for(i = 0;i < M;i++)

for(j = 0;j < N;j++)

scanf(“%d”,&a[i][j]);

for(i = 0;i < M;i ++)

printf(“Row %d sum: %3dn”, i, sum(a[i]));

return 0;} int sum(int *ptr){

int i,result = 0;

for(i = 0;i < N;i++)

result += *(ptr+i);

return result;} 6 第7章习题答案

1、选择题:

1-5 CCDBA 6-10 CBADB 11-13 DDA

2、判断题

1-5 ×√√×√

6-10 ×√×√√

第8章习题答案

1、选择题:

1-5 CDAAD 6-8 CDB

2、填空题

(1)

.(成员域访问运算符),-〉(成员域间接访问运算符)(2)

4, 6.0(3)

enum(4)typedef(5)

age,q->name,q->age

3、阅读程序,写出下面程序的运行结果(1)p!=NULL, c++, p->next(2)p1->next, p1->next, p1->next

4、程序阅读题(1)7,3(2)zhangping 20(3)Li:3

Zhang:3

Wang:2 5.编程题

#include #include #define N 10

/*学生人数 */ #define M 3

/* 课程数

*/ struct stu{

/*定义结构体类型 */

char name[15];

char num[6];

float score[M];

float aver;} student[N];

/*说明结构体变量 */

struct stu findmax(struct stu student[]);void input(struct stu student[]);void output(struct stu student[]);int main(){

struct stu temp;

input(student);

output(student);

temp = findmax(student);

printf(“Max is:n”);

printf(“%15s%8s%7.2f%7.2f%7.2f%7.2f”,temp.name,temp.num,1temp.score[0],temp.score[1],temp.score[2],temp.aver/M);

system(“Pause”);

return 0;} struct stu findmax(struct stu student[]){

float max = 0.0;

int i,maxi;

for(i=0;i

{

if(max < student[i].aver)

{

max = student[i].aver;

maxi = i;

}

}

return student[maxi];} void input(struct stu student[]){

int i,j;

printf(“input data:n”);

for(i=0;i

scanf(“%s %s”,student[i].name,student[i].num);

student[i].aver = 0;

for(j=0;j

{

scanf(“%f”, &student[i].score[j]);

student[i].aver += student[i].score[j];

}

} } void output(struct stu student[]){

int i,j;

for(i=0;i

printf(“%15s%8s”,student[i].name,student[i].num);

for(j=0;j

printf(“%7.2f”, student[i].score[j]);

printf(“%7.2fn”,student[i].aver/M);

} } 2 第9章习题答案

1、选择题:

1-5 ADBBA 6-10 A CDAA

2、填空题

(1)文本文件,二进制文件(2)fopen,fclose(3)fprintf, fscanf, feof(4)fwrite,fread, fputs, fgets(5)文本 , 二进制(6)1,0(7)

字节,流式

3、程序填空题

(1)*fp1, *fp2,ftell(fp1);

fgetc(fp1),fp2(2)*fp,fp,sizeof(stud[0])*i,0

&stud[i](3)“r”,fgetc(fp),count++(4)FILE *f,sizeof(r),r.num,r.total

4、编程题

#include #define N 5

/*学生人数 */ #define M 3

/* 课程数

*/

struct stu{

/*定义结构体类型 */

char name[15];

char num[6];

float score[M];

float aver;} student[N];

/*说明结构体变量 */ void sort(struct stu student[]);void writetofile(struct stu student[], char filename[],char mode[]);int main(){

FILE *fp;

struct stu *ptr=NULL;

int i,j;

printf(“input data:n”);

for(i=0;i

scanf(“%s %s”,student[i].name,student[i].num);

student[i].aver = 0;

for(j=0;j

{

scanf(“%f”, &student[i].score[j]);

student[i].aver += student[i].score[j];

}

}

writetofile(student, “student.txt”,“w”);

writetofile(student, “sort.txt”,“w”);

writetofile(student, “sort2.txt”,“w”);

sort(student);

writetofile(student, “sort.txt”,“a”);

ptr =(struct stu *)malloc(sizeof(struct stu));

scanf(“%s %s”, ptr->name,ptr->num);

ptr->aver = 0;

for(j=0;j

{

scanf(“%f”,&ptr->score[j]);

ptr->aver += ptr->score[j];

}

if((fp=fopen(“sort2.txt”,“a”))==NULL)

{

printf(“cannot open file”);

exit(0);

}

fprintf(fp,“%s %s”,ptr->name,ptr->num);

for(j=0;j

fprintf(fp,“%7.2f”, ptr->score[j]);

fprintf(fp,“%7.2fn”,ptr->aver/M);

fclose(fp);

return 0;} void sort(struct stu student[]){

struct stu temp;

int i,j,k;

for(i=0;i

k=i;

for(j=i+1;j

if(student[j].aver < student[k].aver)k=j;

if(k!=i)

{

temp=student[i];

student[i]=student[k];

student[k]=temp;

}

} }

2void writetofile(struct stu student[], char filename[],char mode[]){

FILE *fp;

int i,j;

if((fp=fopen(filename,mode))==NULL)

{

printf(“cannot open file”);

exit(0);

}

for(i=0;i

{

fprintf(fp,“%s %s”,student[i].name,student[i].num);

for(j=0;j

fprintf(fp,“%7.2f”, student[i].score[j]);

fprintf(fp,“%7.2fn”,student[i].aver/M);

}

fclose(fp);}

第三篇:C语言程序设计教程课后习题答案

C语言程序设计教程课后习题答案

第一章 C语言程序设计概述 -习题答案 算法的描述有哪些基本方法?

1、自然语言

2、专用工具C语言程序的基本结构是怎样的?举一个例子说明。

1、C语言程序由函数构成;

2、“/*”与“*/”之间的内容构成C语言程序的注释部分;

3、用预处理命令#include、#define可以包含有关文件或预定义信息;

4、大小写字母在C语言中是有区别的;

5、除main()函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。C语言有什么特点?

1、具有结构语言的特点,程序之间很容易实现段的共享;

2、主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;

3、运算符丰富,包含的范围很广;

4、数据类型丰富;

5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;

6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;

7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。★指出合法与不合法的标识符命名。

AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×说明下列Turbo C热键的功能。

F2:源文件存盘 F10:调用主菜单 F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件 Alt+F5:将窗口切换到 DOS 下,查看程序运行结果。说明下列Turbo C方式下输入并运行下列程序,记录下运行结果。

①main()

{printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main()

{ int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是错误的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答

运行结果:

******************** welcome you very good ******************** 运行结果:

please input three numbers;3,1,4 /*左侧下划线内容为键盘输入*/ max number is:4 7 一个C程序是由若干个函数构成的,其中有且只能有一个___函数。

main()8 在Turbo C环境下进行程序调试时,可以使用Run下拉菜单的___命令或按___键转到用户屏幕查看程序运行结果。

1、User screen

2、Alt+F5 9 ★C语言对标识符与关键字有些什么规定?

1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。

2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。C源程序输入后是如何进行保存的?

是以C为扩展名保存的纯文本文件。

第二章 C语言程序的基本数据类型与表达式 -习题答案 ★指出下列常数中哪些是符合C语法规定的。

''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×请找出下列程序中的错误,改正后写出程序运行结果。

①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main()

{ char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答

main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);}

运行结果:AVER=5 ②main()

{ char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);}

运行结果:a=3,b='A'“end”

aabcc abc 3 写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。int 99

-1 char 'h'

unsigned int

float

55.78

long int

答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D'

unsigned int 99 104 66 55 68 65535

float 99.00 104.00 66.00 55.78 68.00-1.00

long int 99 104 66 55 68-1

★写出程序运行结果。

①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main()

{ int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之间应为逗号,教材有误 答

运行结果: 9,11,9,10 运行结果: 30,1,0,0

③void main()

{int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);}

运行结果: 11,19,30,1

★写出下面表达式的值(设a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)

⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a

⑼a+b,18+(b=4)*3,(a/b,a%b)

⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a

⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每组表达式中,被执行后结果完全等价的是哪些(设a、b、m是已被赋值的整型变量)?

①m=(a=4,4*5)与m=a=4,4*5 ②(float)(a/b)与(float)a/b ③(int)a+b与(int)(a+b)④m%=2+a*3与m=m%2+a*3 ⑤m=1+(a=2)+(b=3)与a=2,b=3,m=1+a+b 答

①前面是赋值表达式,而后面的是一个逗号表达式,所以一定不同;

②前面的表达式中a/b结果为一整数,结果已经取整,精度可能受到影响,之后强制float后才为浮点型,后面的是先将a转换为float后再与b相除,其值保证了精度,所以不同。

③因为a、b均为整数,其前后两个表达式的计算结果是一致的。

④前一表达式是一算术表达式,而后者为一赋值表达式,此为一点不同;另外,前一表达式的m只被赋过一次值,后一表达式中的m曾两次被赋值,第一次赋值时与第一表达式中的值一致,第二次赋值后即不再相同。⑤前后表达式的计算结果应该是一致的:a=2, b=3, m=6 7 条件表达式x>0?x:-x的功能是什么?

如果x的值是一正数,则表达式的值为x值;如果x的值是一非正数,则表达式的值为-x。其实该表达式的值即为x的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在math.h头文件中。用一个条件表达式描述从a、b、c中找出最大都赋给max.答

max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x为int型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下类型说明语句: char w;int x;float y;double z;则表达式w*x+z-y的结果为()类型。A.float B.char C.int D.double 答 D.第三章 顺序结构程序设计 -习题答案 变量k为float类型,调用函数scanf(“%d”,&k),不能使变量k得到正确数值的原因是___。

格式修饰符与变量类型不一致。因为%d输入的数据类型应该为十进制整数,而&k为占用4个字节的float类型变量的地址。★a=1234,b=12,c=34,则执行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的输出是___。

|1234 1234 |

分析如下:

①%3d为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。

②%-3d为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。★设有“int a=255,b=8;”,则“printf(“%x,%on”,a,b);”输出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”则输出为FF,10。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“%x”则输出小写,如果是“%X”则输出大写。

②如果希望在输出十六进制时输出前导符0x或0X,则以上输出语句应改“printf(“%#x,%on”,a,b);”为或“printf(“%#X,%on”,a,b);”。本条解释不必须掌握。★以下程序输出的结果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函数中用到格式符%5s,其中5表示输出字符占用5列。如果字符串长度大于5,则按___输出;如果字符串长度小于5,则按___输出。

①实际 ②左端补空格 6 ★已定义变量如下: int a1,a2;char c1,c2;若要求输入a1、a2、c1和c2的值,正确的输入函数调用语句是___。

scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 输入两个整型变量a、b的值,输出下列算式以及运算结果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每个算式占一行。如a=10,b=5,a+b输出为:10+5=15 答

设int a=10,b=5;以下为输出语句及结果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★输入一个非负数,计算以这个数为半径的圆周长和面积。答

#define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l=%ftarea=%fn”,l,area);} 9 输入任意一个3位数,将其各位数字反序输出(例如输入123,输出321)。

main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此处算法*/

第四篇:C语言程序设计教程第九章习题答案

1、li

300.0 chang 30

200.0 chang

2、#include struct students {

char sid[100];

char name[100];

float score[3];}student;void main(){

int i;float j;

printf(“nPlease input sid:

”);

scanf(“%s”,student.sid);

printf(“nPlease input name: ”);

scanf(“%s”,student.name);

printf(“nPlease input 3 score:(like1,1,1)”);/*输入逗号隔开*/

scanf(“%f,%f,%f”,&student.score[0],&student.score[1],&student.score[2]);

printf(“nsid = %s”,student.sid);

printf(“nname = %s”,student.name);

j=(student.score[0]+student.score[1]+student.score[2])/3.0;

printf(“naverage = %.2f”,j);

getch();}

3、#include #include #define F sizeof(student)#define NULL 0 typedef struct scores { int english;int math;int c_language;int all;}TP;typedef struct students { char sid[15];char name[15];TP score;struct students *next;}student;student *input(){ student *head,*p1,*p2;int n=0;char ch;clrscr();head=(student *)malloc(F);head->next=NULL;

do {

n++;

printf(“nnPlease input %d student message:

nn”,n);

printf(“t%d student sid:

”,n);

p1=(student *)malloc(F);p1->next=NULL;

scanf(“%s”,p1->sid);

printf(“nt%d student name:

”,n);

scanf(“%s”,p1->name);

printf(“nt%d student scores(englesh,math,c_language):

”,n);

scanf(“%d,%d,%d”,&p1->score.english,&p1->score.math,&p1->score.c_language);

p1->score.all=p1->score.english+p1->score.math+p1->score.c_language;

if(n==1)

{ head->next=p1;p2=p1;}

else

{ p2->next=p1;

p2=p1;

}

printf(“nntttContinue or back(press y/n):

”);

ch=getch();

}while(ch=='y'||ch=='Y');return head;} void average1(student *head){ student *p;int j;clrscr();p=head->next;

while(p)

{ j=p->score.all/3;

printf(“nnname:

%staverage: %d”,p->name,j);

p=p->next;

} printf(“nnnPress eny key return.”);getch();} void average2(student *head){ student *p;int n=0,temp1=0,temp2=0,temp3=0;p=head->next;while(p){ temp1+=p->score.english;

temp2+=p->score.math;

temp3+=p->score.c_language;

p=p->next;n++;} printf(“nnaverage english is : %dnaverage math is : %dnaverage c_language is : %dt”,temp1/n,temp2/n,temp3/n);} student *sort(student *head){ student *head1,*p,*q,*r;int temp1=0,temp2=0,temp3=0,temp4;char s[15],n[15];head1=head;for(p=head1->next;p->next!=NULL;p=p->next){ r=p;

for(q=p->next;q;q=q->next)

if(q->score.all>r->score.all)

r=q;

if(r!=p)

{ strcpy(s,p->sid);strcpy(n,p->name);

temp1=p->score.english;

temp2=p->score.math;

temp3=p->score.c_language;

temp4=p->score.all;

strcpy(p->sid,r->sid);strcpy(p->name,r->name);

p->score.english=r->score.english;

p->score.math=r->score.math;

p->score.c_language=r->score.c_language;

p->score.all=r->score.all;

strcpy(r->sid,s);strcpy(r->name,n);

r->score.english=temp1;

r->score.math=temp2;

r->score.c_language=temp3;

r->score.all=temp4;

} } return head1;} void output(student *head){ student *head2,*p;int i=1;clrscr();head2=sort(head);for(p=head2->next;p!=NULL;p=p->next)

printf(“nnname: %stsid: %stenglish: %dtmath: %dtc_language: %dtaverage: %dtmingci: %d”,p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++);

average2(head);

printf(“nnnttPress eny key back.”);getch();} void main(){ student *head,*p1,*p2;int i=0,j=1;head=input();do {

clrscr();

printf(“nn(1): average1.nn(2): average2.nn(3): sort.nn(4): output.nnn

Please choose:

”);

scanf(“%d”,&i);

switch(i)

{ case 1: average1(head);break;

case 2: clrscr();average2(head);printf(“nnnPress eny key retuen.”);getch();break;

case 3: clrscr();p1=sort(head);for(p2=p1->next;p2!=NULL;p2=p2->next)printf(“nttname: %stmingci:%d”,p2->name,j++);printf(“nnnPress eny key back.”);getch();break;

case 4: output(head);break;

default: printf(“nYour choose is not right.”);break;

} }while(i!=-1);}

4、#include #include #define NULL 0 #define F sizeof(worker)typedef struct work { char sid[15];char name[15];int money;struct work *next;}worker;int min=0,max=0;char a[15],b[15];worker *input(){ worker *head,*p,*q;int n=0;char ch;head=(worker *)malloc(F);head->next=0;do { n++;

p=(worker *)malloc(F);p->next=0;

printf(“nntPlease input %d worker message :

”,n);

printf(“n%d worker sid:

”,n);scanf(“%s”,p->sid);

printf(“n%d worker name:

”,n);scanf(“%s”,p->name);

printf(“n%d worker money:

”,n);scanf(“%d”,&p->money);

if(n==1)

{

head->next=p;q=p;

max=p->money;strcpy(a,p->name);

min=p->money;strcpy(b,p->name);

}

else

{

q->next=p;

if(p->money>max){max=p->money;strcpy(a,p->name);}

if(p->moneymoney;strcpy(b,p->name);}

q=p;

}

printf(“ntty/n”);ch=getch();}while(ch=='y'||ch=='Y');return head;} void output(){

clrscr();printf(“nThe max money is: %dttname is: %snn”,max,a);printf(“nThe min money is: %dttname is: %s”,min,b);} void main(){

input();output();getch();} 5、6、#include“stdio.h” #define F sizeof(stu)#define NULL 0 typedef struct student { int sid;int average;struct student *next;}stu;stu *head;stu *create(){ stu *p1,*p2;int n=0;char ch;head=(stu *)malloc(F);head->next=NULL;

do {

n++;

printf(“nnPlease input %d student message:

nn”,n);

printf(“t%d student sid:

”,n);

p1=(stu *)malloc(F);p1->next=NULL;

scanf(“%d”,&p1->sid);

printf(“nt%d student average:

”,n);

scanf(“%d”,&p1->average);

if(n==1)

{ head->next=p1;p2=p1;}

else

{ p2->next=p1;

p2=p1;

}

printf(“nntttContinue or back(press y/n):

ch=getch();

}while(ch=='y'||ch=='Y');return head;} stu *select(stu *head,int x){ stu *s;s=head->next;while(s){

if(s->sid==x)

break;

s=s->next;} return s;}

stu *insert(stu *head,int x,int y){ stu *p,*r,*q;clrscr();p=head->next;r=(stu *)malloc(sizeof(stu));r->sid=x;r->average=y;if(p==NULL)/*如果插入空表*/

{

p=r;

r->next=NULL;

”);

printf(“ninsert success!”);

}

else

{ while(x>p->sid)/*找到插入的位置,按学号大小。(找到位置或者到了表尾都会跳出循环)*/

{

if(p->next==NULL)break;p=p->next;

}

if(x

sid)

/*插到中间位置*/

{

r->sid=p->sid;

r->average=p->average;

p->sid=x;

p->average=y;

r->next=p->next;

p->next=r;

printf(“ninsert success!”);

}

else if(x==p->sid)/*学号不能相同*/

printf(“nError--->your input this same sid.”);

else

/*插到末尾*/

{

p->next=r;

r->next=NULL;

printf(“ninsert success!”);

}

}

return head;} stu *get(stu *head,int n)/*得到位置为n的结点的指针*/ { stu *p;int i;p=head->next;if(n==0)return head;else

{

for(i=1;i

p=p->next;

return p;} } stu *delete(stu *head,int sid){

stu *p,*q;int temp=0,i=0;p=head->next;if(!p)

{

printf(“nlist is empty.press eny key back.”);getch();return head;}/*表空*/ else { while(p)

/*查找学号为sid的结点的指针*/

{i++;/*标记学号为sid的结点的位置*/

if(p->sid==sid)

{temp=1;break;} /*temp=1标记找到了*/

p=p->next;}

if(temp==1)/*如果有学号为sid的结点*/

{ q=get(head,i-1);/*得到sid的前一个结点的指针*/

q->next=p->next;

free(p);

printf(“nndelete sucess!!”);

return head;

}

else

/*没有找到*/

{ printf(“nnNO this data.n”);

return head;

} } } void print(stu *head){ stu *p;p=head->next;if(!p){printf(“nlist is empty.press eny key back.”);getch();} while(p){

printf(“n%d :t%d ”,p->sid,p->average);

p=p->next;} } main(){ stu *p1,*p2;char ch1;int n,i=0,j=0;head=create();do {clrscr();printf(“n1.insert.”);printf(“n2.select.”);printf(“n3.delect.”);printf(“n4.print list.”);printf(“n5.EXIT

”);printf(“n

............choice(1-5).............”);ch1=getch();switch(ch1){

case '1':

{ clrscr();

printf(“nplease input insert sid.and average(like 1,1):”);

scanf(“%d,%d”,&i,&j);

head=insert(head,i,j);

printf(“nnnPress eny key back.”);getch();

break;

}

case '2':

{ clrscr();

printf(“ninput you want to selete sid:

”);

scanf(“%d”,&n);

p1=select(head,n);

{

if(p1)printf(“nsid:%dtaverage:%d”,p1->sid,p1->average);

else

printf(“nNo this data.”);

}

printf(“nnnPress eny key back.”);getch();

break;

}

case '3':

{ clrscr();printf(“nPlease input you want delete sid: ”);

scanf(“%d”,&n);

head=delete(head,n);

printf(“nnnPress eny key back.”);getch();

break;

}

case '4':

{ clrscr();

printf(“All information :”);

print(head);

printf(“nnnPress eny key back.”);getch();

break;

}

case '5': return;

default: printf(“nnYour enter is not right.press eny key back.”);getch();}

}while(n);}

7、#include #define F sizeof(L)typedef struct list {

char data;

struct list *next;}L;L *set_list(){

L *head,*p1,*p2;

char c;

int n=0;

head=(L *)malloc(F);head->next=0;

/*建立链表*/

p1=p2=head;

printf(“nPlease input char(press * finish):”);

scanf(“%c”,&c);

while(c!='*')

{

n++;

if(n==1)

p1->data=c;

else

{

p1=(L *)malloc(F);

p1->data=c;

p2->next = p1;

p2 = p1;

p1->next = 0;

}

scanf(“%c”,&c);

}

p1=head;

while(p1)

{

printf(“%c ”,p1->data);p1=p1->next;

}

printf(“nnn”);

return head;} void change_list(L *head1)

/*算法:p2指向最后一个元素,p1指向第一个元素。交换他们的值,p1,p2同时往中间靠拢。*/ {

L *p1,*p2,*p3;

int i,j,k,n=1;

char temp;

p1=head1;p2=head1;p3=head1;

while(p3->next)

{ p3=p3->next;n++;

}/*求链长*/

for(i=n;i>(n/2);i--)/*外循环使p1后移,p2前移。*/

{

p2=head1;for(j=1;j

p2=p2->next;/*p2指向最后一个元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交换他们的值*/ p1=p1->next;/*p1向后移*/

}

while(head1)

{ printf(“%c ”,head1->data);head1=head1->next;} } void main(){ L *head;head=set_list();change_list(head);getch();}

第五篇:C语言程序设计教程第三版(李凤霞)习题答案

教材习题答案

第一章

习题

一、单项选择题 1.C 2.B 3.B 4.C 5.D 6.A 7.C 8.A

二、填空题

1.判断条件 2.面向过程编程 3.结构化 4.程序

5.面向对象的程序设计语言 6.基本功能操作、控制结构 7.有穷性

8.直到型循环结构 9.算法 10.可读性 11.模块化

12.对问题的分解和模块的划分

第二章

习题

一、单项选择题

1.B 2.D 3.C 4.B 5.A 6.A 7.B 8.C

二、填空题

1.主 2.C编译系统 3.函数、函数 4.输入输出 5.头 6..OBJ 7.库函数 8.文本

第三章

习题

一、单项选择题 1.D 2.B 3.A 4.C 5.C 6.D 7.D 8.B 9.B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B

二、填空题

1.补码 2.308 10  (~)

308 10,—

2.308 10  (~)

308 10,— 3.逻辑

4.单目,自右向左 5.函数调用 6.a 或

b(题目有错 , 小括号后面的

c<=98 改成(c>=97&&c<=98)就可以得到所给的答案了)7.1 8.65,89

第四章

习题

一、单项选择题

1.D 2.C 3.D 4.A 5.D 6.B 7.A 8.C 9.B 10.B

二、填空题

1.一

2.5.169000 3.(1)-200 2500

(2)i=-200,j=2500(3)2500 200   

j i 4.a=98,b=765.000000,c=4321.000000 5.100 25.81 1.89234,100

25.81 按

Enter 键)

1.89234,100(按

Tab 键)

25.81(按

Tab 键)

1.89234 6.0,0,3 7.3 8.scanf(“ %lf %lf %lf”,&a,&b,&c);9.13 13.000000 13.000000 10.b=a;a=c;c=b;或

a=a+b;c=c-b;(对于本题来说,后者的答案更好,不仅使

a 与

c 的值进行

交换而且能保持中间变量

b 的值不发生改变)

第五章

习题

一、单项选择题

1.D 2.C 3.B 4.B 5.D 6.A 7.B 8.D

二、填空题

1.非零,零 2.k= =0 2.k= =0 3.if(abs(x)>4)

Printf(“ %d ” ,x);else

printf(“ error!”);4.if(x%2==1&&((x>=1)&&(x<=10)||(x>=200&&x<=210))printf(“%d”,x);5.k=1(原题最后一行漏了个

d, 如果认为原题正确 , 则输出

k=%。)6.10!,Right!11 7.$$$a=0 8.a=2,b=1 9.0

第六章

习题

一、单项选择题

1.B 2.C 3.C 4.B 5.C 6.B

7.C 8.A

二、填空题

1.无穷次

2.8(原题有误。应该把

b=1 后面的逗号改为分号)

3.20 4.11 5.2.400000 6.*#*#*#$ 7.8 5 2 8.①

d=1.0 ②

k++

k<=n 9.①

x>=0 ②

x

第七章

习题

一、单项选择题

1.B 2.B 3.C 4.C 5.A 3 6.A 7.B 8.A

二、填空题

1.512 256 128 64 32 16 8 4 2 1 2.①

a[age]++ ②

i=18;i<26 3.①

break

i==8 4.①

a[i]>b[j]

② i<3 ③

j<5 5.①

b[j]=a[j][0] ②

b[j]

第八章

习题

一、单项选择题

1.B 2.C 3.C 4.A 5.A 6.C 7.C 8.D 9.D 10.B 11.A 12.C 13.A 14.C 15.B

二、填空题

1.①

return(0)

return(n+sum(n-1))2.①

return(1)

n*facto(n-1)

第九章

习题

一、单项选择题

1.D 2.C 3.D 4.A 5.C 6.C 7.C 8.A 9.B 10.C 11.A 12.A 13.B 14.B 15.B 16.D 17.C 18.D 19.B 20.D

三、填空题

1.①

int * ②

* z 2.①

*p++ 3.①

’ ’

++ 4.①

q=p+1

q

*q>max

*q

习题

一、单项选择题

1.D

2.D

3.A

4.C

5.B 6.A

7.A

8.B

9.D

10.B 11.C

12.B

13.D

14.C

二、填空题

1.0x 34,0x12

2.ARRAY a[10],b[10],c[10];

3.2,3 4.“ ab ” , ” cd ”

5.(*b).day,b->day

6.ad

abcdef

ghimno

hino 7.①

node*

!=NULL

p=top 8 p1->next 9.①

list*

② list*

return h;

第十一章

习题

一、单项选择题

1.A

2.A

3.B

4.A

5.B 6.D(题目有错,将

D 中的

改成)

7.B

8.B

9.B

10.B

11.B

12.B

13.C

14.C

15.D

16.A

17.D

二、填空题

1.ASCII,二进制

2.pf=fopen(“

A:zk04data xfile.dat ” , ” w ”);3.4.ASCII , 二进制,文件尾,非

0 值

下载C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案word格式文档
下载C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐