(45)下列描述中不正确的是( )
A、字符型数组中可能存放字符串
B、可以对字符型数组进行整体输入、输出 C、可以对整型数组进行整体输入、输出
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
(46)下面程序运行后,关于a、b、c的值应输出为( )
#include \ main() {
int a=1, b=2, c=2,t;
while (a
A、1,2,0 B、2,1,0 C、1,2,1 D、2,1,1
(47)在16位 PC机环境下,下列程序的输出结果是( ) struct tt
{ int n1;char n2;float n3;
union uu{int u1[3];char u2[3];}su; };
main() {printf(“%d\\n”,sizeof(struct tt));} A、11 B、12 C、13 D、9
(48)若有如下程序:
void s(char *m,int n) {
*m=*m+3;n=n+3; printf(\); }
void main() {
char p=’b’,q=’B’; s(&q,p);
printf(\); }
则程序运行后的输出结果是( ) A、E,e,b,E B、e,E,b,F C、E,e,e,E D、e,E,b,E
- 31 -
(49)以下程序的输出结果是( ) #include
char str[100]=\ int i;
for(i = 0; *p != ’\\0’; p++,i++); printf(\); return 0; } A、7 B、8 C、99 D、100
(50)某C编译系统规定,int型数组占2个字节,则定义以下语句后,sizeof(aa)=( ) struct {long num; char name[20]; union {float x; short y; }xy; }aa; A、32 B、26 C、30 D、28
(51)语句:printf(“%d”,!0);的输出结果是( ) A、1 B、0
C、有语法错误 ,不能执行 D、!0
(52)函数f定义如下,执行语句“sum=f(4)+f(2);”后,sum的值应为( ) int f(int m) { static int i=0; int s=0; for(;i<=m;i++) s+=i; return s; } A、13 B、16 C、10 D、8
(53)fwrite函数的一般调用格式是( ) A、fwrite(buffer,count,size,fp); B、fwrite(fp,count,size,buffer); C、fwrite(fp,size,count,buffer); D、fwrite(buffer,size,count,fp); (54)有以下程序段 main()
{ int i=1,sum=0,n;
- 32 -
scanf(\); do
{ i+=2; sum+=i ;
}while(i!=n); printf(\); }
若使程序的输出值为15,则应该从键盘输入的n的值是( ) A、1 B、3 C、5 D、7
(55)下列选项可作为C语言赋值语句的是( ) A、a=1;b=2; B、a=b=6 C、i--
D、y=int(x);
(56)已知有以下的说明,
int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( ) A、5 B、0 C、4 D、7
(57)已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出结果是( ) man=0;
switch(man)
{ case 0: printf(\);break; case 1: printf(\);break; case 2: printf(\);break; default: printf(\);break; }
A、People B、Man C、Woman D、Error
(58)以下能正确计算1×2×3×??×10的程序段是( ) A、do {i = 1;s = 1;
s = s * i; i + +; } while (i <= 10); B、do {i = 1;s = 0; s = s * i; i + +;
} while (i <= 10);
C、i = 1;s = 1; do {s = s * i;
i + +;
- 33 -
} while (i <= 10); D、i = 1;s = 0; do {s = s * i; i + +;
} while (i <= 10); (59)以下程序的运行结果是( ) void main() {
int a=4; char ch=’a’;
printf( \(a&2)&&(ch>’A’)); } A、0 B、1 C、2 D、3
(60)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,下列语句正确的是( ) A、p=2*(int*)malloc(sizeof(int)); B、p=(int*)malloc(2*sizeof(int)); C、p=(int*)malloc(2*2);
D、p=(int*)malloc(2,sizeof(int)); 二、多选题(共计20题)
(1)以下叙述中正确的有( )。
A、在程序的一行上可以出现多个有效的预处理命令行 B、宏定义不是C语句,不必在行末加分号 C、宏替换不占用运行时间,只占用编译时间
D、在以下定义中C R是称为“宏名”的标识符 #define C R 045
(2)要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功能的有( )。 A、funa(int *a, int n, int x) {
*a = x;
while(a[n] != x) n--; return n; }
B、funb(int *a, int n, int x) { int k;
for(k = 1; k <= n; k++) if(a[k] == x) return k; return 0; }
C、func(int a[], int n, int x) {
int *k;
a[0] = x; k = a+n;
while(*k != x) k--;
- 34 -
return k - n; }
D、fund(int a[], int n, int x) {
int k = 0; do {k++; }while((k < n+1)&&(a[k]!=x)); if((k < n+1)&&a[k] == x)) return k; else return 0; }
(3)下面说法正确的有( )。
A、共用体变量的地址和它各成员的地址都是同一地址 B、共用体内的成员可以是结构变量,反之亦然 C、在任一时刻,共用体变量的各成员只有一个有效 D、函数不可以返回一个共用体变量
(4)如有两个字符数组a、b,则以下输入语句正确的有( )。 A、gets(a,b);
B、scanf(\);
C、for(i=0;(a[i]=getchar())!=’\\n’;i++); for(i=0;(b[i]=getchar())!=’\\n’;i++); D、gets(a);gets(b);
(5)当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有( )。(假设k>0) A、k%2 B、k%2==0 C、(k%2)!=0 D、k%2==1 (6)设有以下语句 struct st{ int n;
struct st *next; };
static struct st a[3]={5,&a[1],6,&a[2],7,},*p=&a[0];
若要使printf(\)输出值为6,则下划线处表达式可以为( )。 A、p->n++ B、++p->n C、(++p)->n D、p->next->n
(7)下列说法不正确的有( )。
A、带参数的宏定义中的参数是没有类型的 B、宏展开将占用程序的运行时间
C、宏定义命令是C语言中的一种特殊语句
D、使用#include命令包含的头文件必须以\为后缀
(8)下列有关函数调用的说法正确的有( )。
- 35 -