c语言程序设计(胡宏智)第五六七八章课后答案

更新时间:2024-06-19 19:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

习题五参考答案:

一、单项选择题

【习题5-1】~【习题5-8】 DCABBDCA 二、阅读程序写结果或填空题 【习题5-9】~ ⑴ 二 ⑵ 4 ⑶ 'B' 【习题5-10】5

【习题5-11】a[k][k]

【习题5-12】⑴ a[0] ⑵ a[k] ⑶ t 【习题5-13】⑴ b[j] ⑵ a[m] ⑶ k<12 【习题5-14】运行结果为:

【习题5-15】1 1 1

【习题5-16】

三、编写程序题 【习题5-17】: #include main() {

int a[10],b[6],c[10]; int i,j,k,m;

for(m=0;m<10;m++) scanf(\ for(m=0;m<6;m++) scanf(\ printf(\ i=0;k=0; while(i<10)

{ for(j=0;j<6;j++) if(a[i]==b[j]) break; if(j>=6) {c[k]=a[i];k++;} i++; }

for(m=0;m

【习题5-18】: #include

main() {

int a[3][4],s=0,m,n; for(m=0;m<3;m++)

for(n=0;n<4;n++) scanf(\ printf(\

for(m=0;m<3;m++) s=s+a[m][0]+a[m][3]; for(n=1;n<3;n++) s=s+a[0][n]+a[2][n]; printf(\}

【习题5-19】: #include #include main() {

char a[20],b[20]; int m,n,k,f; gets(a);gets(b);

m=strlen(a);n=strlen(b); k=0;

while((a[k]==b[k])&&k

printf(\}

【习题5-20】: #include #include main() {

char s[20],t; int k,n=0; gets(s);

for(k=0;k

if((s[k]>='A'&&s[k]<='Z')||( s[k]>='a'&&s[k]<='z')) n++; printf(\}

【习题5-21】: #include main() {

int a[10],k,m,n,j;

for(j=0;j<10;j++) scanf(\ printf(\ scanf(\ n=9; do {

for(j=0;j=n) break; else {

for(m=j;m

a[m]=a[m+1]; n=n-1; }

} while(1);

printf(\

for(j=0;j

习题六参考答案:

一、单项选择题【习题6-1】~【习题6-10】 B D A C B D A C C D 二、阅读下列程序,填空或给出程序运行结果。 【习题6-11】 num=*b, num =*c 【习题6-12】*p1++,*p2 【习题6-13】*(a+j), a+j 【习题6-14】8 7 6 5 4 3 2 1 【习题6-15】 2 ,3, 4, 5, 6. 【习题6-16】1711717 【习题6-17】ga 三、

编写程序程题

【习题6-18】

#include \void main()

{ int a[10]={3,42,6,12,33,55,25,45,76,93}; int i,j,k,x,*p; scanf(\ p=a;

if (k>0&&k<10) {

for (i=0;i0;j--)

*(p+j)=*(p+j-1);

*p=x; } }

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

printf(\}

【习题6-19】

#include \#include \void main()

{ int a[3][3]={42,6,12,33,55,25,45,76,93}; int i,j,*sum;

sum=(int *)malloc(3*sizeof(int)); for (i=0;i<3;i++) {

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

*(sum+i)+=a[i][j]; }

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

printf(\ }

【习题6-20】

#include \#include \void main()

{ int a[3][3]={1,2,5,4,3,6,9,8,7}; int i,j,(*p)[3],max; int r,c,flag=1; p=a;

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

max=*(*(p+i)); r=i;c=0;

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

{ if (max<*(*(p+i)+j)) {max= *(*(p+i)+j); r=i;c=j; } }

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

{if (max > *(*(p+j)+c)) flag=0; }

if (flag)

printf(\ } }

【习题6-21】

#include \#include \main()

{ char str[50],*p1,*p2;

printf(\ gets(str);

p1=str;p2=str; while(*p2!='\\0') { p2++; } p2--;

while(*p1==*p2&&p1

if (p1==p2) printf(\ else

printf(\}

【习题6-22】

#include \#include \

void replace(char *str, char ch, char ch2); main()

{ char str[50]; char c1,c2;

printf(\ strings\\n\ gets(str);

printf(\ two char \\n\ scanf(\ replace(str,c1,c2); printf(\}

void replace(char *str, char ch, char ch2) {

char *p1; p1=str;

while(*p1!='\\0') {

if(*p1==ch) {

*p1=ch2; } p1++; } }

【习题6-23】

#include \#include \

int delStr(char *str, char ch); main() {

char str[80]=\ char ch; int i;

scanf(\ printf(\ i=delStr(str,ch); printf(\}

int delStr(char *str, char ch)

{

int i,j,total,k,sum; char *p; i=0;total=0; p=str;

while(*(p+i)!='\\0') /*p1字符串是否结束*/ {

k=i; sum=0;

while(*(p+k)==ch) /*k移动到不要删除位置*/ { k++;

sum++; /*删除字符个数*/ }

total+=sum; if (*(p+i)==ch)

{ for(j=i;*(p+j+sum)!='\\0';j++) *(p+j)=*(p+j+sum); *(p+j)='\\0'; } i++; }

return total; }

【习题6-24】

#include \#include \

void reversestr(char * str) ; void main() { char str[50];

printf(\ gets(str);

reversestr(str); printf(\}

void reversestr(char *str) {

char ch,*p1,*p2; p1=str;p2=str; while(*p2!='\\0') { p2++; } p2--;

while(p1

ch=*p1; *p1=*p2; *p2=ch; p1++; p2--; } }

习题七参考答案:

一、单选题

【习题7-1】~ 【习题7-5】: BDACB 【习题7-6】~ 【习题7-10】:BCCDA 【习题7-11】~【习题7-15】:ACACC 【习题7-16】~【习题7-20】:BCCDC 【习题7-21】~【习题7-24】:DABB 二、编写程序题

【习题7-25】参考程序:

#include \#include \struct book {

char name[30]; int price; };

main() {

int i;

struct book books[10]; clrscr();

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

printf(\ gets(books[i].name);

printf(\ scanf(\ getchar(); }

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

printf(\

puts(books[i].name);

printf(\ } }

【习题7-26】:参考程序:

#include \struct student {int num;

char name[8]; int score1; int score2; int score3; int score4; float ave;

};

void fun1(struct student stu[]) {int i;

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

printf(\

scanf(\ printf(\ scanf(\ printf(\

scanf(\ printf(\

scanf(\ printf(\

scanf(\ printf(\

scanf(\

stu[i].ave=(stu[i].score1+stu[i].score2+stu[i].score3+stu[i].score4)/4.0;

} }

void fun2(struct student stu[]) {int i;

printf(\

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

printf(\

,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score4,stu[i].ave);

}

main() {int i;

struct student stu1[2]; clrscr(); fun1(stu1); fun2(stu1); }

【习题7-27】参考程序:

#include \struct complex {

int rp; int ip; };

struct complex input(struct complex plural) {

printf(\ scanf(\

printf(\ scanf(\ return plural; }

void output(struct complex plural) {

printf(\}

struct complex add(struct complex plu1,struct complex plu2) {

struct complex plu;

plu.rp=plu1.rp+plu2.rp; plu.ip=plu1.ip+plu2.ip; return plu; }

main() {

struct complex plu1,plu2,plu; plu1=input(plu1); plu2=input(plu2); plu=add(plu1,plu2); output(plu); }

【习题7-28】参考程序:

struct node *Merge(struct node *h1,struct node *h2) {

struct node *p,*q,*r,*s,*h; p=h1;q=h2;

if(p->numnum)

{h=s=p;r=p;p=p->next;r->next=NULL;} else

{h=s=q;r=q;q=q->next;r->next=NULL;} while(p&&q) {

if(p->numnum) {r=p;p=p->next;} else

{r=q;q=q->next;} s->next=r; s=s->next;

}

if(p)

s->next=p; else

s->next=q; return h; }

【习题7-29】参考程序:

#include \#include \struct chicken {

int cock; int hen; int chick; }ch[20]; main() {

int i,j,k,n=0;

struct chicken *p; for(i=0;i<=100/5;i++) for(j=0;j<=100/3;j++) for(k=0;k<=100*3;k++)

if(i+j+k==100&&i*5+j*3+k/3.0==100.00) {

ch[n].cock=i; ch[n].hen=j; ch[n].chick=k; n++; } p=ch;

for(i=0;i

printf(\ p++; } }

习题八参考答案:

一、单选题

【习题8-1】~【习题8-5】:BCCCC 【习题8-6】~【习题8-10】:ABADB 【习题8-11】~【习题8-12】:AC 二、简答题

【习题8-13】提示:根据文本文件和二进制文件的特点进行回答。 【习题8-14】:文件是指存储在外部介质上一组相关数据的集合。根据文件的组

织形式,文件可以分为ASCII文件和二进制文件。

【习题8-15】:对文件的操作的步骤:先打开,后读写,最后关闭。 三、编写程序题

【习题8-16】参考程序:

#include \#include \main() {

FILE *fp1,*fp2,*fp3; char str[128];

if((fp1=fopen(\ {

printf(\ exit(0); }

if((fp2=fopen(\ {printf(\ exit(0); }

if((fp3=fopen(\ {printf(\ exit(0); }

while((strlen(fgets(str,128,fp1)))>0) {

fputs(str,fp3); printf(\ }

while((strlen(fgets(str,128,fp2)))>0) {fputs(str,fp3); printf(\ }

fclose(fp1); fclose(fp2); fclose(fp3); }

【习题8-17】:参考程序:

#include \

main(int argc,char *argv[]) {

FILE *fp;

int ch,sign=0,count=0; if(argc!=2) {

printf(\ exit(1); }

fp=fopen(argv[1],\ if(!fp) {

printf(\ exit(1); }

ch=getc(fp); while(ch!=EOF) {

if(ch>160) if(sign) {

sign=0; count++; } else sign=1; ch=getc(fp); }

fclose(fp);

printf(\}

【习题8-18】:参考程序:

#include \struct stud {

char id[10]; char name[10]; char birth[9]; float inscore; };

struct studc {

char id[10]; char name[10]; float cmark; };

main() {

int i=5;

FILE *fps,*fpd;

struct stud data[5]={{\ {\ {\ {\ {\ struct studc temp;

fps=fopen(\ if(!fps)

{ printf(\ exit(1); }

fwrite(data,sizeof(struct stud),5,fps); fclose(fps);

fps=fopen(\ if(!fps)

{printf(\ exit(1); }

fpd=fopen(\ if(!fpd) {

printf(\ exit(1); }

printf(\ for(i=0;i<5;i++) {

fread(&tmp,sizeof(struct stud),1,fps);

printf(\ scanf(\ strcpy(temp.id,tmp.id);

strcpy(temp.name,tmp.name);

fwrite(&temp,sizeof(struct studc),1,fpd); }

printf(\ fclose(fps); fclose(fpd); }

本文来源:https://www.bwwdw.com/article/9243.html

Top