1. 下面定义结构变量的语句中错误的是____ A) struct student {int num; char name[20]; } s; B) struct {int num; char name[20]; } s;
C) struct student { int num; char name[20]; } struct student s; D) struct student { int num; char name[20]; }; student s;
2. 如果有定义语句: stuct {
int x,y; } s[2]={ {1,3}, {2,7} };
则语句:printf(\输出结果为____ A) 0 B) 1 C)2 D)3
3. 根据下面的定义, 能打印出字母 M 的语句是____ struct person{ char name[10];
int age;}c[10={\ A) printf(\ C) printf(\
4. 设有如下定义,则对 data 中的a成员的正确引用是____ struct sk{int a; float b;} data , *p=&data;
A) (*p).data.a B) (*p).a C) p->data.a D) p.data.a
5. 对于以下结构定义, (*p) -> str++ 中的++ 加在____ struct {int len; char *str; } *p;
A) 指针 str上 B)指针 p 上 C) str 指向的内容上 D)语法错误
6) 要调用数学处理函数时,在#include 命令行中应包含_____ A) “stdio.h” B) “string.h” C) “math.h” D) “ctype.h”
7) 对于以下递归函数 f , 调用 f(4), 其返回值为_____ A) 10 B) 4 C) 0 D) 以上均不是
8) 执行下列程序段: #define MA(x,y) (x*y) int i=5;
i = MA(i, i+1) -7; 变量 i 的值应为: A) 30 B) 19 C) 23 D) 1
9) 宏定义 “define DIV(a,b) a/b”经 DIV(x+5,y-5) 引用,替换展开后是_____ A) x+5/y-5 B) (x+5/y-5) C) (x+5)/(y-5) D) (x+5)/(y-5)
10) 定义带参数的宏 #define JH(a, b, t) t=a; a=b; b=t, 对两个 a, b的值进行交换,下列表述中
正确的是_____
A) 不定义参数 a 和b 将导致编译错误 B) 不定义参数 a,b 和 t 将导致编译错误 C) 不定义参数 t 将导致运行结果错误 D) 不需要定义参数 a,b和 t 的类型
11) 执行下面程序, 正确的输出是_____ int x=5,y=7; void swap() { int z;
z = x; x = y; y = z; }
int main() { int x=3, y=8; swap();
printf(\ return 0; }
A) 3,8 B) 8,3 C) 5.7 D)7,5
12) 下列说法中正确的是_____
A) 若全局变量仅在单个文件中访问,则可以将这个变量修改成静态全局变量,以降低模块 间的耦合度
B) 若全局变量仅由单个函数访问,则可以将这个变量改为函数的静态局部变量,以降低模 块间的耦合度
C) 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑变量 生存周期问题
D) 静态全局变量使用过多, 可能会导致动态存储区(堆栈)溢出
13. 以下语句将输出_____ #include
printf(\ A) 0 0 1 B) 0 0 -1 C) NULL EOF D) 1 0 EOF
14) 如果二进制文件 a.dat已经存在, 现在要求写入全新数据, 应以____方式打开。 A) \
15. 定义 FLE *fp, 则文件指针 fp 指向的是 A) 文件在磁盘上的读写位置 B) 文件在缓冲区上的读写位置 C) 整个磁盘文件 D) 文件类型结构体
16. 缓冲文件系统的文件缓冲区位于
A) 磁盘缓冲区中 B)磁盘文件中 C) 内存数据区中 D) 程序文件中
17. 使文件指针重新定位到文件读写的首地址的函数是
A) ftell() B) fseek() C) rewind() D) ferror()
【参考答案】
1) D 2) B 3) C 4) B 5) D 6) C 7) A 8) B 9) A 10) C 11) A 12) A 13) B 14) B 15) B 16) C 17) C
二.填空题
1. 以下程序的功能是: 输入一个字符串, 输出其中所出现过的大写英文字母。 如运行时输
入字符串 “FONTNAME and FIELNAME”, 则输出 FONTAMEIL。请填空。 int main(void)
{ char x[80], y[26]; int i,j,ny=0; i = 0;
while ((x[i]=getchar())!= '\\n') i++; x[i]='\\0';
for (i=0; ___[1]___ ; i++)
if (x[i]>='A' ___[2]___ x[i]<='Z') { for (j = 0; j for (i=0; i 2.“.” 称为___【1】___ , “->” 称为___【2】___ 3. 完成下列程序, 该程序计算 10 名学生的平均成绩 #include char name[20]; int score; }; struct student stud[10]; int main(void) { int i, sum =0; for (i =0; i<10; i++) { scanf(\【1】___ &stud[i].score); sum+= stud[i].score; } printf(\ return 0; } 4.下列程序读入时间数值, 将其加1 秒后输出, 时间格式为:hh:mm:ss,即小时:分钟:秒, 当小时等于 24 小时, 置为 0 #include int hour, minute, second; } time; int main(void) { scanf(\【1】___); time.second++; if (___【2】___==60) { ___【3】___; time.second = 0; if ( time.minute==60) { time.hour ++; time.minute = 0; if (___【4】___) time.hour = 0; } } printf(\ return 0; } 5. 写出下面程序的运行结果是________ struct s1{ char c1,c2; int n; }; struct s2 { int n; struct s1 m; } m={ 1, {'A','B', 2} }; 第15次练习-夏7周 7 浙江大学计算机学院 int main(void) { printf(\ return 0; } 6. 写出下面程序的运行结果是________ struct abc{ int a;