C语言选择题(含答案)

C语言选择题(含答案)
选择题
1.以下叙述正确的是_____。
A) 在C程序中,main函数必须位于程序的最前面。
B) C语言本身没有输入输出语句。
C) C程序的每行只能写一条语句。
D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

2.下面四个选项中,均是不合法的用户标识符的选项是。
(A) A (B) float © b-a (D) _123
P_0 1a0 goto temp
do _A int INT

3.下列四个选项中都是合法的转义字符的
A) ‘\’’ ‘\’ ‘\n’ B) ‘\’ ‘\017’ ‘\”’
C) ‘\018’ ‘\f’ ‘xab’ D) ‘\0’ ‘\101’ ‘x1f’

4.设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是:
A)7 B)8 C)6 D)2

5.若有代数式 ,则不正确的C语言表达式是:
A) a/b/ce3 B) 3ae/b/c
C) 3ae/bc D) ae/c/b*3

6.若希望当A的值为奇数时,表达式的值为”真”, A的值为偶数时,表达式的值为”假”。则以下不能满足要求的表达式是_________。
A) A%2 1 (B) !(A%20)
C) !(A%2) (D) A%2

7.以下程序的运行结果是 :
main()
{
int m=6;
if(m++> 6) printf(" %d\n",m);
e1se printf("%d\n",–m );
}
A)4 B)5 C) 7 D) 6

8.当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 :
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x= 3;
else x=6;
else x=7;
A)1 B)2 C)3 D)6

9.阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为
main()
{
int x,y,z
scanf("%d%d%d",&x,&y,&z );
printf(“x+y+z=%d\n” ,x+y+z);。
}
A)x+y+z=48 B)x+y+z=35
C)x+y+z=35 D)不确定值

10.已知各变量的类型说明如下
int k,a,b;
unsigned long w= 5;
double x=1.42;
则以下不符合C语言语法的表达式是 :
A) x%(-3) B) w+=-2
C) k=(a=2,b=3,a+b) D) a+= a-=(b=4)*(a=3)

11.设有:int a=1, b=2, c=3, d=4, m=2, n=2;
执行 (m=a>b)&&(n=c>d)后n的值为_______。
A) 1 B) 2 C) 0 D) 4

12.判断char型变量ch是否为大写字母的正确表达式是________。
A)’ A’ <=ch<=‘Z’ B)(ch> = ‘A’)&(ch<=‘Z’ )
C)(ch>=’ A’ )&&(ch<=‘Z’) D)(’ A’ < = ch)AND(‘Z’> = ch)

13.以下描述中正确的是_________:
A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B) 在while循环体中,循环体至少要执行一次。
C)在do一while循环体中,循环体至少无条件的执行一次
D) do一while循环由do开始,用while结束,在while(表达式)后面不能写分号

14.已知int x=10,y=20,z=30; 以下语句执行后x, y, z的值是_______。
if (x>y)
z=x; x=y; y=z;
A) x=10, y=20, z=30 B) x=20, y=30, z=20
C) x=20, y=30, z=10 D) x=20, y=30, z=30

15.若i为整型变量,则以下循环执行次数是:
for ( i=2; i!=0; ) printf("%d",i- - );
A)无限次 B) 0次 C) 1 次 D) 2次

16.下面程序段:
for (t=1; t<=100;t++)
{ scanf("%d",&x);
if(x<0) continue;
printf("%3d",t);
}
A) 当x<0时整个循环结束
B) x>=0时什么也不输出
C) printf函数永远也不执行
D)最多允许输出100个非负整数

17.若有说明:int a[3][4];则对a数组元素的正确引用是______。
A) a[2][4] B) a[1,3] C) a[1+1][0] D) a(2)(1)

18.定义如下变量和数组:
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是:
for(k=0;k<3;k++) printf ("%d",a[2-k][ k]);
A) 3 6 9 B) 7 5 3 C) 9 6 3 D) 3 5 7

19.判断字符串a和b是否相等,应当使用_______.
A) if (a= =b) B) if (a=b)
C) if (strcpy (a,b) ) D) if (strcmp (a,b) )

20.对两个数组a和b进行如下初始化
char a[ ]=“ABCDEF”;
char b[ ]={’A’,’B’,’C’,’D’,’E’,’F’};
则以下叙述正确的是 __.
A) a与b数组完全相同 B) a与b长度相同
C) a和b中都存放字符串 D) a数组比b数组长度长

21.有两个字符数组a和b,则以下正确的输入语句是_________:
A) gets(a,b); B) scanf(“%s%s”,a,b);
C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”);

22.下面程序段的运行结果是______
char str[ ]=“ABC” , p=str ;
printf ("%d\n",
(p+2));
(A) 0 (B) 字符’C’的ASCII码 © 字符’C’的地址 (D) 字符’C’

23.下面描述正确的是_______。
A) 两个字符串所包含的字符个数相同时,才能比较字符串
B) 字符个数多的字符串比字符个数少的字符串大
C) 字符串”STOP ”(注:有一个空格)与”STOP”相等
D) 字符串”That”小于字符串”The”

24.下面判断正确的是_______。
A)char *a= “china”; 等价于 char *a; *a= “china”;
B)char str[10]={“china”};等价于 char str[10]; str[ ]={“china”};
C)char *s= “china”; 等价于 char *s; s= “china”;
D)char c[4]= “abc”, d[4]= “abc”; 等价于 char c[4]=d[4]= “abc”;

25.若用数组名作为函数调用的实参,传递给形参的是_______。
A) 数组的首地址
B) 数组第一个元素的值
C) 数组中全部元素的值
D) 数组元素的个数

26.下面函数调用语句含有实参的个数为_______。
y = func ( a, b, max(d ,e));
A)5 B) 2 C) 3 D) 4

27.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。
A)float型
B)int 型
C)long 型
D)double 型

28.在C语言中,形参的缺省存储类是
A) auto B) register C) static D) extern

29.以下正确的函数定义形式是__________:
A) double fun(int x,int y)
B) double fun(int x;int y)
C) double fun(int x,int y);
D) double fun(int x,y);

30.在宏定义 #define PI “3.14159”中,用宏名PI代替一个_______。
A) 常量 B)单精度数 C)双精度数 D)字符串

31.#define ADD(x) x+x
main( )
{
int m=1,n=2,k=3;
int sum=ADD(m+n)*k;
printf(“sum=%d”,sum);
}
上面的程序运行结果是_________:
A) sum=9 B) sum=10 C) sum=12 D) sum=18

32.以下有关宏替换和函数的调用叙述不正确的是________:
A) 宏替换和函数的调用均占用运行时间。
B) 宏名无类型,函数有类型
C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存
D) 再调用宏时程序的长度要加长,而函数调用不变

33.以下程序的输出的结果是
main( )
{ int i;
for (i=1;i<=2;i++) incre();
}
incre()
{ static int x=1;
x*=x+1;
printf("%d",x);
}
A) 3 3 B) 2 2 C) 2 6 D) 2 5

34.有如下定义
struct person{char name[9]; int age;};
strict person class[10]={“Johu”, 17,
“Paul”, 19,
“Mary”, 18,
“Adam”, 16,};
根据上述定义,能输出字母M的语句是
A) prinft(”%c\n",class[3].mane);
B) pfintf("%c\n",class[3].name[1]);
C) prinft("%c\n",class[2].name[1])
D) printf("%c\n",class[2].name[0]);

35.以下程序的输出结果是哪一项?
#include <stdio.h>
int main()
{
int a[][3] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, *p[4], i;
for (i = 0;i < 4;i++)
p[i] = &a[i][3];
printf("%d\n", p[2][2]);
}
A. 输出项不合法 B. 6
C. 8 D. 12

36.以下程序的输出结果是
union myun
{ struct
{
int x, y, z;
} u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=1;
printf("%d\n",a.u.y);
}
A) 4 B) 5 C) 6 D) 1

37.以下关于结构体与共用体的说法,其中正确的是
A) 共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。
B) 结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。
C) 共用体每个成员分别占有自己的内存单元。
D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。

38.以下程序的输出结果是
long fun( int n)
{
long s;
if(n= =1 || n= =2) s=2;
else s=n-fun(n-1);
return s;
}
main()
{
printf("%ld\n", fun(5));
}
A) 1 B) 2 C) 3 D) 4

39.下列程序段的输出结果为
int arr[]={6,7,8,9,10};
int * ptr;
ptr=arr;
*(ptr+2)+=2;
printf ("%d,%d\n",ptr,(ptr+2));
A) 8,10 B) 6,8 C) 7,9 D) 6,10

40.设有如下定义:
int (*ptr)( );
则以下叙述中正确的是
A) ptr是指向一维组数的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是指向函数的指针变量,该函数返回一个int型数据
D) ptr是一个函数名,该函数的返回值是指向int型数据的指针

1-5:BCABC 6-10:CDBDA
11-15:BCCDD 16-20:BCBDD
21-25:BBDBA 26-30:CBAAD
31-35:BACDD 36-40:DABD

  • 27
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值