struct stu{ int a; float b;}stutype; A)struct 是结构体类型的关键字 B)struct stu 是用户定义的结构体类型 C)stutype 是用户定义的结构体类型名 D)a 和 b 都是结构体成员名
61. 当定义一个结构体变量时,系统为它分配的内存空间是(
A)结构体中一个成员所需的内存容量 B)结构体中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和
62. 定义结构体类型“struct s{ int x; float f; }a[3];”,则执行语句“printf(\”的输出 结果是(
A)4
)。
B)12
)。
C)24
D)8
)。
63. 执行下列程序段的输出结果是(
struct c{int x; int y;}s[2]={1,3,2,7}; printf(\A)14
B)6
C)2 D)21
二、填空题(参考答案见第 20 页)
请把答案填在下面的横线上,否则不能得分。 1. C 语言程序的基本单位是____________。
2. 要求运算对象必须是整型的运算符是____________。
3. 为了计算表达式??x?? y??2014.6
,需要用到的数学函数是____________。(写出函数名)
4. 若要计算实数 x 的绝对值,则要用到的数学函数是____________。(写出函数名) 5. 结构化程序的三种基本控制结构是____________、选择结构和循环结构。 6. C 语言程序设计中,单行注释以____________符号作开始标记。
7. C 语言程序设计中,多行注释以____________符号作开始标记,以____________符号作为结束 标记。
8. C 语言的标识符只能由字母、____________和____________组成,且第一个字符必须为字母或 ____________。
9. C 语言中一个实数常量默认为____________类型。 10. C 语言中求字节的运算符是____________。
11. 若有 C 语言语句“scanf(\”,如果要给变量 a 输入 5,变量 b 输入 6,则在程 序执行时,应该输入____________,然后回车。 12. C 语言中表示换行的转义字符是____________。
13. C 语言程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行上。每条语句的最 后必须有一个____________符号表示语句的结束。
14. 若有定义“int a=2,b=3,x; x=a>b?a:b;”,则 x 的值为____________。
15. switch 语句中,为了在其它条件都不满足时执行某个操作,应该使用____________子句。
第 6 页 共 20 页
16. 如果循环体不需要执行任何操作,此时应使用____________语句作为循环体。 17. 若要提前终止循环语句的执行,应该使用____________语句。
18. 若有定义“int a,*p=&a;”,要通过指针变量 p 来输入 a 的值,请填空。
scanf(\
19. 若有定义“int x,*p;”,为了让 p 指向 x,应该执行的操作是____________。 20. 判断闰年的逻辑表达式为 y%4==0&&y0!=0______y@0______0。 21. 关系表达式的值是一个逻辑值,只有____________种取值。
22. 设“a=1,b=2,c=3,d=4,m=n=1”,执行完“(m=a>b)&&(n=c>d)”后,n 的值为____________。 23. C 语言提供了 3 种基本循环结构:while 循环、do-while 循环和____________循环。 24. for 语句中有 3 个表达式,各表达式间用____________分隔。
25. 除了给指针变量赋地址值外,还可以给指针变量赋空值,给指针变量 p 赋空值的语句是 ____________。
26. 能表述“10
27. 程序段“int k=10;while(k=0) k=k-1;”,则循环体语句将会执行____________次。
28. 设 i, j, k 均为 int 型变量,执行完语句“ for (i=0,j=10;i<=j;i++,j--) k=i+j;”后, k 的值为 ____________。
29. 设 x 为 int 型变量,请写出一个关系表达式,用以判断 x 同时为 3 和 7 的倍数时,关系表达式 的值为真。____________
30. 为了使函数能返回一个确定的值,必须使用____________语句。 31. 定义一个函数没有返回值,则函数类型应为____________。 32. 指针作为函数实参时,实际传递的是某个变量的____________。 33. 普通变量做参数时,实参与形参占有____________的内存单元。
34. 程序在调用一个函数的过程中,该被调函数又可以调用其它函数,这种情况称之为函数的 ____________调用。
35.一个 C 源程序中至少应包括一个____________函数。
36. 如果在程序中用到函数 sqrt,则在程序开始处应使用命令:#include <____________>(请填上 应该包含的文件名)。
37. 从作用域的角度,变量可分为局部变量和____________。
38. 若有定义“int i,*p;”,为了使 p 指向 i,则能实现该功能的语句是____________。
39. 在 C 程序中,指针变量 p1 指向整型变量 a,如需要让指针变量 p2 也指向整型变量 a,则对应 的语句为____________或者____________。
40. 若有定义“static int a[10]={1,2,3};”,则 a[3]的值为____________。 41. 一维数组中,下标的取值是从____________开始的。
42. 若有定义“int a[3][4];”,则该数组的最后一个元素是____________。
43. 若有定义“char *p=\”,执行“puts(p+2);”的输出结果为____________。
第 7 页 共 20 页
44. 若有定义“int a[10],*p1=&a[5],*p2=&a[2];”,则 p1-p2=____________。 45. 若有定义“int a[10];”,则*(a+5)表示____________。 46. 设 int a[2][3]={{2},{3}};则数组元素____________的值为 3。
47. 若有定义:double xx[3][5];,则 xx 数组中行下标的最大取值为____________。
48. 若有定义:char s1[20],s2[ ]=\,则执行语句:strcpy(s1,s2+2);后,字符数组 s1 中存放的 字符串为____________。
49. 字符串用一维字符数组形式进行存储,它以____________结尾。
50. 有语句“char c[ ]={\”;该字符串的长度是____________,c[3]=____________。 51. 若有定义“char str[10];”,用 str 存储一个字符串时,则该字符串的最大长度为____________。 52. 若有定义:int a[10], *p=&a[3]; ,则 p[4]表示的数组元素是 a[____________]。 53. 连接两个字符串的库函数为____________。
54. 在 C 语言中,二维数组在内存中的存放顺序是____________。 55. 若二维数组 a 有 m 列,则在 a[i][j]前的元素个数为____________。
56. 若有枚举类型定义“enum weekday{Sun=7, Mon, Tue, Wed=0, Thu, Fri, Sat};”,则枚举常量 Mon 的值为____________。
57. 若有结构体类型的定义“struct test{ char x; int y; float z;};”,则该结构体类型的变量所占字节 数为____________。
58. 若有结构体类型的定义“struct test{ int x; int y;}tt,*p=&tt;”,通过指针 p 引用结构体变量 tt 的 成员 x 的方法有____________和____________。
三、程序填空题
注:以下参考答案仅用于参考,若干答案也可以写成其它等价的形式。 1. 下列程序段要从键盘输入两个变量 x、y 的值,并交换 x 和 y。请填空。
int x,y,temp;
scanf(\temp=x; ____________; y=temp;
printf(\
2. 下面的程序段用于读入一个华氏温度,计算并输出对应的摄氏温度,华氏温度转换为摄氏温度 的公式为: C???double C,F; printf(\scanf(\______________________; printf(\
3. 下面的程序段用于计算周期为 T 秒的人造卫星离地面的平均高度,其中:地球质量 M=6× 1024kg,地球半径 R=6.371×106m。人造卫星离地面的平均高度 H 的计算公式为:
// %lf
// C=5.0/9*(F-32) // x=y
5 ?F?? 32?。请填空。 9
第 8 页 共 20 页
H???#define PI 3.1415926 #define M 6E24 #define R 6.371E6 double T,H,x; printf(\scanf(\
x=______________________; H=____________-R; printf(\
3 6.67??10??11 MT 2 4? 2
? R
// 6.67E-11*M*T*T/(4*PI*PI) // pow(x, 1.0/3)
4. 下面的程序段用于从键盘输入 3 个正整数,找到最大数并输出。请填空。
int a,b,c,max;
scanf(\____________; if (____________)
max=b; if (c>max)
max=c;
printf(\
5. 有如下分段函数,根据输入的 x 值计算 y 值,并输出。请填空。
// max=a
// maxmax
double x,y; scanf(\if (x<-2)
y=-exp(2*x+1)+3; ____________ (x<=3)
y=2*x-1; else
y=3*____________-11; printf(\
?? e 2 x?1?? 3???????x????2????
??? 2?? x?? 3??y????2x?? 1 ?3 lg?3x?? 5?? 11????x?? 3????
// else if
// log10(3*x+5)
6. 闰年是指能被 4 整除,但不能被 100 整除;或者能被 400 整除的年份。请填空。
int year;
scanf(\
if (____________&&year0!=0____________year@0==0)
printf(\else
printf(\
7. 从键盘读入一个百分制成绩,将其转换为对应的五级制并输出。请填空。
int score;
// year%4==0、||
第 9 页 共 20 页
scanf(\ 输入一个 0-100 之间的分数
// switch ____________(score/10) {
case 10:
case 9: printf(\case 8: printf(\case 7: printf(\case 6: printf(\____________: printf(\}
8. 下面的程序段用于计算 10!。请填空。
int i,s;
s=____________; for (i=1;i<=10;i++)
____________; printf(\
9. 从键盘输入若干字符,以回车结束,统计其中大写字母、空格及其它字符的个数。请填空。
char ch;
int upper=0,space=0,other=0; while ((ch=____________)!='\\n')
if (________________________) //大写字母
upper+=1; else if (____________)
space+=1; else
other+=1;
printf(\10. 下面的程序段输出九九乘法表。请填空。
for (i=1; i<=9; i++) {
for (j=1;j<=____________;j++)
printf(\____________; }
11. 下面的程序段用于输出 101 到 200 之间的所有素数。请填空。
int m,k,i;
for (m=101;m<=200;m+=2) {
k=(int)sqrt(m); for (i=2;i<=k;i++)
if (____________)
break;
if (i==____________)
printf(\
}
// i
//空格
// ch==' ' 或 ch==32 // getchar( )
// ch>='A' && ch<='Z'
// break
// default
// 1 // s=s*i
//其它字符
// printf(\
第 10 页 共 20 页
// m%i==0
// k+1