(1) 下面叙述正确的是(D )。
A) main( )函数必须位于源程序文件的开头
B) 程序中必需含有自定义函数
C) 每行最多只能写两条语句
D) 所有语句都必须以分号“;”结束
(2) 下面叙述错误的是(D )。
A) C语言规定可逐个引用数组元素但不能一次引用整个数组
B) C语言数组名称是数组在内存中的首地址
C) 数组中每一个元素都属于同一个数据类型
D) C语言数组长度在定义数组时刻不作确定
(3) 以下程序段的运行结果是(C )。
int t[ ][3]={1,2,3,4,5,6,7,8,9,10,11,12};
printf(“%d\n”,t[1][1]);
A) 4
B) 3
C) 5
D) 1
(4) 以下程序段的运行结果是(C )。
char str[3][2]={…a?,?b?,?c?,?\0?,?e?,?f?};
printf(“%s”,str[0]);
A) abc\0ef
B) abcef
C) abc
D) a
(5) 以下程序段的运行结果是(C )。
int f(int c)
{ c+=2;
return c;
}
main( )
{ int a=2,c=5;
a=f(a);
printf(“%d %d \n”,a,c);
}
A) 2 4
B) 4 4
C) 4 5
D) 2 5
B) C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率
C) “#include
D) 宏定义也是C语句,必须在行末加分号
(7) 若有定义:int a=2,*p=&a;,则以下(A )均表示地址。
A) &a,p
B) a,p
C) a,*p
D) &a,*p
(8) 以下程序段运行后x的值为(C )。
int a[ ]={1,2,3,4,5,6,7,8};
int i,x,*p;
x=1;
p=&a[1];
for (i=0;i<3;i++)
x*=*(p+i);
A) 1
B) 120
C) 24
D) 6
(9) 下列(C )对结构类型变量定义是错误的。
A) struct teacher
{ int num;
int age;
};
struct teacher teach1;
B) struct
{ int num;
int age;
} teach1, teach2;
C) struct
{ int num;
int age;
} teacher;
struct teacher teach1;
D) struct teacher
{ int num;
int age;
} teach1;
(10) 以下程序段运行后,(D )对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3)
A) *(*(a+i)+j)
B) *(*(p+i)+j)
C) p[i][j]
D) *(p[i]+j)
(11) 若有定义:
char ch;
int j,k;
enum day {sun, mon, tue, wed, thu, fri, sat};
int a[sat];
则(C )对下列语句是否符合语法规则的判断是正确的。
sun=0; /*语句1*/
j=mon+tue; /*语句2*/
if (a[mon]>0) j++; /*语句3*/
A) 语句1、2、3均正确
B) 语句2正确,语句1和语句3错误
C) 语句1错误,语句2和语句3正确
D) 语句1、2、3均错误
(12) C语言的基本数据类型包括(A )。
A) 整型、实型、字符型
B) 整型、指针型、字符型
C) 整型、实型、逻辑型
D) 整型、实型、空类型
(13) 下面程序运行后,屏幕显示File open error!,则可能的原因是(A )。
#include
main()
{
FILE *fp;
char str[256];
fp=fopen(“test.txt”,”rt”);
if (fp= =NULL)
{ printf(“File open error!:);
return;
}
fscanf(fp,”%s”,str);
fclose(fp);
}
A) 当前工作目录下没有test.txt文件
B) 函数fopen( )的参数是错误的
C) 当前工作目录下的test.txt文件是空文件
D) text.txt文件已经打开
B) float x=3.2, int i,j=6;
C) float x=2.3,b,c;
D) int a=2,b+=a;
(15) 若有定义:int x,y,z; 语句x=(y=z=3,++y,z+=y); 运行后x的值为(B )。
A) 6
B) 7
C) 8
D) 3
(16) 若有定义int a=8,b=5;要实现输出形式为:8*5=40,正确的printf( )函数调用语句是(D )。
A) printf(“a*b=a*b\n”);
B) printf(“a*b=%d\n”,a*b);
C) printf(“%d*%d=a*b\n”,a,b);
D) printf(“%d*%d=%d\n”,a,b,a*b);
(17) 若有定义:int a;且表达式!a的值为0,则表达式(B )的值为1。
A) !(a<0||a>0)
B) a!=0
C) a= =0
D) a=0
(18) 下列运算符中优先级最低的是(C )。
A) >
B) *
C) =
D) !
(19) 以下程序段运行后x的值为(C )。
int a=3,b=6,x;
x=(a= =b)?a++:--b;
A) 6
B) 4
C) 5
D) 3
(20) 以下程序段运行后x的值为(A )。
int i=0,x=0;
for (;i<=5;i++,i++)
{x+=3;}
A) 9
(21)(B )是关于C语言数据类型的正确叙述。
A) 枚举类型不是基本类型
B) 变量使用前应定义相应的数据类型
C) 不允许使用空类型
D) 数组不是构造类型
(22)(C )是正确的数组定义。
A) int n=5; int arr[n];
B) int n; n=5; int arr[n];
C) int arr[10];
D) int N=5, arr[N];
(23) 以下程序段运行后a的值为(B )。
int a=2;
a=strcmp(“miss”,”miss”);
A) true
B) 0
C) 1
D) -1
(24) 以下程序段的运行结果是(D )。
int fun(int array[3][3])
{ int j;
for (j=0;j<3;j++) array[1][j]++;
printf("\n");
}
main( )
{ int j,a[3][3]={0,1,2,1,0,4,2,4,5};
fun(a);
for (j=0;j<3;j++) printf(“%2d”,a[1][j]);
printf("\n");
}
A) 1 0 4
B) 0 1 2
C) 1 2 3
D) 2 1 5
(25) 若有定义:#define PI 3,则表达式PI*2*2的值为(C )。
A) 4
B) 不确定
(26) 若有定义:int *p1,*p2;,则不能用于指针变量p1、p2之间的运算符是(C )。
A) -
B) =
C) +
D) = =
(27) 若有定义:
struct teacher
{ int num;
char sex;
int age;
} teacher1;
则下面叙述错误的是(A )。
A) teacher1是结构类型名
B) struct teacher是用户定义的结构类型
C) num、sex、age都是结构变量teacher1的成员
D) struct是结构类型的关键字
(28) 下列程序段运行后,表达式(A )的值为3。
struct point
{ int x;
int y;
} *p;
struct point a[3]={1,2,3,4,5,6};
p=a;
A) p[1].x
B) *(p+2)
C) p[3].x
D) p[2].x
(29) 若有定义:
typedef int NUM[100];
NUM n;
则(A )语句是正确的。
A) n[0]=2;
B) NUM=2;
C) NUM=n;
D) n=2;
(30)(D )为非法的字符串常量。
A) “case”
B) ““
(31) 若当前工作目录下有一文本文件test.txt,其内容为"cprogram“(不包含引号),则以下程序段的运行结果是(A )。
FILE *fp;
char *str;
if ((fp=fopen(“test.txt”,”r”))!=NULL)
str=fgets(str,5,fp);
printf("%s",str);
fclose(fp);
A) cpro
B) cprog
C) ogram
D) gram
(32) 若有定义:int a=3;,语句a+=a-=a*a;运行后a的值为(C )。
A) -3
B) -6
C) -12
D) 0
(33) 若有定义:int i=3,j=6;,则表达式(--i)*(j++)的值为(A )。
A) 12
B) 10
C) 18
D) 15
(34) getchar( )函数的功能是获取终端输入的(B )。
A) 一个实型变量值
B) 一个字符
C) 多个字符
D) 一个整型变量表达式
(35) 若有定义:int a;,则表达式(B )不能用来判断a值为奇数是“真”,偶数是“假”。
A) a%2= =1
B) !(a%2)
C) a%2
D) !(a%2= =0)
(36) 若有定义:float x=3.5,y=3.6; 则表达式(A )的值为6。
A) (int)x+(int)y
B) x+y
C) (int)(x+y)
D) int(x+y)
void main()
{ int a,b=2,c=6;
a=3;
if (a>6) a=a+b;
else if (a= =6) b=a+c;
else a=b+c;
printf("%d\n",a);
}
A) 9
B) 6
C) 8
D) 5
(38) 以下程序段运行后x的值为(D )。
int i,j,x=0;
for (i=3;i>=1;i--)
for (j=1;j<=i;j++)
x=x+2;
A) 8
B) 14
C) 10
D) 12
(39) 下面叙述错误的是(D )。
A) c源程序必须包含一个main( )函数
B) c源程序可由一个或多个函数组成
C) 一个c源程序的执行是从main( )函数开始,直到main( )函数结束
D) 注释说明部分只能位于c源程序的最前面
(40) 下面叙述错误的是(C )。
A) 一个指针变量只能指向同一类型的变量
B) 一个变量的地址称为该变量的指针
C) 可以将一个整数值赋给指针变量
D) 任何指针变量都可以与空指针NULL进行比较
(41) 以下程序的运行结果是(C )。
main()
{ int x,y;
int *p,*q,*t;
x=23;y=45;
p=&x;q=&y;
t=p;
p=q;
A) 45,23
B) 45,45
C) 23,45
D) 23,23
(42) 若有定义int a=1,b=2,t=3;
struct data
{ char a;
float b[3];
long c;
}d1;
则变量d1的长度是(B )。
A) 4
B) 17
C) 12
D) 15
(43) 以下程序的运行结果是(A )。
main()
{ int a[3]={1,2,3};
int *num[3];
int **p,i;
for (i=0;i<3;i++)
num[i]=&a[i];
p=num;
printf("%d ",**p);
}
A) 1
B) &a[0]
C) 3
D) num
(44) 下面程序运行后,屏幕显示write ok!,则下面叙述正确的是(C )。
main( )
{ FILE *fp;
fp=fopen(“data.txt”,”wt”);
if (fp!=NULL)
{ fprintf(fp,”%s\n”,”File write successd!\n”);
fclose(fp);
printf(“write ok!\n”);
}
}
A) 当前工作目录下找不到data.txt文件
B) 当前工作目录的data.txt文件已经打开
(45)(C )为正确的用户标识符。
A) union
B) 3_row
C) max_at
D) min-5
(46) 若有定义:int b=-15;,则(C )为正确的赋值表达式。
A) b=*5
B) *b=6
C) b+=b*3
D) b+10=-5
(47) 以下叙述错误的是(C )。
A) 算术运算符中不包含“=”运算符
B) 模运算符“%”是c语言基本的算术运算符
C) 算术运算符中只有“*”、“/”优先级高于关系运算符
D) 自加和自减运算符只能用于变量,而不能用于常量或表达式
(48) 若有定义:float x=2,y; int a=3; 语句y=1*(x+a)/3;运行后,y的值为(D )。
A) 2.0
B) 1.0
C) 0
D) 1.666667
(49) 若有定义:int arr[15],n=5; 无法正确引用arr数组元素的是(A )。
A) arr[10+n]
B) arr[0]
C) arr[15-n]
D) arr[n]
(50) 以下程序段运行后s的值是(B )。
int a[3][3]={1,2,3,1,2,3,1,2,3};
int i,j,s=0;
for (i=0;i<3;i++)
for (j=i;j<3;j++)
s+=a[i][j];
A) 12
B) 14
C) 13
D) 15
char b[]=”xyz”;
strcpy(a,b);
printf(“%c”,a[2]);
A) c
B) y
C) z
D) b
(52) 以下程序的运行结果是(C )。
#define X a+b
main( )
{
int a=3,b=4,s1;
s1=2*X;
printf("%d\n",s1);
}
A) 8
B) 14
C) 10
D) 6
(53) 若有定义int x=1,y=2,n=3; 则(C )为正确的表达式。
A) float(y/n)
B) (x+y)(y+n)
C) x=y*3,y=(x+n)/y
D) x=ny
(54) 若有定义
struct teacher
{ int num;
char name[10];
char sex;
int age;
}t1={2001,”Li Ming”,?M?,35};
则下列(B/C)对结构变量引用是正确的。
A) t1->name
B) https://www.wendangku.net/doc/b6318515.html,
C) https://www.wendangku.net/doc/b6318515.html,[0]
D) t1->name[0]
(55) 若有定义enum day{sun,mon,tue,wed,thu,fri,sat};,则枚举常量sun、mon的值分别为(A )。
A) 0 1
B) 7 1
(56) 若有语句int a; char c; scanf(“%3d%c”,&a,&c);,为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是(C )。(说明:
A) 135__6
B) 135
C) 1356
D) 135__6__
(56) 若有定义int a=3,b=5,c=8; 则表达式!(a-b)|| (c-b)的值为(A )。
A) 1
B) 0
C) 2
D) 3
(57) 若有定义:float x=3.5,y=5.5; 则表达式(A )的值为2。
A) (int)(x+y)%7
B) int (x+y)%7
C) (x+y)%7
D) (int)x+y%7
(58) 若有定义:int i,x=0;语句for (i=1;i<=3;i++) x+=2;与下列(D )程序段不等价。
A) i=1;
for (;i<=3;i++) x+=2;
B) for (i=1;i<=3;)
{x+=2;i++;}
C) i=1;
for (;i<=3;)
{x+=2;i++;}
D) i=1;
for ( ; ;i++) x+=2;
(59) 以下(A )对二维数组arr的初始化是错误的。
A) int arr[2][3]={{1,2},{3,4},{5,6}};
B) int arr[ ][3]={1,2,3,4,5};
C) int arr[2][3]={{1},{3,4,5}};
D) int arr[2][3]={{1,2},{3,4}};
(60) 若有定义:char str1[10],str2[10]=”Fujian”;,能将字符串”Fujian”赋给数组str1的正确语句是(D )。
A) strcopy(str1,str2);
B) str1=”Fujian”;
C) strcpy(str2,str1);
D) strcpy(str1,str2);
A) 形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化
B) 传递给形参的是数组第一个元素的值
C) 传递给形参的是数组元素的个数
D) 传递给形参的是数组中全部元素的值
(62) 以下程序段的运行结果是(C )。
int x[ ]={2,3,4,5,6,7},*p=x;
int i,s=0;
for (i=1;i<5;i++) s+=p[i++];
printf (“%d”,s);
A) 14
B) 6
C) 8
D) 20
(63) 若有定义int x,a,b; 语句x=(a=2,b=3,a+b);运行后,x、a、b的值依次为(D )。
A) 2 3 5
B) 5 3 2
C) 3 2 5
D) 5 2 3
(64) 以下程序段的运行结果是(B )。
int s=15;
switch (s/4)
{default: printf(“Over “);
case 1: printf(“One “);break;
case 2: printf(“Two ”);
}
A) Two
B) Over One
C) Over Two
D) One
(65) 若有定义#define F 2+3,则表达式F*F的值为(D )。
A) 13
B) 17
C) 25
D) 11
(66) 以下程序段的运行结果是(A )
int x[3]={1,2,3};
int *p;
(67) 若有定义
union u_type
{ int x;
float y[3];
char z;
}a;
则变量a的长度是(D )
A) 4
B) 1
C) 15
D) 12
(68) 若有定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];p=a;(C )对数组a元素的引用是正确的。
A) **(p+4)
B) (**p)[2]
C) *(p[2]+3)
D) *(p[4])
(69)(B )为正确的字符常量。
A) '\084'
B) '@'
C) '165'
D) 'bcd'
(70) 以下程序段的运行结果是(A )。
int s=15;
switch (s/4)
{
case 1: printf(“One “);
case 2: printf(“Two ”);
case 3: printf(“Three”);
default: printf(“Over “);
}
A) Three Over
B) Two Over
C) Three
D) One Over
D) 36
(72) 以下程序段的运行结果是(B )。
char str[ ]={“FuJian”};
printf (“%d”,strlen(str));
A) 8
B) 6
C) 7
D) 9
(73) 以下程序的运行结果是(C )。
int a=2,b=3;
int min (int a,int b)
{ int c;
c=a
return (c);
}
main( )
{ int a=4;
printf(“%d”,min(a,b));
}
A) 4
B) 2
C) 3
D) 2,3
(74) 以下程序段运行后*(p++)的值为(B )。
char a[5]=”work”;
char *p;
p=a;
A) …o?
B) …w?
C) a[1]的地址
D) a[0]的地址
(75) 若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则(B )表达式是错误的。
A) p++
B) a++
C) a[2]
D) p[2]
A) 定义文件指针,读文件,写文件,关闭文件
B) 操作文件,定义文件指针,修改文件,关闭文件
C) 定义文件指针,打开文件,读写文件,关闭文件
D) 打开文件,定义文件指针,读写文件,关闭文件
(76)(D )为正确的变量名。
A) 5_pro
B) case
C) else
D) pro_5
(77) 下面叙述正确的是(B )。
A) 2/3与2%3等价
B) 5/(int)4.0与5/4等价
C) ++2与- -3等价
D) ++2与3等价
(78) 若有定义float x;,要从键盘输入数据6.02赋给x,则应选用(B )语句。
A) scanf (“%8.2f”,&x);
B) scanf (“%f”,&x)
C) scanf (“%4.2f”,&x)
D) scanf (“%1.2f”,&x)
(79) 若有定义:int x,a; 赋值语句a=(x%3= =0)?0:1; 与(D )语句不等价。
A) if (x%3!=0) a=1; else a=0;
B) if (!(x%3= =0)) a=1; else a=0;
C) if (x%3= =0) a=0; else a=1;
D) if (x%3) a=0; else a=1;
(80) 以下程序段运行后x的值为(A )。
int i =0,x=2;
while (i++<=5)
{
x+=2;
}
A) 14
B) 8
C) 12
D) 10
(81) 下面叙述正确的是(C )。
D) 预处理命令也是C语句,必须以分号结束
(82)(A )对枚举类型的定义是错误的。
A) enum b{1,2,3};
B) enum a{A,B,C};
C) enum d{X=0,Y=5,Z=9};
D) enum c{D=3,E,F};
(83) C源程序中main( )函数的位置(D )。
A) 必须在自定义函数前面
B) 必须位于程序的最前面
C) 必须在系统库函数后面
D) 可以在自定义函数后面
(84)(A )为合法的常量。
A) 1.23E+8
B) 5,326
C) 3.21E-6.5
D) …b_k?
(85) 下面叙述正确的是(A )。
A) C语言中整型与字符型变量的混合运算表达式的结果是整型
B) “abc”+”xxx”是正确表达式
C) 模运算符”%”两边运算数的数据类型是任意的
D) (3+9)++是正确表达式
(86) 若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a
A) 0
B) 2
C) 1
D) -1
(87) 若有定义:int x; char c=?A?;则正确的赋值表达式是(D )。(说明:?A?的ASCII码的十进制值为65,?a?的ASCII 码的十进制值为97)
A) x=c+?CBA?
B) x=c+?ABC?
C) x=?ABC?
D) x=c+32
(88) 下面叙述正确的是(B )。
D) for循环是先执行循环体语句,后判断表达式
(89) 若有定义:int a[10],i=2;,能正确引用a数组的是(B )。
A) a(7)
B) a[10-i]
C) a[10]
D) a[9+i]
(90) 若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}};,则a[1][1]的值为(B )。
A) 3
B) 4
C) 1
D) 2
(91) 以下程序段的运行结果是(D )。
union
{ int num1;
int num2;
}s;
s.num1=20;
s.num2=30;
printf(“%d”,s.num1);
A) 2030
B) 20
C) 50
D) 30
(92) 若有定义:int a,b=5;,语句a=(b/2)+b%2;运行后a的值为(B )。
A) 4
B) 3
C) 0
D) 2
(93) 若有定义:char c1=?A?,c2=?B?;,语句printf(“%d+%d=%d”,c1,c2,c1+c2);运行后的结果为(A )。(说明:?A?的ASCII 码的十进制值为65)
A) 65+66=131
B) A+B=AB
C) A+B=131
D) 65+66=AB
(94) 以下程序的运行结果是(C )。
printf(“%d “,a);
}
main( )
{ int i;
for (i=1;i<=2;i++) fun( );
}
A) 0 1
B) 1 1
C) 1 2
D) 0 0
(95) 下面程序运行后,文件d_f.dat的内容是(A )。
main( )
{ FILE *fp; int i=10,j=20;
fp=fopen(“d_f.dat”,”w”);
fprintf(fp,”%d “,i);
fclose(fp);
fp=fopen(“d_f.dat”,”a”);
fprintf(“%d”,j);
fclose(fp);
}
A) 10
B) 20 10
C) 20
D) 10 20
(96) 若有定义:int i,x;,(C )不是死循环。
A) for ( ; ;i+=2) ;
B) while (x=1);
C) for (x=5;x>0;x--) ;
D) for (i=10; ;i--) ;
(97) 以下程序段运行后*(p+1)的值为(A )。
char a[ ]=”good”;
char *p;
p=a;
A) …o?
B) a[1]的地址
C) 不确定
D) …g?
(98) 若有定义:int a[3][2];,则表达式&a[2][1]-a的值为(C )。
A) 2
(99)(A )能正确定义一个指向函数的指针。
A) int (*p)( )
B) int (*p( ))
C) (int *)p( )
D) int *p( )
(100) 若有定义
Typedef int * INTEGER;
INTEGER p;
则下面叙述正确的是(B )
A) p是与INTEGER相同的类型
B) 程序中可用INTEGER定义int类型指针变量
C) p是一个整型变量
D) 程序中可用INTEGER定义int类型变量
(101) 若有定义:int a,b=6; 语句a=--b;运行后,a、b的值分别是(C )。
A) 5 6
B) 6 6
C) 5 5
D) 6 5
(102) 以下程序段运行后x的值为(D )。
int a[3][3]={1,2,3,4,5,6,7,8,9};
int i=0,x=0;
for ( ;i<3;i++) x+=a[i][i];
A) 12
B) 0
C) 18
D) 15
(103) 以下程序的运行结果是(C )。
main( )
{ char a[ ]=”137”,*p;