C综合练习-4附参考答案

2026/4/30 4:24:50

易读文库

C综合练习4 附参考答案(宏,结构体和文件)

0. 较为复杂的宏定义例题

(1)定义一个宏,用于判断所给出的年份year是否为闰年: #define LEAP_YEAR(y)

解:为闰年的条件是符合下面二者之一:(1)能被4整除,但不能被100整除。(2)能被4整除,能被400整除。

#define LEAP_YEAR(y) (y%4==0 && y0!=0) || (y@0==0 ) (2)定义带参数的宏为 #define max(a,b) ((a)>(b)?(a):(b)) 对表达式 max(a,max(b,max(c,d))) 作宏替换为(用文字描述):。 解:计算a、b、c、d中的最大值。表达式是调用宏函数,两个参数分别是a,max(b,max(c,d)),其第二个参数又是一个调用宏函数,参数分别是b,max(c,d)。 (3)定义一个带参数的宏,将两个参数的值交换 #define swap(a,b) { double t; } 解:t=a; a=b; b=t;

(4)定义一个带参数的宏,若变量中的字符为大写字母则转换成小写字母。 解: #define change(c) c=c>='A'&&c<='Z'? c:c+32

1. 单项选择题

1.下面语句的输出结果是________。 #include “stdio.h”

printf(“%d %d %d”,NULL,’\\0’,EOF);

A.0 0 1 B.0 0 -1 C.NULL EOF D.1 0 EOF

2.如果二进制文件a.dat已经存在,现要求写入全新的数据,应以________方式打开。 A.“w” B.”wb” C.”w+” D.”wb+” 3.有以下的结构体变量定义语句:

struct student { int num; char name[9]; } stu; 则下列叙述中错误的是 ( )。

A. 结构体类型名为studentB. 结构体类型名为stu

C.num是结构体成员名

D.struct是C的关键字

4. 若有以下定义

struct date { int y,m,d; }; struct student

{ int num; char name[9]; struct date bir;}stu,*p=&stu; 则以下对结构体变量stu成员的引用中错误的是( )。 A.p->bir->yB.p->bir.yC.stu.bir.yD.stu.name

5. 若有以下定义

struct student { int num; char name[9]; }stu[2]={1,”zhangsan”,2,”lisi”};

以下能输出字符串”lisi”的语句是( )。

A.printf(“%s”,stu[0].name);B.printf(“%s”,&stu[1].name);

C.printf(“%s”,stu[1].name );D.printf(“%s”,&stu[1].name[0]); 6. 有以下定义语句

易读文库

struct node { int n; struct node *next; } x,y,*p=&x,*q=&y; 则能将y节点链接到x节点之前的语句为( )。 A. x.next=p B. x.next=q C. y.next=p

D. y.next=q

7. 已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点,将p2所指节点从链表中删除并释放的语句为( )。

A.p1=p2;free(p2);B.p1->next=p2->next;free(p2);

C.*p1.next=*p2.next;free(p2); D.p1=p2->next;free(p2); 8. 已建立一单向链表,指针变量p1指向链表中某一节点,p2指向下一节点;指针变量p指向新申请节点,将p所指节点插入到链表中p1与p2之间的语句为( )。

A.p->next=p2;p1->next=p;B.p1->next=p;p->next=p2 C.p=p2;p1->next=p; D.p1=p;p->next=p2;

2。程序阅读题

1. 下列程序的输出结果是 。

#include

struct st { int num; char name[10]; int age;

} x[3]={{1,“zhang”,19},{2,“li”,20},{3,“wang”,21}},*p=x; void main()

{ printf(“%s,%d\\n”,(p+2)->name,(*p).age); } 解:wang,19 2.下列程序的输出结果是 。

#include

struct ks {int a;int *b;}s[4],*p; void main() { int n=1,i;

for(i=1;i<4;i++) { s[i].a=n;

s[i].b=&s[i].a; n+=2; }

p=&s[0]; p++;

printf(“%d,%d\\n”,(++p)->a,(p++)->a); }

3. 程序填空题 1.【程序说明】从键盘输入一行字符串(小于80个),将其中所有的小写字母改写后依次输出到 c:\\bb.txt文件(其他字符不输出)。改写规则:‘a’改’b’,’b’改‘c’,…..’x’改‘y’ ,‘z’改‘a’.

#include #include void main() { FILE *fp; char str[81]; int i=0;

if((fp=fopen( 1 ))==NULL) { printf(“can’t open the file.\\n”);

易读文库

exit(0);

}

gets(str); while(str[i]!=’\\0’)

{ if(str[i]>=’a’&&str[i]<=’z’)

{if( 2 ) 3 ; else

str[i]=str[i]+1; fputc(4) ; } i++; }

fclose(fp);}

2. 【程序说明】 当前目录下存放着文本文件from.txt,将其中除数字以外的内容显示在屏幕上。 【程序】

#include<stdio.h> #include<stdlib.h> void main()

{FILE *fr;int ch; if( 5 ){ printf(” Can not open file一>form.txt”); exit(0); } while(!feof(fr)){ 6 ; if(7 ) putchar(ch); } fclose(fr); }

3. 【程序说明】 函数change 完成将结点数大于 1 的链表中最后一个结点链接到链表

的最头上,成为链表的第一个结点 。 struct student { char name [ 9 ] ; int cj ;

struct student * next ; } ;

struct student *change (struct student * h ) { struct student *q, * p ; q=p=h ;

while ( p->next != NULL ) { q=p ; 8 } q->next = NULL ; p->next = h ; 9 return h ; }

4.【程序说明】已建立学生“英语”课程的成绩链表(成绩存于score域中,学号存于num

易读文库

域中),下列函数用于输出成绩优秀(>=85分)学生的学号和成绩及成绩优秀的学生人数。

Void require( struct student *head) {struct student *p;10; if(head!=NULL) {11; while(p!=NULL)

{if(12){ printf(“} %6.1f\\n”,p->num,p->score);x++;} p=p->next; }

printf(“%d\\n”,x); } }

4. 编程题

1. 有1000个学生,每个学生的数据包挎学号、姓名、三门课的成绩。数据从键盘输入,

要求按各个学生的三门课平均成绩从高分到低分打印出这1000个学生的学号、姓名、以及个人平均成绩。

2. 读一个指定的文本文件 -- D:盘根目录下的a.txt文件,显示在屏幕上,如果有大写

字母,则改成小写字母在输出,并统计行数输出 (注:一行字符以 ’\\n’ 结尾 )。

C综合练习4 (宏,结构体和文件)参考答案

1.单项选择题B B B A C C B A

2。程序阅读题 1. wang,19 2. 5,1

3. 程序填空题

1 “c:\\bb.txt”,”w” 2 str[i]==’z’3str[i]= ‘a’ 4 str[i],fp

5 (fr=fopen(“from.txt”,”r ”))==NULL 6 ch=fgetc(fr) 7 ch>'9'||ch<'0' 8 p=p->next ; 9 h=p ;

10 int x=0 11 p=head 12 p->score>=85 4. 编程题

1. #include struct student{

int num; /* 学号 */

char name[8]; /* 姓名 */ int score[3]; /* 成绩 */

float avr; }; /*每人平均成绩*/ struct student stud[1000]; void main()

/* 定义1000个记录学生信息的结构数组 */


C综合练习-4附参考答案.doc 将本文的Word文档下载到电脑
搜索更多关于: C综合练习-4附参考答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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