自学考试《C语言程序设计》习题及答案
来源 :中华考试网 2017-01-31
中【1.81】已知:
struct
{ int i;
char c;
float a;
}test;
则sizeof(test)的值是 。
A) 4 B) 5 C) 6 D) 7
【1.82】已知:
union
{ int i;
char c;
float a;
}test;
则sizeof(test)的值是 。
A) 4 B) 5 C) 6 D) 7
【1.83】已知:
union u_type
{ int i;
char ch;
float a;
}temp;
现在执行"temp.i=266;printf("%d",temp.ch)"的结果是 。
A) 266 B) 256 C) 10 D) 1
【1.84】若有以下程序段:
struct dent
{ int n;
int *m;
};
int a=1,b=2,c=3;
struct dent s[3] = { {101,&a},{102,&b},{103,&c} };
struct dent *p=s;
则以下表达式中值为2的是 。
A) (p++)->m B) *(p++)->m C) (*p).m D) *(++p)->m
【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是 。
struct pupil
{ char name[20];
int sex;
}pup,*p;
p=&pup;
A) p.pup.sex B) p->pup.sex C) (*p).pup.sex D) (*p).sex
【1.86】以下对结构变量stul中成员age的非法引用是 。
struct student
{ int age;
int num;
}stu1,*p;
p=&stu1;
A) stu1.age B) student.age C) p->age D) (*p).age
【1.87】若有以下定义和语句:
union data
{ int i;
char c;
float f;
}a;
int n;
则以下语句正确的是 。A) a=5; B) a={2,'a',1.2}; C) printf("%d\n",a); D) n=a;
【1.88】已知:
struct sk
{ int a;
int age;
}date,*p;
如果要使指针p指向data中的成员a,正确的赋值语句是____。
A) p = (struct sk *)&data.a; B) p = (struct sk *)data.a;
C) p = &data.a; D) *p = data.a;
【1.89】已知 enum week {sun,mon,tue,wed,thu,fri,sat}day;则正确的赋值语句是____。
A) sun=0; C) san=day; D) sun=mon; D) day=sun;
【1.90】已知 enum color {red,yellow=2,blue,white,black}ren;执行下述语句的输出结果是____。
printf("%d",ren=white);
A) 0 B) 1 C) 3 D) 4
【1.91】已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出是____。
man=0;
switch(man)
{ case 0: printf("People\n");
case 1: printf("Man\n");
case 2: printf("Woman\n");
default: printf("Error\n");
}
A) People B) Man C) Woman D)Error
【1.92】下述关于枚举类型名的定义中,正确的是____。
A) enem a={ one,two,three }; B) enem a { one=9,two=-1,three };
C) enem a={"one","two","three"}; D) enem a {"one","two","three"};
【1.93】C语言中标准输入文件stdin是指 。
A) 键盘 B) 显示器 C) 鼠标 D) 硬盘
【1.94】要打开一个已存在的非空文件"file"用于修改,选择正确的语句____。
A) fp=fopen("file", "r"); B) fp=fopen("file", "a+");
C) fp=fopen("file", "w"); D) fp=fopen('file", "r+");
【1.95】当顺利执行了文件关闭操作时,fclose函数的返回值是 。
A) -1 B) TRUE C) 0 D) 1
【1.96】fscanf函数的正确调用形式是 。
A) fscanf (文件指针, 格式字符串, 输出列表);
B) fscanf (格式字符串, 输出列表, 文件指针);
C) fscanf (格式字符串, 文件指针, 输出列表);
D) fscanf (文件指针, 格式字符串, 输入列表);
【1.97】使用fgetc函数,则打开文件的方式必须是 。
A) 只写 B) 追加 C) 读或读/写 D) 参考答案B和C都正确
【1.98】已知宏定义
#define N 3
#define Y(n) ((N+1)*n)
执行语句z=2*(N+Y(5+1));后,变量z的值是____。
A) 42 B) 48 C) 52 D) 出错
【1.99】已知宏定义 #define SQ(x) x*x,执行语句printf("%d",10/SQ(3));后的输出结果是____。
A) 1 B) 3 C) 9 D) 10
【1.100】已知宏定义如下:
#define PR printf
#define NL "\n"
#define D "%d"
#define D1 DNL
若程序中的语句是 PR(D1,a);经预处理后展开为____。
A) printf(%d\n,a); B) printf("%d\n",a);
C) printf("%d""\n",a); D) 原语句错误
【单项选择题参考答案】
【1.1】答案: A
注释:int是C语言的关键字
【1.2】答案: B
【1.3】答案:A
【1.4】答案:B
注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。
【1.5】答案:D
【1.6】答案:D
【1.7】答案:A
【1.8】答案:A
注释:int型表示整数的范围是-32768~32767。
【1.9】答案:D
注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。
【1.10】答案:B
注释:长整型数32768在计算机内的表示是1000 0000 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。
【1.11】答案:C
注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。
【1.12】答案:A
注释:C语言中,int型的负数是采用补码表示的。
【1.13】答案:D
【1.14】答案:C
注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线'\'用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一个字符,D选项在单引号内出现4个字符,是错误的。
【1.15】答案:C