云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言复习题

C语言复习题

  • 62 次阅读
  • 3 次下载
  • 2025/12/2 20:23:40

第10章 文 件

7.若有以下定义和语句:

struct student {

int age; int num; }std, *p; p=&std;

则以下对结构体变量std中成员age的引用方式不正确的是 。 A.std.age B.p->age C.(*p).age D.*p.age 8.若有以下定义和语句,则以下引用形式非法的是 。

struct student { int num;

int age; };

struct student stu[3]={{1001,20},{1002,19},{1003,21}}; struct student *p = stu;

A.(p++)->num B.p++ C.(*p).num D.p=&stu.age

9.若已建立下面的链表,指针变量p、s分别指向图9-7中所示节点,则不能将s所指节点插入到链表尾的语句组是 。

p

data next

… F \\ 0 E

A.s->next=NULL;p=p->next;p->next=s; s G head B.p=p->next;s->next=p->next;p->next=s; C.p->next=s; s->next=p->next;p=p->next; 图9-7 p、s在链表中的指向 D.p=(*p).next;(*s).next=(*p).next;(*p).next=s;

10.以下是对C语言中共用体类型数据的叙述,正确的是 。

A.可以对共用体变量名直接赋成员值

B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型定义中不能出现结构体类型的成员 二、填空题

1.若有下面的定义:

struct {

int x; int y;

}s[2]={{1,2},{3,4}},*p=s;

则表达式 ++p->x 的值为________; 表达式(++p)->x的值为___ __。 2.为了建立如图9-8所示的链表,节点的正确描述形式是:

data next data next 图9-8 链表的节点

struct node { int data; _____________; };

3.已知head 指向一个带头节点的单向链表,链表中每个节点包含数据域(data)和指针域(next),数据域为整型。下面的sum函数是求出链表中所有节点数据域值的和,作为函数值返回。请填空完善程序。

struct link { int data; struct link *next;

第10章 文 件

}

main() { struct link *head; int s;

┆ s=sum(head);

┆ }

int sum( ) {

struct link *p; int s=0;

p=head->next; while(p) { s+= ; p= ; } return(s);

}

4.设有共用体类型和共用体变量定义如下:

union Utype { char ch; int n; long m; float x; double y; };

union Utype un; 并假定un的地址为ffca。

则un.n的地址是__________, un.y的地址是_________。执行赋值语句:un.n=321; 后,再执行语句:printf(\其输出值是_________。(提示:321D=101000001B) 5. 读程序,写出运行结果。 程序1代码: #include #include #define N 10 struct student {

char stuNum[20]; //学生学号 char stuName[20]; //学生姓名

int stuscore[4]; //学生3门课成绩及平均分数 };

int main() {

int i,j;

student stu[N]; int aver=0;

for(i=0; i

printf(\请输入第%d个学生学号:\ scanf(\

printf(\请输入第%d个学生姓名:\ scanf(\

printf(\请输入第%d个学生的三门课程成绩:\ for(j=0; j<3; j++)

scanf(\

stu[i].stuscore[3]=(stu[i].stuscore[0]+stu[i].stuscore[1]+stu[i].stuscore[2])/3; aver+=stu[i].stuscore[3]; }

printf(\门课程的总平均成绩:%d\\n\

第10章 文 件

int max=0,maxi; for(i=0;i

if(stu[i].stuscore[3]>max) { max=stu[i].stuscore[3]; maxi=i; } }

printf(\最高分学生\\n学号:%s\\n姓名:%s\\n3门课程成绩:%d %d %d\\n平均分数:%d\

stu[maxi].stuNum,stu[maxi].stuName,stu[maxi].stuscore[0],stu[maxi].stuscore[1],stu[maxi].stuscore[2],stu[maxi].stuscore[3]); }

程序2代码: #include #include #include struct student { int num; char name[10]; struct student *next; };

int main() { void print(struct student *head); struct student *creat(); struct student *del(struct student *head_a,struct student *head_b); struct student *head,*head_a,*head_b; printf(\初始化链表A********\\n\ head_a=creat(); printf(\输出链表A********\\n\ print(head_a); printf(\初始化链表B********\\n\ head_b=creat(); printf(\输出链表B********\\n\ print(head_b); printf(\从a链表中删去与b链表中有相同学号的那些节点********\\n\ head=del(head_a,head_b); print(head); return 0; }

struct student *creat() { struct student *head,*p,*q; p = q=(struct student *)malloc(sizeof(struct student)); head = NULL; printf(\请输入学生学号和姓名(输入学号0和姓名0停止接收数据):\ scanf(\ while(!(p->num = = 0 && strcmp(p->name,\ { if(head = = NULL) head = p; else q->next=p; q=p; p=(struct student *)malloc(sizeof(struct student)); printf(\请输入学生学号和姓名(输入学号0和姓名0停止接收数据):\

第10章 文 件

scanf(\ } q->next=NULL; return head; }

struct student *del(struct student *head_a,struct student *head_b) { struct student *p,*q,*t; p=q=head_a; if(head_b = = NULL) return head_a; while(p!=NULL) { t=head_b; while(t->next!=NULL&&(t->num!=p->num)) t=t->next; if(t->num= =p->num) { if(p= =head_a) { head_a=p->next; free(p); q=p=head_a; } else { q->next=p->next; free(p); p=q->next; } } else { q=p; p=p->next; } } return head_a; }

void print(struct student *head) { struct student *p; p = head; while(p!=NULL) { printf(\ p=p->next; } }

(3)当编辑完成源程序后,分别对其进行编译、连接和运行,分析其结果是否符合题目要求,符合后则对C语言源程序加上注释。

习题10

1. 系统的标准输出设备是( )。

A.键盘 B.显示器 C.硬盘 D.软盘 2. 函数调用语句“fseek(fp, 10L, 1)”的含义是( )。

第10章 文 件

A.将文件位置指针移到距离文件头10个字节处 B.将文件位置指针从当前位置前移10个字节处 C.将文件位置指针从文件末尾处前移10个字节处 D.将文件位置指针移到距离文件尾10个字节处

3. 从数据的存储形式来看,文件分为_____和_____两类。 4. 为什么要对fopen函数的返回值进行错误检查? 5. 从文件data1中读取10个字符,并显示到屏幕上。

6. 从键盘输入一些字符,并逐个把这些字符写入默认路径下的文件data1.c中,直到碰到一个“&”为止。 7.分析程序运行结果

程序1代码: #include

main() {

FILE *fp; Char ch; if((fp=fopen(“test1.c”,“r”))= =NULL) {

printf(“Cannot open the file!”); exit(0); }

while((ch=fgetc(fp)!=EOF)) {

putchar(ch); }

fclose(fp); }

程序2代码: #include

main() {

FILE *fp; int num=0;

Char ch; if((fp=fopen(“test2.c”,“r”))= =NULL) {

printf(“Cannot open the file!”); exit(0); }

while(!feof(fp)) {

fgetc(fp); num++; }

printf(“num=%d \\n”,num-1);

fclose(fp); }

搜索更多关于: C语言复习题 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第10章 文 件 7.若有以下定义和语句: struct student { int age; int num; }std, *p; p=&std; 则以下对结构体变量std中成员age的引用方式不正确的是 。 A.std.age B.p->age C.(*p).age D.*p.age 8.若有以下定义和语句,则以下引用形式非法的是 。 struct student { int num; int age; }; struct student stu[3]={{1001,20},{1002,19},{1003,21}}; struct student *p = stu; A.(p++)->num

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com