福建省计算机等级考试二级选择题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题
(1). 下面程序运行后,文件d_f.dat的内容是(1 )。
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);
}
① 10 20 ② 20 ③ 20 10 ④ 10
(2). 若有定义:enum day{sun,mon, tue, wed, thu, fri, sat} ; ,则枚举常量sun、mon的值分别为(4 )。
① 7 0 ② 1 2 ③ 7 1 ④ 0 1
(3). 下列程序段运行后,表达式( 2 )的值为3。
struct point
{ int x;
int y;
} *p;
struct point a[3]={1,2,3,4,5,6};
p=a;
①p[3].x ②p[1].x ③ *(p+2) ④p[2].x
(4). 以下程序段的运行结果是(3 )。
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);
① 20 ② 14 ③ 8 ④ 6
(5). C语言的函数体由( 1 )括起来。
① { } ② [ ] ③ < > ④ ( )
(6). 若有定义:int x,y,z; 语句 x=(y=z=3,++y,z+=y); 运行后,x的值为(2 )。
① 7 ② 6 ③ 8 ④ 3
(7). 若有定义:int x; char c='A'; 则正确的赋值表达式是( 4 )。(说明:'A'的ASCII码的十进制值为65,'a'的ASCII码的十进制值为97)
① x='ABC' ② x=c+'ABC' ③ x=c+'CBA' ④ x=c+32
(8). 下面叙述错误的是( 3 )。
① C语言规定可逐个引用数组元素但不能一次引用整个数组 ② 数组中每一个元素都属于同一个数据类型 ③ C语言数组长度在定义数组时可不作确定 ④ C语言数组名称是数组在内存中的首地址
(9). 以下程序的运行结果是( 4 )。
int f(int c)
{ c+=2;
return c ;
}
main()
{ int a=2,c=5;
a=f(a);
printf("%d %d \n",a ,c);
}
① 2 4 ② 2 5 ③ 4 4 ④ 4 5
(10). C语言中,二维数组元素在内存中的存放顺序是(3)。
① 由用户自己定义 ② 按列存放 ③ 按行存放 ④ 随机存放
(11). 以下程序的运行结果是( 1 )。
#define X a+b
main( )
{ int a=3,b=4,s1;
s1=2*X;
printf("%d\n",s1);
}
① 10 ② 14 ③ 8 ④ 6
(12). 若有定义:char str1[10],str2[10]="Fujian"; ,能将字符串"Fujian"赋给数组str1的正确语句是( 1 )。
① strcpy(str1,str2); ② strcpy(str2,str1); ③ strcopy(str1,str2); ④ str1="Fujian";
(13). 若有定义: int i,x; ( 3 )不是死循环。
① for( ; ;i+=2) ; ② for(i=10; ;i--) ; ③ for(x=5;x>0;x--) ; ④ while(x=1) ;
(14). 只能向终端输出一个字符的是( 1 )。
① putchar()函数 ② scanf()函数 ③ printf()函数 ④ getchar()函数
(15). C语言的基本数据类型包括( 3 )。
① 整型、字符型、指针型 ② 整型、实型、逻辑型 ③ 整型、实型、字符型 ④ 整型、实型、空类型
(16). 若有定义:int a,b=5; 语句a=(b/2)+b%2; 运行后,a的值为( 2 )。
① 4 ② 3 ③ 2 ④ 0
(17). x的值在-20至-5之间为“真”,否则为“假”的正确逻辑表达式为

( 3 )。
① !(x>-20) && !(x<-5) ② -5-20 && x<-5 ④ -20(18). 以下程序的运行结果是( 3 )。
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);
}
① 5 ② 6 ③ 8 ④ 9
(19). 若有定义:int a[3][4]={{1,2},{3,4},{5,6,7}}; ,则a[1][1]的值为( 4 )。
① 2 ② 3 ③ 1 ④ 4
(20). 若有定义:
struct teacher
{int num;
char sex;
int age;
}teacher1;
则下面叙述错误的是( 4 )。
① struct是结构类型的关键字 ② struct teacher是用户定义的结构类型 ③ num、sex、age都是结构变量teacher1的成员 ④ teacher1是结构类型名
(21). ( 1 )是关于C语言数据类型的正确叙述。
① 变量使用前应定义相应的数据类型 ② 不允许使用空类型 ③ 枚举类型不是基本类型 ④ 数组不是构造类型
(22). ( 4 )为非法的字符串常量。
① "case" ② " " ③ "056" ④ '123'
(23). 若有定义:int b=-15; 则( 2 )为正确的赋值表达式。
① b=*5 ② b+=b*3 ③ *b=6 ④ b+10=-5
(24). 若有定义:int a,b=6; 语句a=--b; 运行后,a、b的值分别是( 4 )。
① 6 5 ② 5 6 ③ 6 6 ④ 5 5
(25). 若有定义 float x; 要从键盘输入数据6.02赋给x,则应选用( 3 )语句。
① scanf("%1.2f",&x); ② scanf("%4.2f",&x); ③ scanf("%f",&x); ④ scanf("%8.2f",&x);
(26). 若有定义:int a=1,b=2,c=3,d=4,t=2,k=2; 语句(t=a① 0 ② 2 ③ -1 ④ 1
(27). 若有定义:int a=6,b=7,k=0,t=1; 语句 (k=a① 0 0 ② 1 1 ③ 1 0 ④ 0 1
(28). 以下程序段运行时,若从键盘输入5,则运行结果是(4 )。
int a,y=10;
scanf("%d",&a);
if (a>10)
y=a+6;
printf("%d\n",y+a);
① 10 ② 16 ③ 11 ④ 15
(29). 以下程序段运行后x的值为( 1 )。
int i=0,x=2;
while(i++<=5)
{x+=2;
}
① 14 ② 12 ③ 8 ④ 10
(30). 以下程序段运行后x的值为(4 )。
int a[8]={1,2,3,4,5,6,7,8},i,x=0;
for(i=0;i<8;i++,i++)
x=x+a[i];
① 20 ② 18 ③ 36 ④ 16
(31). 以下程序段运行后s的值是( 2 )。
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];
① 15 ② 14 ③ 13 ④ 12
(32). 以下程序的运行结果是( 2 )。
int a=2,b=3;
int min(int a,int b)
{ int c;
c=areturn(c);
}
main()
{ int a=4;
printf("%d",min(a,b));
}
① 4 ② 3 ③ 2 ④ 2,3
(33). 若有定义:#define PI 3,则表达式PI*2*2的值为( 2 )。
① 322 ② 12 ③ 4 ④ 不确定
(34). 以下程序段运行后*(p+1)的值为( 2 )。
char a[]="good";
char *p;
p=a;
① a[1]的地址 ② 'o' ③ 不确定 ④ 'g'
(35). 以下程序段运行后x的值为( 4 )。
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);
① 6 ② 1 ③ 120 ④ 24
(36). 以下程序段的运行结果是( 4 )。
union
{ int num1;
int num2;
}s;
s.num1=20;
s.num2=30;
printf("%d",s.num1);
① 20 ② 2030 ③ 50 ④ 30
(37). 下面程序运行后,屏幕显示File open error!,则可能的原因是( 4 )。
#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);
}
① 当前工作目录下的test.txt文件是空文件 ② 函数fopen()的参数是错误的 ③ test.txt文件已经打开 ④ 当前工作目录下没有test.txt文件
(38). (1 )为正确的用户标识符。
① max_at ② 3_row ③ union ④ min-5
(39). 若有定义:int x,a,b; 语句x=(a=2,b=3,a+b); 运行后,x、a、b的值依次为( 2 )。
① 2 3 5 ② 5 2 3 ③ 5 3 2 ④ 3 2 5
(40). 下面叙述正确的是( 2 )。
① 模运算符"%"两边运算数的数据类型是任意的 ② C语言中整型与字符型变量的混合运算表达式的结果是整型 ③ (3+9)++ 是正确表达式 ④ "abc"+"xxx"是正确表达式
(41). 若有定义 int a=8,b=5; 要实现输出形式为: 8*5=40 ,正确的printf()函数调用语句是( 4 )。
① printf("a*b=%d\n",a*b); ② printf("%d*%d=a*b\n",a,b); ③ printf("a*b=a*b\n"); ④ printf("%d*%d=%d\n",a,b,a*b);
(42). 下列运算符中优先级最低的是( 1 )。
① = ② ! ③ > ④ *
(43). 以下程序段的运行结果是( 4 )。
int s=15;
switch(s/4)
{default:
printf("Over ");
case 1:
printf("One ");
break;
case 2:
printf("Two ");
}
① One ② Two ③ Over Two ④ Over One
(44). 下面叙述正确的是( 1 )。
① for循环的循环体可包含多条语句,但必须用花括号{ }括起来 ② for循环只能用于循环次数已经确定的情况 ③ 在for循环中,不能用break语句跳出循环体 ④ for循环是先执行循环体语句,后判断表达式
(45). 若有定义:int arr[15],n=5; 无法正确引用arr数组元素的是( 4 )。
① arr[15-n] ② arr[0] ③ arr[n] ④ arr[10+n]
(46). 以下程序段的运行结果是( 4 )。
char str[3][2]={ 'a','b','c','\0','e','f'};
printf("%s",str[0]);
① abcef ② a ③ abc\0ef ④ abc
(47). 以下程序段运行后*(p++)的值为( 3 )。
char a[5]="work";
char *p;
p=a;
① a[0]的地址 ② 'o' ③ 'w' ④ a[1]的地址
(48). 若有定义:
struct data
{ char a;
float b[3];
long c;
}d1;
则变量d1的长度是( 4 )。
①12 ②4 ③ 15 ④17
(49). 若有定义:int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; , 则( 3 )表达式是错误的。
① p++ ② a[2] ③ a++ ④ p[2]
(50). 若由定义:
typedef int NUM[100];
NUM n;
则( 3 )语句是正确的。
① NU

M=n; ② n=2; ③ n[0]=2; ④ NUM=2;
(51). 下面程序运行后,屏幕显示write ok!,则下面叙述正确的是( 3 )。
main()
{ FILE *fp;
fp=fopen("data.txt", "wt");
if(fp!=NULL)
{ fprintf(fp,"%s\n", "File write successed!\n");
fclose(fp);
printf("write ok!\n");
}
}
① 当前工作目录下找不到data.txt文件 ② 当前工作目录下存在data.txt文件,其中的内容是“write ok!” ③ 当前工作目录的data.txt文件已经关闭 ④ 当前工作目录的data.txt文件已经打开
(52). ( 3 )为正确的变量名。
① case ② else ③ pro_5 ④ 5_pro
(53). 若有定义:float x=2,y; int a=3; 语句y=1*(x+a)/3; 运行后,y的值为( 3 )。
① 1.0 ② 0 ③ 1.666667 ④ 2.0
(54). 若有定义:int x,a; 赋值语句a=(x%3==0)?0:1; 与( 4 )语句不等价。
① if (!(x%3==0)) a=1; else a=0; ② if (x%3!=0) a=1; else a=0; ③ if (x%3==0) a=0; else a=1; ④ if (x%3) a=0; else a=1;
(55). 以下程序段的运行结果是( 1 )。
int t[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("%d\n",t[1][1]);
① 5 ② 3 ③ 1 ④ 4
(56). 以下程序段运行后a的值为( 2 )。
int a=2;
a=strcmp("miss","miss");
① 1 ② 0 ③ true ④ -1
(57). 以下程序的运行结果是( 2 )。
fun()
{ static int a=0;
a++;
printf("%d ",a);
}
main()
{ int i;
for(i=1;i<=2;i++)
fun();
}
① 1 1 ② 1 2 ③ 0 1 ④ 0 0
(58). 若有定义:int *p1,*p2; ,则不能用于指针变量p1、p2之间的运算符是( 4 )。
① = = ② = ③ - ④ +
(59). 以下程序段的运行结果是( 2 )。
int x[3]={1,2,3};
int *p;
p=x;
for(p++;p<&x[2];p++)
printf("%d ",*p);
① 3 ② 2 ③ 2 3 ④ 1 2
(60). 下列( 4 )对结构类型变量定义是错误的。
① struct
{int num;
int age;
}teach1,teach2;
② struct teacher
{int num;
int age;
}teach1;
③ struct teacher
{int num;
int age;
};
struct teacher teach1;
④ struct
{int num;
int age;
}teacher;
struct teacher teach1;
(61). 若有定义:
char ch ;
int j, k ;
enum day{sun, mon, tue, wed, thu, fri, sat} ;
int a[sat];
则( 2 )对下列语句是否符合语法规则的判断是正确的。
sun=0 ; /* 语句1 */
j=mon+tue ; /* 语句2 */
if(a[mon]>0) j ++ ; /* 语句3 */
① 语句1、2、3均错误 ② 语句1错误,语句2和语句3正确 ③ 语句1、2、3均正确 ④ 语句2正确,语句1和语句3错误
(62). 下面叙述正确的是( 2 )。
① 程序中必需含有自定义函数 ② 所有语句都必须以分号";"结束 ③ main()函数必须位于源程序文件的开头 ④ 每行最多只能写两条语句
(63). 若有定义:float x=3.5,y=3.6; 则表达式( 2 )的值为6。
① (int)(x+y) ② (int)x+(int)y ③ int(x+y) ④ x+y
(64). 以下程序段运行后x的值为( 1 )。
int

i=0,x=0;
for(;i<=5;i++,i++)
{x+=3;}
① 9 ② 15 ③ 6 ④ 12
(65). 若有定义:int a[3][2]; ,则表达式&a[2][1]-a的值为( 3 )。
① 5 ② 4 ③ 3 ④ 2
(66). 以下程序的运行结果是( 4 )。
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");
}
① 1 0 4 ② 1 2 3 ③ 0 1 2 ④ 2 1 5
(67). 下面叙述错误的是( 1 )。
① 宏定义也是C语句,必须在行末加分号 ② “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE ③ C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 ④ “#inclue ”命令的作用是在预处理时将stdio.h文件中的实际内容代替该命令
(68). 下面叙述错误的是( 4 )。
① 任何指针变量都可以与空指针NULL进行比较 ② 一个指针变量只能指向同一类型的变量 ③ 一个变量的地址称为该变量的指针 ④ 可以将一个整数值赋给指针变量
(69). 以下程序段运行后x的值为( 4 )。
int a[]={1,2,3},b[]={4,3,3};
int *p,*q;
int i,x;
p=a; q=b;
for(i=0;i<3;i++)
if(*(p+i)==*(q+i))
x=*(p+i)*2;
① 4 ② 2 ③ 不确定 ④ 6
(70). 以下程序的运行结果是( 2 )。
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[0] ② 1 ③ 3 ④ num
(71). ( 2 )不是文件读库函数。
①fgetc() ② fputs() ③fscanf() ④fread()
(72). C源程序中main()函数的位置( 4 )。
① 必须位于程序的最前面 ② 可以在自定义函数后面 ③ 必须在自定义函数前面 ④ 必须在系统库函数后面
(73). 若有定义:int a=3; 语句a+=a-=a*a; 运行后,a的值为( 3 )。
① -6 ② -3 ③ -12 ④ 0
(74). 若有语句 int a; char c; scanf("%3d%c",&a,&c); 为将整数135赋给a,字符'6'赋给c,正确的数据输入方式是( 3 )。(说明:代表换行,__代表空格)
① 1356 ② 135__6 ③ 1356 ④ 135__6__
(75). 若有定义:int x=1,y=2,z=3; 则表达式( 2 )的值为0。
① x>y || x(76). 以下程序段运行后x的值为( 4 )。
int a=3,b=6,x;
x=(a==b)?a++:--b;
① 3 ② 4 ③ 6 ④ 5
(77). 若有定义: int i,x=0; 语句for(i=1;i<=3;i++) x+=2;与下列( 2 )程序段不等价。
① i=1;
for( ;i<=3;i++) x+=2;
② i=1;
for( ; ;i++) x+=2;
③ i=1;
for( ;i<=3; )
{x+=2; i++; }
④ for(i=1;i<=3; )
{x+=2; i++;}
(78). ( 3 )能正确定义一个指向函数的指针。
① int (*p)() ② int (*p()) ③ int *p() ④ (int *)p()
(79). 若有定义:enum num{a1,a2=3,a3,a4=10} ; ,则枚举常量a2

、a3的值分别为( 2 )。
① 2 3 ② 3 4 ③ 3 3 ④ 1 2
(80). C语言中,对文件操作的一般步骤是( 4 )。
① 打开文件,定义文件指针,读写文件,关闭文件 ② 定义文件指针,读文件,写文件,关闭文件 ③ 操作文件,定义文件指针,修改文件,关闭文件 ④ 定义文件指针,打开文件,读写文件,关闭文件
(81). 若有定义:int i=3,j=6; 则表达式(--i)*(j++)的值为( 2 )。
① 18 ② 12 ③ 10 ④ 15
(82). 若有定义: int a; 且表达式 !a的值为0,则表达式( 4 )的值为1。
① !(a<0 || a>0) ② a=0 ③ a==0 ④ a!=0
(83). 以下程序段运行后x的值为( 4 )。
int a[8]={1,2,3,4,5,6,7,8},i,x=0;
for(i=1;i<8;i++,i++)
x=x+a[i];
① 16 ② 36 ③ 18 ④ 20
(84). 以下(1 )对二维数组arr的初始化是错误的。
① int arr[2][3]={{1,2},{3,4},{5,6}}; ② int arr[2][3]={{1,2},{3,4}}; ③ int arr[][3]={1,2,3,4,5}; ④ int arr[2][3]={{1},{3,4,5}};
(85). 以下程序段的运行结果是( 1 )。
char str[]={ "FuJian"};
printf("%d",strlen(str));
①6 ② 8 ③ 9 ④ 7
(86). 下面叙述错误的是( 3 )。
① 预处理命令行都必须以“#”开头 ② C源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 ③ 预处理命令行必须以分号结束 ④ “#define PRICE 30”命令的作用是定义一个与30等价的符号常量PRICE
(87). 下列程序段运行后,( 2 )对数组a元素的引用是错误的。(其中0≤i<4,0≤j<3)
int i,j,(*p)[3];
int a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
p = a;
① *(p[i]+j) ② *(*(p+i)[j]) ③ *(*(a+i)+j) ④ p[i][j]
(88). 若有定义:
typedef int * INTEGER;
INTEGER p;
则下面叙述正确的是( 4 )。
① 程序中可用INTEGER定义int类型变量 ② p是一个整形变量 ③ p是与INTERGE相同的类型 ④ 程序中可用INTEGER定义int类型指针变量
(89). 若当前工作目录下有一文本文件test.txt,其内容为“cprogram”(不包含引号),则以下程序段的运行结果是( 1 )。
FILE *fp;
char *str;
if((fp=fopen("test.txt","r"))!=NULL)
str=fgets(str,5,fp);
printf("%s",str);
fclose(fp);
① cpro ② cprog ③ gram ④ ogram
(90). 若有定义 int x=1,y=2,n=3; 则( 4 )为正确的表达式。
① float(y/n) ② x=ny ③ (x+y)(y+n) ④ x=y*3,y=(x+n)/y
(91). 若有定义:char c1='A',c2='B'; 语句printf("%d+%d=%d",c1,c2,c1+c2);运行后的结果为( 2 )。(说明:'A'的ASCII码的十进制值为65)
① A+B=131 ② 65+66=131 ③ 65+66=AB ④ A+B=AB
(92). ( 1 )是正确的数组定义。
① int arr[10]; ② int n; n=5; int arr[n]; ③ int N=5, arr[N]; ④ int n=5; int arr[n];
(93). 以下程序段的运行结果是( 1 )。
char a[]="abcdef";
char b[]="xyz";
strcpy(a,b);
printf("%c",a[2]);
① z ② y ③ c ④

b
(94). 若有定义:#define F 2+3,则表达式F*F的值为( 4 )。
① 17 ② 13 ③ 25 ④ 11
(95). 以下程序的运行结果是( 1 )。
main( )
{ char a[]="137",*p;
for(p=a;pprintf("%s",p);
}
① 137377 ② 7 ③ 137 ④ 13737
(96). 若有定义:
union u_type
{int x;
float y[3];
char z;
}a;
则变量a的长度是( 3 )。
① 4 ② 15 ③ 12 ④ 1
(97). ( 3 )对枚举类型的定义是错误的。
① enum a{A, B, C}; ② enum d{X=0, Y=5, Z=9}; ③ enum b{1, 2, 3}; ④ enum c{D=3, E, F};
(98). 若有定义: int a=3,b=5,c=8; 则表达式 !(a-b) || (c-b) 的值为( 2 )。
① 2 ② 1 ③ 3 ④ 0
(99). 若有定义:int a; 则表达式( 2 )不能用来判断a值为奇数是“真”,偶数是“假”。
① a%2 ② !(a%2) ③ a%2==1 ④ !(a%2==0)
(100). ( 4 )为合法的常量。
① 5,326 ② 'b_k' ③ 3.21E-6.5 ④ 1.23E+8
(101). C语言中,若缺省定义函数返回值类型,则该函数默认返回值类型是( 4 )。
① void ② long ③ double ④ int
(102). C语言中,数组名作为函数调用的实参时,下面叙述正确的是( 1 )。
① 形参数组中各元素值的改变会使实参数组相应元素的值同时发生变化 ② 传递给形参的是数组第一个元素的值 ③ 传递给形参的是数组元素的个数 ④ 传递给形参的是数组中全部元素的值
(103). 以下程序段运行后x的值为( 3 )。
int i=0,x=0;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for (;i<3;i++)
x+=a[i][i];
① 18 ② 12 ③ 15 ④ 0
(104). 若有定义:int a[10],i=2; 能正确引用a数组元素的是( 4 )。
① a(7) ② a[10] ③ a[9+i] ④ a[10-i]
(105). getchar()函数的功能是获取终端输入的( 4 )。
① 一个整型变量表达式 ② 多个字符 ③ 一个实型变量值 ④ 一个字符
(106). ( 3 )为正确的字符常量。
① '165' ② '\084' ③ '@' ④ 'bcd'
(107). 若有定义:int a=4,*p=&a; ,则以下( 4 )均表示地址。
① a,*p ② &a,*p ③ a,p ④ &a,p
(108). (2 )语句符合C语言语法。
① int a=b=2,c=5; ② float x=2.3,b,c; ③ float x=3.2,int i,j=6; ④ int a=2,b+=a;
(109). 下面叙述错误的是( 3 )。
① 一个C源程序的执行是从main()函数开始,直到main()函数结束 ② C源程序必须包含一个main()函数 ③ 注释说明部分只能位于C源程序的最前面 ④ C源程序可由一个或多个函数组成
(110). 以下程序段运行后x的值为( 3 )。
int i,j,x=0;
for(i=3;i>=1;i--)
for(j=1;j<=i;j++)
x=x+2;
① 10 ② 14 ③ 12 ④ 8
(111). 以下程序段的运行结果是( 2 )。
int s=15;
switch(s/4)
{case 1:
printf("One ");
case 2:
printf("Two ");
case 3:
printf("Three ");
default:
printf("Over ");
}
① One Over ② Three Over ③ Three ④ Two Over
(112). 若有定义:float x=3.5,y=

5.5; 则表达式( 2 )的值为2。
① int(x+y)%7 ② (int)(x+y)%7 ③ (int)x+y%7 ④ (x+y)%7
(113). 下面叙述正确的是( 1 )。
① 5/(int)4.0 与 5/4 等价 ② 2/3 与 2%3 等价 ③ ++2 与 3 等价 ④ ++2与--3 等价
(114). 下面叙述错误的是( 2 )。
① 模运算符"%"是C语言基本的算术运算符 ② 算术运算符中只有"*"、"/"优先级高于关系运算符 ③ 算术运算符中不包含"="运算符 ④ 自加和自减运算符只能用于变量,而不能用于常量或表达式
(115). 以下程序段的运行结果是( 1 )。
char a[]="abc ";
char b[]="xyz";
char c[10];
strcpy(c,a);
strcat(c,b);
printf("%s",c);
① abc xyz ② xyzabc ③ abc ④ xyz
(116). 下面叙述错误的是( 4 )。
① C源程序中大、小写字母是有区别的 ② 一个C源程序可由一个或多个函数组成 ③ 若一条语句较长,可分写在下一行或多行上 ④ 构成C语言源程序的基本单位是语句
(117). ( 4 )是结构化程序设计应遵循的原则。
① 应使用顺序、选择、循环三种基本控制结构表示程序逻辑 ② 为提高程序效率,应尽量使用Goto语句 ③ 选用的控制结构可有多个入口和一个出口 ④ 根据需要可使用嵌套基本控制结构表示程序逻辑
(118). 以下叙述正确的是( 3 )。
① 函数体定界符也可用一对方括号"[ ]" ② 由于C语言源程序都是从main()函数开始执行,所以main()函数必须位于程序文件最前面 ③ 注释部分可单独占用一行,也可跟在语句的后面 ④ C语言源程序每一行就是一条语句
(119). main()函数的位置( 2 )。
① 必须位于程序文件的最前面 ② 可位于用户自定义函数之前,也可位于用户自定义函数之后 ③ 必须位于用户自定义函数的前面 ④ 必须位于用户自定义函数的后面
(120). 下面叙述错误的是( 1 )。
① 语句是构成C语言源程序的基本单位 ② 注释部分在程序编译和运行时不起作用 ③ 所有语句都必须以分号";"结束 ④ C语言源程序必须包含一个main()函数
(121). 描述一个算法可以有不同的方式,常见的有( 3 )。
① 汇编语言、高级语言和低级语言 ② 机器语言、汇编语言和高级语言 ③ 自然语言、流程图和伪代码 ④ 高级语言、自然语言和伪代码
(122). 对应代数式3a÷(b+c),C语言的表达式是( 3 )。
①3a/(b+c) ② 3*a/b+c ③ 3*a/(b+c) ④3*a\(b+c)
(123). 若已定义:double x=3,y; int z=2; 则语句y=(x+z)/2*z; 执行后,y的值为( 1 )。
① 5.0 ② 4.0 ③ 1.25 ④ 1.0
(124). 若已定义int k=4,s=10; 则下列程序段的运行结果是( 4 )。
if (2*k>9)
s=k+5;
printf("%d\n",s+k);
① 13 ② 10 ③ 19 ④ 14
(125). 若已定义:int x=2,y; 则逗号表达式 y=3,x+=x+(++y)%x的值是(4 )。
① 3 ② 2 ③ 5 ④ 4
(126)

. 循环语句的循环体中,continue语句的作用是( 4 )。
① 立即终止程序运行 ② 结束本次循环,跳出循环体 ③ 继续执行continue语句之后的循环体各语句 ④ 结束本次循环
(127). 下列程序段的运行结果是( 2 )。
int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf("%d\n",arr[1][3]);
① 3 ② 8 ③ 11 ④ 12
(128). 对于无返回值的自定义函数,在定义时最好使用( 2 )类型标识符。
① int ② void ③ float ④ long
(129). 下列程序的运行结果是( 4 )。
void fn(int *p,int n)
{int j;
for(j=0;j*(p+j)+=10;
}
void main( )
{int a[5]={1,2,3,4,5};
int i;
fn(a,5);
for(i=0;i<5;i++)
printf("%d ",*(a+i));
}
① 1 2 3 4 15 ② 1 2 3 4 5 ③ 11 2 3 4 5 ④ 11 12 13 14 15
(130). 以下程序段的输出结果是( 1 )。
int a[5]={1,3,5,7,9},*p;
p=&a[2];
printf("%d ",*(++p));
printf("%d\n",p-a);
① 7 3 ② 9 4 ③ 7 4 ④ 5 3
(131). 文件类型FILE是( 1 )。
① 一种结构类型 ② 一种数组类型 ③ 一种指针类型 ④ 一种函数类型
(132). 下列( 4 )是不正确的常量形式。
① 1.6E6 ② "\0" ③ 1E-2 ④ 'x5'
(133). 若已定义:int x=3,y=2;则下列不正确的赋值表达式是( 4 )。
① x=2, y=2; ② x=y+2 ③ x-=x+=y; ④x-y=1;
(134). 要使用以下程序段给三个整变量x1,x2,x2分别赋值1,2,3,正确的数据输入格式是( 4 )。
int x1,x2,x3;
scanf("%d,%d,%d",&x1,&x2,&x3);
① 1
2
3
② 1 2 3 ③ 123 ④ 1,2,3
(135). 下列( 2 )不能当作一条语句。
① if(k>0);
② if(k==0)
m=1;
n=2;
③ if(k>0)
m=1;
else
n=2;
l④ m=1,n=2,k=3;
(136). 下列叙述正确的是( 3 )。
① 可利用数组名引用数组的第一个元素 ② 定义数组时,若不加类型说明符则为整型 ③ 数组中每一个元素都属于同一个数据类型 ④ C语言中,数组长度在程序运行中可作动态调整
(137). 下列叙述错误的是( 4 )。
① 定义函数时可以有参数,也可以没有参数 ② 函数的形参在函数被调用前是没有确定值的 ③ 函数的形参和对应的实参个数应相等,类型应相同或赋值兼容 ④ 形参是变量名时,实参也只能是变量名,不可以是表达式
(138). 变量的指针,其值是该变量的( 2 )。
① 标识符 ② 内存单元地址 ③ 一个标志 ④ 值
(139). 若已定义:
struct student
{int num;
char name[20];
}stu1,stu2;
下列语句不正确的是( 4)。3
① strcpy(,); ② stu1.num=stu2.num; ③ stu1=stu2; ④ ="Li Min";(无引号)
(140). 若已定义:FILE *fp; 则能向fp所指向的文件写入hello这5个字符的语句是( 1 )。
① fputs("hello",fp); ② fwrite("hello",5,fp); ③ fputc("hello", fp); ④ fwrite("hello",fp);
(141). 若已定义:int i=2,j=2; float x=2.

5,y=3.5; 则表达式(float)(i+j)/2+(int)x%(int)y的值为( 4 )。
① 4.5 ② 3.5 ③ 3.0 ④ 4.0
(142). 下列( 4 )是不合法的用户标识符。
①_num ② div ③ _f6 ④ 5x
(143). 若已定义:int x; 则逗号表达式x=5,3+x,x=x*2的值是( 3 )。
① 5 ② 15 ③ 10 ④ 16
(144). 若已定义:int a=1,b=2,c=2; 则表达式 (a+b)/1.0/c的值是( 1)。
① 1.5 ② 1.0 ③ 0.0 ④ 1
(145). 下列程序段的运行结果是( 4 )。
char s1[7]="abcdef",s2[4]="123";
strcpy(s1,s2);
printf("%s %c",s1,s1[4]);
① abc e ② 123 ③ abc ④ 123 e
(146). 下列程序中定义的二维数组a的( 4 )。
#define M 3
#define N 4
void main( )
{ int a[M][N];
……
}
① 第一维为4,第二维为3 ② 第一维和第二维都为4 ③ 第一维和第二维都为3 ④ 第一维为3,第二维为4
(147). 若已定义:int x=7,y=5; 则表达式(x^y)<<2的值为( 4 )。
① 1 ② 20 ③ 0 ④ 8
(148). 利用fseek函数可以实现以下哪个功能( 4 )。
① 得到文件位置指针的当前位置 ② 在指定的文件夹中查找文件 ③ 改变文件的读取顺序 ④ 移动文件的读写位置指针
(149). 若已定义:int n=2; double x=2.5; 则下列表达式中不符合语法的是( 3 )。
① (int)x/n ② (int)(x/n) ③ (int)(x%n) ④ (int)x%n
(150). 判断char型变量cl是否为小写字母的正确表达式为( 2 )。
① ('a'>=c1) && ('z'<=c1) ② (c1>='a')&&(c1<='z') ③ 'a'<=c1<='z' ④ (c1>=a)&&(c1<=z)
(151). 下列程序段运行后sum的值为( 4 )。
int i=8,sum=0;
while((i--)>=5)
{sum+=2;
}
① 10 ② 6 ③ 4 ④ 8
(152). 下列叙述错误的是( 2 )。
① 预处理命令行都必须以#号开始 ② 宏定义可出现在源程序中任意合适的位置,且必须在行末加分号 ③ C语言源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 ④ #define PER 1.5的作用是用标识符PER代表1.5
(153). 下列程序的运行结果是( 4 )。
void main( )
{int a[5]={2,3,5,11,4},b[5]={12,1,6,9,8};
int *pa=a,*pb=b;
int i;
for(i=0;i<5;i++)
if(*(pa+i)<*(pb+i))
printf("%d ",*(pa+i));
}
① 5 ② 2 ③ 3 11 ④ 2 5 4
(154). 下列对枚举类型的定义正确的是( 4 )。
① enum a{"A","B","C"}; ② enum a={A,B,C}; ③ enum a={"A","B","C"}; ④ enum a{x=-2,y=1,z=3};
(155). 若已定义:int a[8],k=2; 无法正确引用数组a中元素的是( 1 )。
① a[8+k] ② a[0] ③ a[8-k] ④ a[8/k]
(156). 下列程序的运行结果是( 4 )。
#include
int fun(int x, int y)
{int z;
z=x>y?x:y;
return(x+z);
}
main()
{int a=6,b=1,c=3;
printf("%d\n",fun(a-b,b+c));
}
① 4 ② 9 ③ 5 ④ 10
(157). 若已定义:int a,b=5,*p=&a; 与语句a=b;等价的是( 1 )。
① *p=*&b; ② a=&b; ③ a=*p; ④ a=**p;
(158). 若已定义:
stru

ct teacher
{int num;
char name[20];
}t1, *p=&t1;
下列对结构变量t1中成员num合法的引用是( 1 )。
① p->num ② t1->num ③ teacher.num ④ *p.num
(159). 下列不合法的字符常量的是( 4 )。
① '\n' ② '\\' ③ '\t' ④ "a"
(160). 下列当x的值在5至10之间为“假”,否则为“真”的逻辑表达式为( 1 )。
① !(5<=x && x<=10) ② !(5<=x<=10) ③ x<=5 && x>=10 ④ x>=5 && x<=10
(161). 下列程序段运行后m的值为( 1 )。
int i,j,m=0;
for(i=1;i<=3;i++)
for(j=2;j<=4;j++)
m=m+i+j;
① 45 ② 33 ③ 27 ④ 30
(162). 下列程序段的运行结果是( 3 )。
char str[]={ 'Y','o','u','\0','a','r','e','\0','w','e','l','c','o','m','e'};
puts(str);
① You are welcome ② welcome ③ You ④ You are
(163). 若已定义:int a=5,*p1=&a; float f=6.5,*p2=&f; 则下列正确的赋值语句是( 1 )。
① f=*p1+*p2; ② p2=&a; ③ p1=&f; ④ p2=p1;
(164). 若已定义:int x=2,y=3; 则执行语句y=x+++(--y);后,y的值为( 3 )。
① 6 ② 5 ③ 4 ④ 3
(165). 下列程序段运行时,语句k+=2; 执行的次数是( 4 )。
int i,k=0;
for(i=7;i>3;i--,i--)
k+=2;
① 4 ② 1 ③ 3 ④ 2
(166). 若已定义char stra[50],strb[50]; 能正确从键盘读入字符串的是( 2 )
① gets(strb,stra); ② scanf("%s%s",stra,strb); ③ scanf("%s%s",stra[50],strb[50]); ④ getch(stra,strb);
(167). 下列程序的运行结果是( 3 )。
#define K 5
void main( )
{ int a=3,b=4;
printf("%d\n",K*(a+b));
}
① 15 ② 20 ③ 35 ④ 5
(168). 下列对结构类型变量stu1的定义和初始化正确的是(1 2 )。
① struct student
{int num;
float score;
};
struct student stu1={1001,85.0};
② struct
{int num;
float score;
}stu1={1001, 85.0};
③ struct student
{int num;
float score;
}stu1;
stu1={1001,85.0};
④ struct student
{int num;
float score;
};
struct student stu1;
stu1->num=1001;
stu1->score=85.0;
(169). 若已定义:FILE *fp;若要打开d盘的temp文件夹下的file1.txt文件,该文件既能读也能写,则正确的语句是( 1 )。
① fp=fopen("d:\temp\file1.txt", "rw");
② fp=fopen("d:\temp\file1.txt", "rb");
③ fp=fopen("d:\\temp\\file1.txt", "rb");
④ fp=fopen("d:\\temp\\file1.txt", "rw");
(170). 若已定义:int a[ ][4]={{1,2},{3,4},{5,6,7},{8,9,10,11}}; 则a[2][2]的值为( 4 )。
① 10 ② 4 ③ 6 ④ 7
(171). 若已定义:int a[3]={3,6,9},*p=a; 则对数组元素a[1]错误引用的是( 2 )。
① p[1] ② *p+1 ③ *(&a[1]) ④ *(a+1)
(172). 若已定义int k; 下列( 3 )语句与其他三条语句不等价。
① if(k==0)
printf("No! \n");
else
printf("Yes! \n");
② if(k)
printf("Yes! \n");
else
printf("No! \n");
③ if(k==0)
printf("Yes! \n");
else
printf("No! \n");
④ if(k!=

0)
printf("Yes! \n");
else
printf("No! \n");
(173). 下列叙述正确的是( 1 )。
① 为提高程序运行速度可在源程序中加入一些宏定义 ② 一个C语言源程序只能有一条预处理命令 ③ 宏定义中的宏名必须用大写字母表示 ④ 宏定义不占用程序运行时间,但与程序中的语句一样需要编译
(174). 若已定义:int a[5]={1,2,3,4,5},*pa=a; 下列叙述错误的是( 1 )。
① a++与pa++的作用相同 ② *(pa+2)与a[2]的值相同 ③ a[2]与pa[2]的值相等 ④ pa与a的值相等
(175). 以下语句正确的是( 3 )。
① typedef INTEGER=int; ② typedef INTEGER int; ③ typedef int INTEGER; ④ typedef INTEGER: int;
(176). 以下程序运行后,文件file1.txt的内容是( 1 )。
#include
int main()
{
FILE *fp;
fp = fopen("file1.txt", "w");
if(fp==NULL)
return 0;
else
{
fputs("one",fp);
rewind(fp);
fputs("two",fp);
fclose(fp);
return 1;
}
}
① two ② one ③ onetwo ④ twoone
(177). 若已定义:int x=11; double y=3.5; 则表达式 y/2+x%2/2的值是( 1 )。
① 1.75 ② 3.5 ③ 1.0 ④ 1.5
(178). 若已定义:int x=2,y; 则执行语句 y=x%2+(--x); 后y的值是(3 )。1
① 2 ② 3 ③ 1 ④ 0
(179). 下列程序的运行结果是( 4 )。
#define M 5
#define N M+1
#define NN N*N-M
void main( )
{ printf("%d\n",3*NN);
}
① 108 ② 103 ③ 21 ④ 16
(180). 若已定义:
struct student
{
int num;
float score;
}stu[2]={{101,85.5},{102,90.0}},*p=stu;
下列对结构体数组引用错误的是( 2 )。
① p->num ② p[1]->num ③ stu[0].num ④ (*p).num
(181). 若已定义:char c; 则下列正确的输入语句是(1
① getchar(c); ② gets(c); ③ scanf("%s", &c); ④ scanf("%c", c);
(182). 若已定义int x=5; 则下列程序段的运行结果是( 4 )。
if ((x--)<5)
printf("%d\n",x);
else
printf("%d\n",x++);
① 5 ② 6 ③ 3 ④ 4
(183). 下列程序的运行结果是( 4 )。
void main( )
{int a[]={1,2,3,4,5,7},*p;
p=a;
*(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));
}
① 1,3 ② 1,4 ③ 1,5 ④ 1,6
(184). 下列不属于C语言数据类型的是(2 )。
① 双精度型 ② 复数类型 ③ 长整型 ④ 枚举类型
(185). 若已定义:char str[20]={"Good\0morning"}; 则函数strlen(str)的值是( 3 )。
① 6 ② 12 ③ 4 ④ 5
(186). 下列程序的运行结果是( 4 )。
void main( )
{int a=11,b=22,temp;
int *pa=&a,*pb=&b;
temp=*pa;
*pa=*pb;
*pb=temp;
printf("%d,%d\n",a,b);
}
① 22,22 ② 11,22 ③ 11,11 ④ 22,11
(187). 若已定义:double x; 则exp(x)+sqrt(x)/2所表示的数学式是( )。
① 公式(1) ② 公式(2) ③ 公式(3) ④ 公式(4)
(188). 若已定义:double x,y; 则下列表达式不能正确计算(x-2)/3*y的是( 2 )。
① y/3*(x-2) ② (1/3)*(x-2)*y ③ y*(x-2)/3 ④ (x-

2)*y*1/3
(189). 若已定义:int a=0,b=1; 则下列表达式值为真的是( 3 )。
① a++&&b++ ② a!=0||b!=1 ③ a==1||a!=1 ④ (a=0)&&(b=1)
(190). 下列程序段的运行结果是( 3 )。
int k=8;
switch(k%5)
{default:
printf("DD");
case 1:
printf("AA");
break;
case 2:
printf("BB");
case 0:
printf("CC");
}
① AA ② DD ③ DDAA ④ CC
(191). 若已定义: char str1[20]="guangzhou ",str2[20]="2010"; 能形成字符串"GUANGZHOU 2010"的语句是( 1 )。
① strcat(strupr(str1),str2); ② strcpy(strupr(str1),str2); ③ strcpy(str2,strupr(str1)); ④ strcat(str2,strupr(str1));
(192). 下列程序的运行结果是( 3 )。
void main( )
{char str[]="abcd",*p=str;
int i;
while(*p)
printf("%c",*(p++));
}
① bcd ② abc ③ abcd ④ cd
(193). 下列叙述正确的是( 3 )。
① 函数的定义和调用都允许嵌套 ② 函数的定义和调用都不允许嵌套 ③ 函数的定义不允许嵌套,但函数的调用允许嵌套 ④ 函数的定义允许嵌套,但函数的调用不允许嵌套
(194). 若已定义:
struct student
{
int num;
float score;
}stu[4];
以下错误的语句是( 1 )。
① stu[0]->num=101; ② stu[0]=stu[1]; ③ *(stu)=*(stu+1); ④ printf("%d",(*stu).num);
(195). 若已定义:int a[5]={1,2,3,4,5}; int *p=&a[3]; 则下列值为3的是( 4 )。
① p-a[0] ② *p ③ a+2 ④ p-a
(196). 下列四个运算符,按优先级别由高到低排列的是( 2 )。
① !、=、%、== ② !、%、==、= ③ %、!、==、= ④ !、%、=、==
(197). 下列程序段的运行结果是( 4 )。
union data
{
int a;
char b;
}data1;
data1.b='A';
data1.a++;
printf("%c\n",data1.b);
① 65 ② A ③ 66 ④ B
(198). 若已定义:int a[5],*p=a; 则不能正确表示a[1]地址的是( 2 )。
① p+1 ② ++a ③ ++p ④ a+1
(199). 若已定义:int x=2,y=4; 则表达式(double)x/y+y%x的值是( 2 )。
① 2.5 ② 0.5 ③ 0 ④ 2
(200). 下列程序段的运行结果是(4)。
int a[ ]={8,7,6,5,4,3,2,1},i,sum=0;
for(i=0;i<8;i++)
if(i<=3)
sum+=a[i];
else
sum-=a[i];
printf("%d\n",sum);
① 0 ② 15 ③ 10 ④ 16
(201). 对二维数组arr初始化正确的是(4 )。
① int arr[2][3]={{1,2},{3,4},{0}}; ② int arr[2][]={1,2,3,4,5}; ③ int arr[][]={{1},{3,4,5}}; ④ int arr[2][3]={{1,2},{3,4}};
(202). 若有以下定义:
typedef enum week{mon,tue,wed,thu,fri,sat,sun}week_day; 则下列语句正确的是( 1 4)。
① week_day d; ② week d; ③ typedef enum week d; ④ enum week d;
(203). 若已定义:int x,y; 则下列不能正确表示数学关系式|x-y|>5的表达式是( 1 )。
① (x-y)<-5 && (x-y)>5 ② (x-y)*(x-y)>25 ③ abs(x-y)>5 ④ (x-y)>5||(x-y)<-5
(204). 若已定义:int x=5,y=7; 正确实现输出形式:5+7=12 的语句是( 3 )。
① printf("%d+%d=x+y",x,y); ②

printf("x+y=x+y");
③ printf("%d+%d=%d",x,y,x+y); ④ printf("x+y=%d",x+y);
(205). 下列程序段中函数调用语句tnk((a,b),m+n); 的实参值是(2 )。
int a=1,b=2,m=3,n=4;
tnk((a,b),m+n);
① 3和7 ② 2和7 ③ 2和3 ④ 1和7
(206). 若已定义:int x=2,y=3; 则下列表达式值为假的是(2 )。
① x>y||x(207). 下列程序段的运行结果是( 2 )。
int a[]={1,3,4,6,9},i,x=1;
for(i=0;i<3;i++)
x+=a[i+1];
printf("%d\n",x);
① 9 ② 14 ③ 15 ④ 10
(208). 若已定义:double x=2.5; 则求x的平方的正确的函数调用是( 3 )。
① rand(2,x) ② exp(x) ③pow(x,2) ④sqrt(x)
(209). 二维数组元素在内存中的存放顺序是(3 )。2
① 由用户自己定义 ② 由编译器决定 ③ 按行优先 ④ 按列优先
(210). 若已定义:int a[5]={1,2,3,4,5},*p=a; 且p值未发生变化,下列不能表示a[1]地址的是( 3 )。
① ++p ② p+1 ③ a++ ④ a+1
(211). 下列程序段的运行结果是( 4 )。
int a[3][3]={1,2,3,4,5,6,7,8,9},i;
for(i=0;i<3;i++)
printf("%2d",10-a[2-i][i]);
① 7 5 3 ② 8 4 1 ③ 9 5 1 ④ 3 5 7
(212). 若已定义:long int i; char c; double x; 则表达式i*c+(int)x结果的类型是( 1 )。
① long int ② char ③ double ④ int
(213). 下列程序段的运行结果是( 2 )。
int a[ ]={0,1,2,3,4,5,6,7,8,9},i=0,t;
while(i<=7)
{t=a[i];
a[i]=a[i+2];
a[i+2]=t;
i+=2;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
① 2468013579 ② 2143658709 ③ 0123456789 ④ 1357924680
(214). 若已定义:int x; 则逗号表达式x=5,3+x,x=x*2的值是( 2 )。
① 5 ② '\n' ③ '\\' ④ '\t'

相关文档
最新文档