c语言课后习题参考答案_第1页
c语言课后习题参考答案_第2页
c语言课后习题参考答案_第3页
c语言课后习题参考答案_第4页
c语言课后习题参考答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章习题参考答案

1、选择题

(DC(2)C(3)D(4)B(5)D

(6)D(7)C⑻A(9)A(10)C

2、填空题

(1)函数、一个主函数、函数。QUS*/o

z3

f

\连接。⑷#。

5\

l

zmain(6)/*.......*/o

/7X

tI

x/.h(8)F5o

z9

«

k.exe(10).exe>>obj>.exe。

3、程序设计题

(1)#include<stdio.h>

voidmain()

printf("

printf("*S*\n");

printf("*\n");

(2)#include<stdio.h>

voidmain()

pnntf(”*****************\n")•

printf("Yourarewelcome!\n");

printf("

(3)#include<stdio.h>

voidmain()

(

charcl,c2;

printf("请输入cl和c2的值:”);

cl=getchar();

scanf("%c”,&c2);

printf("cl=%c\n",c1);

printf(,,c2=,');

putchar(c2);

printf(n\nH);

第2章习题参考答案

1、简述算法的概念。

答:算法就是为解决一个具体的问题而使用的确定的、有限的方法和步

骤。

2、算法应具备哪些特性?

答:算法应具备有穷性、确定性、可行性、输入、输出等五种特性。

3、分别说明什么是自然语言描述法?什么是框图语言描述法?什么是伪

语言描述法?什么是N-S框图语言描述法?它们的优缺点各是什么?

答:①用人们II常使用的语言来描述算法,称为算法的自然语言描述法。

②框图语言描述法是用一些特殊符号来描述算法流程的算法。③N-S框图语

言描述法是种将具体的功能都写在一个矩形框内,框内又可以包含其他的

从属框的描述方法。④伪语言描述法是用介于自然语言和计算机语言之间的

文字符号来描述算法。(优缺点略)

4、在结构化程序设计方法中,有咖几种基本结构?

答:在结构化程序设计方法中有顺序结构、分支结构和循环结构三种。

5、请用伪语言写出打印乘法九九口诀表的算法。

参考算法如下:

初始化

③i=l

④j=l

⑤printf("%d*%d=%-3d",i,j,i*j);//-3d表示左对齐,占3位

⑥j++列号加1

⑦如果列号j<=行号i转到④。

⑧i++行号加1

⑨如果行号i<10转到③。

算法结束。

第3章习题参考答案

1、选择题

(DC(2)C(3)D(4)D(5)D

(6)D(7)C(8)A(9)B(10)B

(H)A(12)A(13)C(14)B(15)A

(16)C(17)B(18)A(19)B(20)C

2、填空题

⑴a%2!=0或a%2=l0(2)0。

(3)」—,0o(4)3.5o

(5)0(6)3.5o

(7)4.5o

3、程序设计题

(1):

#include<stdio.h>

main()

(

floatr=0,h=0,l=0,v=0,pi=0;

pi=3.1415926;

printf(“请输入圆半径及圆柱的高,用逗号分隔:");

scanf(n%f,%fH,&r,&h);

l=2*pi*r;

v二pi*r*r*h;

printf("圆周长为:%6.2f\n",l);

printf("%圆柱体积为:%6.2f\nH,v);

)

(2):

#include<stdio.h>

main()

(

charcl=,C',c2=,h,,c3='i',c4='n,,c5=,a,;

printf("原字符为:%c%c%c%c%c\nM,cl,c2,c3,c4,c5);

cl+=4;

c2+=4;

c3+=4;

c4+=4;

c5+=4;

printf("加密后的字符为:%c%c%c%c%c\n';c1,c2,c3,c4,c5);

cl=,T,,c2='o,,c3='d,,c4='a,,c5='y,;

printf("题目(2)原字符为:%c%c%c%c%c\nH,c1,c2,c3,c4,c5);

/*c1='w',c2='x',c3=V,c4='z',c5='w';*/

cl-=22;

c2-=22;

c3-=22;

c4-=22;

c5-=22;

printf("题目(2)加密后的字符为:%c%c%c%c%c\n",c1,c2,c3,c4,c5);

printf("题目(3)原字符为:%c%c%c%c%c\n",cl,c2,c3,c4,c5);

cl-=4;

c2-=4;

c3-=4;

c4-=4;

c5-=4;

printf("题目(3)加密后的字符为:%c%c%c%c%c\n",c1,c2,c3,c4,c5);

)

(3):

#include<stdio.h>

main()

(

longx=0;

inth=0,m=0,s=0;

printf("请输入秒数,为一个正整数:”);

scanf(M%dM,&x);

h=x/3600;

m=x%3600/60;

s=x%3600%60;

printf("你输入的秒数为%d小时%d分%(1秒\n”,h,m,s);

)

第4章习题参考答案

1,选择题

(DC(2)C⑶C(4)B⑸D

(6)B(7)C(8)A(9)A

2、填空题

⑴i<9、J_、i++;++a:、i++;、9>10

(2)_i<10_._J_、a++si++,9、10>10»

(3)54321,

(4)x%3==0IIx%7==0、f=lo

3.程序阅读题

(1)pass(2)120

4、程序设计题

(1)参考程序:

#include<stdio.h>

intmain(void)

(

intnumber;

printf(nEnteranumber:");

scanf(,"%d'\&number);

if(number<0)

(

number=-number;

)

printf("Theabsolutevalueis%d.\n",number);

return0;

)

Enteranumber:10

Theabsolutevalueis10.

Enteranumber:-300

Theabsolutevalueis300.

(2)参考程序:

#include<stdio.h>

voidmain()

(

intn=0;

printf(*'inputastring\nu);

while(getchar()!=\n,)n++;

printf(n%d",n);

)

(3)参考程序:

#include<stdio.h>

voidmain()

(

intn,i;

for(n=2;n<=100;n++)

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

if(n%i==O)break;

if(i>=n)printfC'\t%du,n);

)

)

(4)参考程序:

#include<stdio.h>

main()

(

doublesum=0;

doubletmp=1;

intmul=1;

inti;

for(i=l;i<=50;i++)

(

tmp*=i;

sum+=tmp*mul;

mul*=-1;

}

printf(nl!-2!+3!-4!+.....+49!-50!=%e\sum);

)

(5)参考程序:

/*输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。

*/

#include<stdio.h>

intmain(void)

(

intblank,digit,i,other;/*定义3个变量分别存放统计结果*/

charch;

blank=digit=other=0;/*置存放统计结果的3个变量的初值为零*/

printf("Enter10characters:");/*输入提示*/

for(i=1;i<=10;i++){/*循环执行了10次*/

ch=getchar();/*输入一个字符*/

在switch语句中灵活应用break*/

switch(ch){

case11:/*语句段为空,请注意空格的表示*/

caseIn':

blank++;/*2个常量表达式一和.共用该语句段*/

break;/*跳出switch语句*/

case'0':caseT:case2:case3':case4:

case5:case'6':case'7':case8:case'9’:

digit++;/*10个常量表达式O〜9共用该语句段*/

break;/*跳出switch语句*/

default:

other++;/*累加其他字符*/

break;/*跳出switch语句*/

)

printf("blank=%d,digit=%d,other=%d\n",blank,digit,other);

return0;

)

第5章习题参考答案

1、选择题

(DA(2)D(3)D(4)A(5)C

(6)D(7)D(8)B(9)A(10)D

2、填空题

(1)6个字节。(2)you&nieo

(4)6o

3、程序设计题

(1)main()

(

inta[9J,i,temp;

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

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

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

printf(n%dM,a[i]);

printf("\nH);

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

(

temp=a[i];

a[i]=a[9-i];

a[9-i]=temp;

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

printf(n%dM,a[i]);

printf("\n");

(2)main()

(

inta[8]={2,8,7,6,4,28,70,25);

intb[8]={79,27,32,41,57,66,78,80};

intc[8],i;

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

c[i]=a[i]+b[i];

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

printf("%d\r',a[i]);

printf("\n");

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

printf("%d\t”,b[i]);

printf("\nn);

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

printf(n%d\t",c[i]);

printf("\n");

}一

(3)main()

(

inta[4][4]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}};

intduil=0,dui2=0,i,j,temp;

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

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

(

if(i==j)

duil+=a[i][j];

if(i+j=3)

dui2+=a[i皿;

)

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

(

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

printf(M%d\tM,a[i][j]);

printf("\nn);

)

printf("dui1=%d\tdui2=%d\n",dui1,dui2);

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

(

temp=a[O][i];

a[0][i]=a[2][i];

a[2][i]=temp;

)

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

(

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

printf("%d\t",a[i][j]);

printf("\n");

第6章习题参考答案

1、选择题

(DA(2)B(3)C(4)B(5)D

(6)D(7)B(8)D(9)B(10)D

2、填空题

(1)

I=7;j=6;x=7;

I=2;j=7;x=5;

(2)

111

(3)

maxis2

(4)

<1>x=2y=3z-0

<2>x=4y=9z=5

<3>x=2y=3z-0

三、程序设计题

1、

#include"stdio.h"

intprime(intn)

inti;

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

(

if(n%i==O)

return0;

)

return1;

)

voidmain()

(

intn;

scanf("%d'\&n);

if(prime(n))

printf("该数是个素数\n");

else

printf("该数不是个素数\n");

I

2、

#include"stdio.h"

voidfun(inta[],intb[],intn)

(

inti;

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

b[(a[i]/10)]++;

)

voidmain()

(

inti,a[100]={9,18,27,38,59,33,14,75,38},b[6]={0};

fun(a,b,9);

printf(nTheresultis:");

for(i=0;iv6;i++)

printf(n%dH,b[i]);

printf(n\nn);

)

第7章习题参考答案

1.单项选择题

1)A2)B3)C4)C5)A6)D7)A8)D9)

A10)C

11)B12)C13)D14)A15)B16)D17)D18)A19)

D20)B

2.填空题

(1)84(2)35(3)0(4)7(5)0

(6)int*(7)-1(8)*sn(9)*x(10)t

(11)int*(12)*z

3.程序设计题

(1)编写一个函数,将数组中n个数按反序存放。

voidinv(int*x,intn)

{int*p,m,t,*i,*j;

m=(n-l)/2;

i=x;j=x+n-l;p=x+m;

for(;i<=p;i++,j-)

{t=*i;*i=*j;*j=t;}

return;

)

main()

{inti,arr[10],*p=arr;

printf("Theoriginalan*ay:\nH);

for(i=0;i<10;i++,p++)

scanf(n%dn,p);

printf("\nn);

p=arr;/*payattentiontoreassigningforp*/

inv(p,10);

printf(nThearrayhasbeeninverted:\n");

for(p=arr;p<arr+10;p++)

printf(H%d",*p);

printf("\n)

(2)用地址法输入输出二维数组各元素。

#include<stdio.h>

main()

inta[3][4];

inti,j;

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

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

scanf("%d",a[i]+j);/*地址法*/

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

(

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

printf("%4d",*(a[i]+j));/**(a[i]+j)是地址法所表示的数组元

素*/

printf("");

)

}

运行程序:

123456789101112

1234

5678

9101112

(3)用指针法输入输出二维数组各元素。

#include<stdio.h>

main()

(

inta[3][4],*ptr;

inti,j;

ptr=a[0J;

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

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

scanf("%d",ptr++);/*指针的表示方法*/

ptr=a[O];

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

(

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

printf("%4d",*ptr++);

printf("");

运行程序:

123456789101112

1234

5678

9101112

第8章习题参考答案

一、选择题(10小题)

题号12345678910

答案DCBCBDBADD

二、填空题(3小题)

题号123

答案成员指向abc.ap_abc->a(*p_abc).a34

三、程序分析题(5小题)

题号12345

答案9name:zhongtotal=170.0000DDBBCCQian,p,95,9220098703.000000

name:wangtotal=150.00000

四、程序设计题(4小题)

1、#defineN3

structperson

{char*name;

floatwages;

floatfloatwages;

floatexpenditure;

floatrealpay;

);

main()

{structpersonp[N];

inti=0;

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

{scanf(H%s,%f,%f,%f',p[i].name,&p[i].wages,&p[i].floatwages,&p[i].expendi

ture);

p[i].realpay=p[i].wages+p[i].floatwages+p[i].expenditure;

}

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

printf("%s,%fn,p[i].name,p[i].realpay);

2、#defineN10

structstudent

{longnumber;

char*name;

floatscore[4];

);

main()

{structstudentstu[Nl;

inti,max_i=0;

floatmax

scanf(n%ld,%s,%f,%f,%f',&stu[0].number,stu[0].name,&stu[0].score[0],&stu[0]

.scorefl],&stu[0].score[2]);

max=stu[0].score[3]=stu[0].score[0]+stu[0].score[l]+stu[0].score[2];

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

{scanf(n%ld,%s,%f,%f,%f',&stu[i].number,stu[i].name,&stu[i].score[0],&stu[i].

score[I],&stu[i].score[2]);

stu[i].score[3]=stu[i].score[0]+stu[i].score[l]+stu[i].score[2];

if(max<stuli].score[3])

max=stu[i].score[3],max_i=i;

)

printf(,,max:%s,%f',stu[max_i].name,stu[max_i].score[3]);

3、#includeHstdio.hn

structstudent

{char*name;

floatcc;

floatsql;

floatc;

floatave;};

main()

{structstudentstu[4];

inti=0;

for(;i<4;i++)

{scanf(u%s,%f,%f,%f",stu[i].name,&stu[i].cc,&stu[i].sql,&stu[i].c);

stu[i].ave=(stu[i].cc+stu[i].sql+stu[i].c)/3.0;

}

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

printf(n%s,%f',stu[i].name,stu[i].ave);

)

4、#include"stdio.h"

#include"stdlib.h',

/*定义链表数据结构*/

typedefstructnode{

floatdata;/*这里设数据类型为float*/

structnode*next;

JLnode;

Lnode*a,*b;

/*建立a链表*/

Lnode*newcreate(Lnode*a,intn)/*建立n个元素的a链表*/

{inti;

floatx;

Lnode*q,*s;

q=a;

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

{printf(”请输入链表的第%d个数据:i);

scanf(n%f',&x);

s=(Lnode*)malloc(sizeof(Lnode));

s->data=x;

q->next=s;

q=q->next;

return(a);

/*求a链表的所有数据之和*/

floatsum(Lnode*a)

{floattotal=0.0;

Lnode*p;

p=a->next;/*p指向a的第一个结点*/

while(p)

{total=total+(p->data);

p=p->next;

)

returntotal;

1

/*将b链接到a的后面*/

Lnode*relation(Lnode*a,Lnode*b)

{Lnode*q,*p;

q=a;

p=a->next;

while(p)

{q=p;

p=p->next;

}

q->next=b;

return(a);

)

main()

第9章习题参考答案

1、选择题

(DD(2)C(3)C(4)B(5)C

(6)C(7)D(8)C(9)A(10)D

(IDA(12)B(13)A

2、填空题

(1)逻辑位运算、移位运算。(2)按位取反。

(3)0,(4)复合赋值位运算符。

(5)右对齐、Q、。、lo⑹整型。

(7)11110000O(8)aA=a

(9)a=-(aAa)(10)x=(xlffOO)l(x&OOff)o

(ll)a=012500»2(12)ch=chl32

3、程序设计题

(1)/*

题目:取一个整数a从右端开始的4〜7位。

程序分析:可以这样考虑:

(1)先使a右移4位。

(2)设置一个低4位全为1,其余全为0的数。可用~(~0vv4)

(3)将上面二者进行&.运算。

*/

#include<stdio.h>

voidmain()

(

unsigneda,b,c,d;

scanf("%o”,&a);

b=a»4;

c=~(〜0<v4);

d=b&c;

printf("%o\n%o\n”,a,d);

)

(2)#include<stdio.h>

voidmain()

structbit

unsigneda:3;

unsignedb:2;

unsignedc:2;

"unsigned类型的数据在VC6.0中为4个字节*/

unsignedx:32・(3+2+2);/*定义25位不使用的位段*/

unsignedd:4;/*d另起一个存储单元*/

unsignedf:7;

}s={123,0,4,5};/*初始化*/

printf("%d%d%d%d%d%d\n",s.a,s.b,s.c,s.x,s.d,s.f);

第10章习题参考答案

1、选择题

(DD(2)B(3)C(4)B(5)C

(6)C、D(7)A(8)D(9)D(10)C

(H)C(12)A(13)B

2、填空题

(l)fputc('A',fp):、fputs("Hello!'',fp);。

>

(2)fscanf(fp?%d,%d,%d\&a,&b,&c);o

(3)“r”、"w"、“a+”°

(4)!feof(fl)>f2、fclose(fl)>fclose(f2)o

(5)f'oDcndnamcJw")>ch°

(6)“r"、(!feof(fp))>fgetc(fp)o

⑺CCCCBBBBAAAA。

3、程序填空题

score.dat

i+1

“%s”mame

scanf("%d”,&age);

scanf("%「,&score);

"%s,%d,%F

fclose(fp);

4、程序设计题

⑴/*

源文件名:xiti41.c

功能:读取•个文件的内容并显示出来。

*/

#include<stdio.h>

voidmain()

(

FILE*fp;/*定义一个文件指针*/

charc;

if((fp=fopen("C:\\boot.ini,';,rtH))==NULL)

printf(Hfilecannotopen,pressanykeytoexit!\n");

getch();/*从键盘上任意输入一字符,结束程序*/

exit(l);

c=fgetc(fp);/*从文件中逐个读取字符*/

/*只要读出的字符没有到文件尾就把该字符显示在屏幕上*/

while(c!=EOF)

(

putchar(c);

c=fgetc(fp);

)

printf("\nn);

fclose(fp);

}

(2)/*

源文件名:xiti42.c

功能:读取一个文件的内容并显示出来。

*/

#include<stdio.h>

voidmain()

(

FILE*fp;/*定义一个文件指针*/

charch;

inti;

if((fp=fopen("C:\\boot.ini,,;'rtH))==NULL)

(

printf("filecannotopen,pressanykeytoexit!\n");

getch();/*从键盘上任意输入•字符,结束程序*/

exit(l);

)

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

(

if(feof(fp))

break;/*如果是文件尾,则退出循环*/

ch=fgetc(fp);

putchar(ch);

)

printf(n\nn);

fclose(fp);

(3)/*

源文件名:xiti43.c

功能:写一行字符到文件中,然后读取文件的内容并显示出来。

*/

#include<stdio.h>

voidmain()

(

FILE*fp;/*定义一个文件指针*/

charc;

if((fp=fopen("file2.txtn,uw+"))==NULL)

(

printf("filecannotopen,pressanykeytoexit!\n");

getch();/*从键盘上任意输入一字符,结束程序*/

exit(l);

)

printf(HPleaseinputastring:");

c=getchar();/*从键盘读入一个字符后进入循环*/

while(c!='\n')/*判断读入的字符不是回车符时进入

循环*/

(

fputc(c,fp);/*将字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论