C语言程序设计参考答案与复习题(8)

2019-03-22 11:47

程序设计基础习题集 35

输出结果为 a,d abc,def ghi,mno hi,no

程序⑵ #include #include void main()

{ struct info { int data; info *pn; } info *base,*p; base=NULL;

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

p=(inf*) malloc(sizeof(struct info)); p->data=i+1; p->pn=base; base=p; }

p=base;

while(p!=NULL) {

printf(\ }

printf (\ }

输出结果为 10 9 8 7 6 5 4 3 2 1

6.下列函数用于将节点类型为ntab的链表中某个结点(数据成员data与形参num匹配)删除,填空将函数补充完整。

解答: struct ntab* del_node(struct ntab *h, int num) { struct ntab *p1,*p2;

if(h==NULL) { printf(\ p1=h;

while(num!=p1->data && p1->next!=NULL) { p2=p1; p1=p1->next; } if(num==p1->data)

if(p1==h) { h=p1->next; free(p1); } else { p2->next=p1->next; delete p1; } else

printf(\ return h; } 7.下列函数用于在节点类型为ltab的非空链表中插入一个节点(由形参指针变量p0指向),链表按照节点数据成员no的升序排列,填空将函数补充完整。

解答: struct ltab* insert(struct ltab* head,struct ltab* stud) { struct ltab *p0,*p1,*p2; p1=head;p0=stud;

while((p0->no>p1->no)&&( p1->next!=NULL)){ p2=p1; p1=p1->next; } if(p0->no<=p1->no)

if(head==p1) { p0->next=head; head=p0; }

36 C程序设计基础习题集

else { p2->next=p0; po->next=p1; } else { p1->next=p0; p0->next=NULL; } return (head); }

习 题 十

1. 计算下列表达式的值。

⑴ 5&7 ⑵ -12&6 ⑶ 7|8 ⑷ -12||32 ⑸ (x=13)^9 ⑹ 15/2^1 ⑺ ~-15 ⑻ ~15/3 ⑼ 7<<2 ⑽ -9<<2 ⑾ (x=13)>>3 ⑿ -9>>3 解答:⑴ 5 ⑵ -5 ⑶ 15 ⑷ 1 ⑸ 4 ⑹ 6 ⑺ 14 ⑻ -5 ⑼ 28 ⑽ -36 ⑾ 1 ⑿ -2 2. 变量a、b均被声明为short类型,分别写出执行下列语句后a、b的值。

⑴ a=4;b=5;a&b; ⑵ a=-4;b=a|6; ⑶ a=3;b=a<<2; ⑷ a=-15;b=~a>>2 解答:⑴ a=4,b=5 ⑵ a=-4,b==2 ⑶ a=3,b=12 ⑷ a=-15,b=3 3. 阅读下列程序,写出运行时输入 6 8 8 4 12 -5 23 -12 ^z 的输出结果。

#include

void sub1(short *x,short *y) { *x=*x^*y; *y=*x^*y; *x=*x^*y; } void main() { short a,b;

while(scanf(\ sub1(&a,&b); printf(\ } }

解答:交换 a、b 的值。 4. 编程,输入一个int类型数据后,输出该数的机内码。

解答: #include void main()

{ int a,i; char b[33]={'\\0'}; scanf(\

for(i=31;i>=0;i--){ b[i]=(char)((a&1)+'0');a=a>>1; } puts(b); }

5.输入1个short类型数据,显示它二进制数奇数位(即从左边起的第1、3、5、??、15位)。

解答:#include void main()

{ short a,i; char b[9]={'\\0'}; scanf(\

for(i=7;i>=0;i--){ b[i]=(char)((a&1)+'0');a=a>>2; } puts(b);

程序设计基础习题集 37

}

6.输入一个整数,将其低8位全置1,高8位保留,并以十六进制输出该数。

解答:#include void main()

{ int a; scanf(\

a=a|0xff; printf(\ }

习 题 十一

⒈ 写出下列fopen函数调用所打开文件的读写方式与文件存储格式。

⑴ fpt=fopen(\⑵ fpt=fopen(\⑶ fpt=fopen(\⑷ fpt=fopen(\⑸ fpt=fopen(\

解答:⑴ 新建文本文件 ⑵ 新建二进制文件 ⑶ 可读写文本文件 ⑷ 追加记录二进制文件 ⑸ 新建可读写文本文件 ⒉ 填空题

⑴ fopen函数的返回值是 文件读写的首地址或NULL 。

⑵ 文件打开方式为\,文件打开后,文件读写位置在 文件的首纪录前 。 ⑶ 文件打开方式为\,文件打开后,文件读写位置在 文件的末纪录后 。 ⑷ 表达式“fgetc(fpn)”的值为 所读入字符的ASCII值 或 EOF 。 ⑸ 表达式“fgets(a,10,fpn)”的值为 字符串a的地址 或 NULL 。 ⑹ 函数fscanf的返回值为 所读入数据个数 或 EOF 。 ⑺ 函数fread的返回值为所读入数据的个数或 0 。

⑻ 表达式“fscanf(fpn,\”的值为-1时,函数feof()的值为 1 。

3. 编程,输入若干同学的姓名、学号、3门功课成绩,写到文本文件e:\\aaa.txt。

解答:

#include

struct stu{char name[9];char numb[9];int score[3];} void main()

{ FILE *fp1; struct stu a; int i,n;

fp1=fopen(\ for(i=1;i<=n;i++) {

scanf(\ fprintf(fp1,\%s %d %d %d\\n\ /* 格式串中各格式符间有空格,在从文件读入数据时可作为间隔符 */ }

fclose(fp1); }

38 C程序设计基础习题集 4. 编程,顺序读入题3所建立文本文件中各个同学的姓名、学号、成绩,显示输出。

解答: #include

struct stu{char name[9];char numb[9]; int score[3];}; void main()

{ FILE *fp1; struct stu a;

fp1=fopen(\

while(fscanf(fp1,\ &a.score[1],&a.score[2])!=EOF)

printf(\ a.score[1],a.score[2]); fclose(fp1);

} /* 应参照(题3)文件中数据存储格式,确定读文件时的格式符 */ 5. 编程,输入1个同学的学号,从题3所建立的文本文件中删除该同学的信息。

解答: #include #include

struct stu{char name[9];char numb[9]; int score[3];}; void main()

{ FILE *fp1,*fp2; struct stu a; char x[9]; gets(x);

fp1=fopen(\ while(fscanf(fp1,\ &a.score[1],&a.score[2])!=EOF)

if(strcmp(a.numb,x))fprintf(fp2,\ a.score[0],a.score[1],a.score[2]); fclose(fp1);fclose(fp2);

remove(\ } 6. 编程,读入若干行字符(每行不超过80个),写入文本文件e:\\bbb.txt。

解答: #include void main()

{ FILE *fp; char a[81];

fp=fopen(\

while(gets(a)!=NULL) { fputs(a,fp); fputc('\\n',fp); } fclose(fp); /* 加入换行符,作为间隔符 */ }

7. 文件a.txt、b.txt中各自存放了若干个整数,编程,显示在a.txt中存在而b.txt中不存在的那些数。

解答: #include void main()

{ FILE *fa,*fb; int a,b;

fa=fopen(\

程序设计基础习题集 39

while(!feof(fa)) { fscanf(fa,\ while(!feof(fb)) {

fscanf(fb,\ }

if(feof(fb)) printf(\ rewind(fb); }

fclose(fa); fclose(fb); }

8. 编程,输入若干同学的姓名、学号、3门功课成绩,写到二进制文件中(文件名自定)。

解答: #include void main()

{ FILE *fp; char name[9],numb[9]; int i,n,score[3]; fp=fopen(\ for(i=1;i<=n;i++) {

scanf(\ fwrite(name,sizeof(name),1,fp); fwrite(numb,sizeof(numb),1,fp); fwrite(score,sizeof(int),3,fp); }

rewind(fp); /* 下面的读文件程序段不是必须的,只是为验证输入是否正确 */ while(fread(name,sizeof(name),1,fp)!=NULL) {

fread(numb,sizeof(numb),1,fp); fread(score,sizeof(int),3,fp); printf(\ } } 9. 编程,输入1个同学的姓名、学号、3门功课成绩,修改题8所建立的二进制文件中具有相同学号同学的信息。

解答: #include #include void main()

{ FILE *f1,*f2; char name[2][9],numb[2][9]; int s[2][3];

f1=fopen(\ scanf(\ while(fread(name[1],sizeof(name[1]),1,f1)!=NULL) {

fread(numb[1],sizeof(numb[1]),1,f1); fread(s[1],sizeof(int),3,f1); if(strcmp(numb[0],numb[1])) {

fwrite(name[1],sizeof(name[1]),1,f2); fwrite(numb[1],sizeof(numb[1]),1,f2); fwrite(s[1],sizeof(int),3,f2); }

else {


C语言程序设计参考答案与复习题(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:事业单位财务管理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: