当前位置:首页 > C语言课件及补充练习题
6.有#define N 80 和 printf(“*******”); 以下说法中正确的是
A. 两者都是C语句 B. 前者是C语句,后者不是 C. 前者不是,而后者是C语句 D. 两者都不是C语句 7.程序 #define f(x) x*x
main()
{ int a=6,b=2,c; c=f(a)/f(b); printf(“%d\\n”,c); } 的输出结果是
A. 9 B. 6 C. 36 D. 18 8.头文件的扩展名可以是
A. .h和.obj B. .h和.c C. .c和.obj D. 任意
二、 填空题:
1.宏展开是在______时进行的,不分配______,不进行值的______处理。 2.宏替换不占______时间,只占______时间。 3.以下的for循环体共执行循环 次。
# define “stdio.h” # define N 2 # define M N+1
# define NUM (M+1)*M/2 main()
{ int i,n=0;
for (i=1; i<=NUM; i++) { n++ ; printf (“%d”,n); } printf(“\\n”); }
4.文件包含使用 命令,其作用是将一已知文件的内容 到命令处。 5.写出判断x是否是奇数的宏定义,宏名为isodd: 。 6.C语言的编译预处理命令主要有三类: 、 、 。 7.若所需头文件file1.h恰巧在源文件目录下,则应用 形式来实现。
三、 判断题
1.宏替换时先求出实参表达式的值,然后代入形参运算求值。( ) 2.宏名无类型,其参数也无类型。( )
3.使用宏次数多时,宏展开后源程序不会变长。( )
4.调用函数只能得到一个返回值,而用宏可以得到几个结果。( )
5.在一被包含文件中又可以包含另一被包含文件,文件包含是可以嵌套的。( ) 6.用一个指定的标识符来代表一个字符串,它的一般形式为 #define 标识符 字符串;( )
7.在宏定义#define PI 3.l4l59中,如果将1误输成小写的L,则编译时不出错,
运行时出错。( )
8.取消PI的宏定义为 #undef PI 0 ( )
四、程序阅读题
1. #define POWER(x) x*x
37
#include
{ int x=5, y=3; int t, z; t=POWER(x+y); z=POWER(x*y); printf(“%d, %d\\n”,t,z); }
该程序的运行结果为:
2.main()
{int b=5;
#define b 2
#define f(x) b*(x)
int y=3; printf(“%d\\n”,f(y+1)); #undef b
printf(“%d\\n”,f(y+1)); #define b 3
printf(“%d\\n”,f(y+1)); }
该程序的运行结果为:
五、程序填充题:
1.求数组中的最大元素,在调试程序时如下: N 10 #define TEST 1
main()
{ int i,max,a[N];
# if TEST
for (i=0; i< ,i++) a[i]=10+i; # else
for (i=0; i 第八章 构造数据类型 一、 单项选择题: 1.设有以下语句: struct st{int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,?\\0?},*p; p=&a[0]; 则表达式 的值是6。 38 A. p++ ->n B. p->n++ C. (*p).n++ D. ++p->n 2.若有下面的说明和定义,则sizeof(struct aa)的值是 。 struct aa{int r1; double r2; float r3;} mya; A. 8 B. 10 C. 12 D. 14 3. 若程序中有下面的说明和定义: struct abc{int x; char y;} struct abc s1,s2; 则会发生的情况是 。 A. 编译出错 B. 程序将顺利编译、连接、执行 C. 能顺利通过编译、连接,但不能执行 D. 能顺利通过编译,但连接出错 4.选择出k的正确值 。 enum {a,b=5,c,d=4,e} k; k=e; A.3 B. 4 C. 5 D. 6 5.选择出不正确的函数定义: 。 A. struct tree func(s) B. int *func(s) struct tree s[]; char *s[]; { { ... ... } } C. struct tree *func(s) D. int *func(s) char **s; char *s[10][]; { { ... ... } } 6.若有以下的说明,则在scanf函数调用语句中对结构体变量成员的不正确引用方 式为 。 struct pupil { char name[20]; int age; int sex; } pup[5], *p; p=&pup[0]; A.scanf(“%s”, pup[0].name); B. scanf(“%d”, &pup[0].age); C. scanf(“%d”, &(p->sex)); D. scanf(“%d”, &p->age); 7. 设有100个学生的考试成绩数据表如下形式: 学号NO 姓名NAME 39 成绩SCORE 整型 字符型数组 实型 在下面结构体数组的定义中,不正确的是: A. struct student B. struct stud [100] { { int no; int no; char name [10]; char name [10]; float score; float score; }; }; struct student stud[100]; C. struct student D. struct { { int no; int no; char name [10]; char name [10]; float score; float score; } stud[100]; ]stud[100]; 8. 设有一结构体类型变量定义如下: struct date { int year; int month; int day; }; struct worklist { char name [20]; char sex; struct date birthday; }person; 若要对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是: A. year=1976 B. birthdat.year=1976 C. person.birthday.year=1976 D. person.year=1976 9.有以下程序 #include char name[10]; int age; }; void fun(struct stu *p) 40
共分享92篇相关文档