一些比较费脑子的C语言试题。

1、

设int a=12,则执行完语句a+=a-=a*a后,a的值是:

 A、552

 B、264

 C、144

 D、-264


2、

判断字符串a是否大于b,应当使用:

A、if(a>b)

B、if(strcmp(a,b))

       C、if(strcmp(b,a)>0)

D、if(strcmp(a,b)>0)


3、

以下程序的输出结果是:
main( )
{
  int k=17;
  printf("%d,%o,%x ",k,k,k);
}

 A、17,021,0x11

 B、17,17,17

C、17,0x11,021

D、17,21,11


4、

在下列程序段中,枚举变量c1的值是:
enum color { red,yellow,blue=4,green,white}c1;
c1=yellow;
c1=white;

 A、1

 B、3

 C、5

D、6


5、

执行下面的程序段后,变量k中的值为
s[0]=k;
k=s[1]*10;

 A、不定值

 B、33

C、30

 D、10


6、

以下不正确的if语句形式是:

A、if(x>y&&x!=y)t=x++;

       B、if(x==y)x+=y;

 C、if(x!=y)scanf("%d",&x) else scanf("%d",&y);

D、if(x<0)x++;


7、

能正确表示a 和b同时为正或同时为负的逻辑表达式是:

 A、(a>=0||b>=0)&&(a<0||b<0)

 B、(a>=0&&b>=0)&&(a<0&&b<0)

C、(a+b>0)&&(a+b<=0)

 D、a*b>0


8、

以下结构体类型的变量所占用字节数是:
struct student
{
  short num;
  char name[15];
  float score;
  char sex;
};

 A、22

 B、24

 C、26

D、28


9、

对于一个正常运行的c程序,以下叙述中正确的是:

 A、程序的执行总是从main函数开始,在main函数结束。

 B、程序的执行总是从程序的第一个函数开始,在main函数结束。

 C、程序的执行总是从main函数开始,在程序的最后一个函数中结束。

 D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束。


10、

若执下面程序时从键盘上输入5,
main()
{
  int x;
  scanf("%d",&x);
  if(x++>5) printf("%d ",x);
  else printf("%d ",x--);
}

则输出是:

A、7

B、6

 C、5

 D、4


11、

请读程序片段(字符串内没有空格字符):
printf("%d ", strlen("ATS12"));
上面程序片段的输出结果是:

A、11

B、5

 C、6

 D、8


12、

按照c语言规定的用户标识符命名规则,不能出现在标识符中的是:

 A、大写字母

 B、连接符

 C、数字字符

D、下划线


13、

若i为整型变量,则以下循环执行次数是:
for(i=2;i==0;) printf("%d",i--);

A、无限次

 B、0次

C、1次

       D、2次


14、

以下数组定义不正确的是:

 A、intarray[] = {1,2,3};

 B、floatarray[5] = {0};

 C、chararray[5] = {1,2,3,4,5} ;

 D、intarray[5] = {1,2,3,4,5,6};


15、

以下错误的if语句是:

 A、if(x>y)z=x;

 B、if(x==y)z=0;

 C、if(x!=y)printf("%d",x) else printf("%d",y);

D、if(x< y) { x++;y--;}


16、

下列说法中正确的是:

A、一个数组能够存储许多不同类型的值

       B、数组的下标可以是float数据类型

 C、如果初始化值列表中的个数少于数组的元素的个数,C编译器会自动补齐

 D、初始化值列表中的值的个数多于数组元素的个数是错误的


17、

为避免嵌套的条件分支语句if…else的二义性,C语言规定,C程序中的else总是与____组成配对关系。

 A、其上面距它最近的,并且没有其他else与其配对的if相配对

 B、在同一行上的if

 C、缩排位置相同的if

 D、在其之前未配对的if


18、

C语言源程序的基本单位是:

 A、过程

 B、函数

 C、子程序

 D、标识符


19、

下列程序的输出结果是:
main( )
{
  int a=7,b=5;
  printf("%d ",b=b/a);
}

 A、5

 B、1

 C、0

 D、不确定值


20、

下面不正确的字符串常量是:

 A、'abc'

 B、"12'12"

 C、"0"

 D、""


21、

设有说明int (*ptr)();其中标识符ptr是:

 A、是一个指向整形变量的指针

 B、是一个指针,它指向一个函数值是int的函数

 C、是一个函数名

 D、定义不合法


22、

以下程序的输出结果为:
#define ADD(x) x*x
main( )
{
  int a=4,b=6,c=7,d=ADD(a+b)*c;
  printf("d=%d",d);
}

 A、d=70

 B、d=80

 C、d=140

 D、d=700


23、

以下代码的输出结果为:
int array[3] = {1,4};
for(int i = 0;i < 3;i++)
{ printf(“%d ”,array[i]); }

 A、14 0

 B、01 4

 C、10 4

 D、14 4


24、

若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b); }

并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是:

 A、doublemyadd(double a,b);

 B、doublemyadd(double,double);

 C、doublemyadd(double b,double a);

 D、doublemyadd(double x,double y);


25、

以下循环体的执行次数是:
main()
{
  int i,j;
  for (i=0,j=1; i<=j+1;i+=2,j--)
  printf("%d ",i);
}

 A、3

 B、2

 C、1

 D、0


26、

设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是:

 A、float*p=1024;

 B、int*p=(float)x;

 C、floatp=&x;

 D、float*p=&x;


27、

设有以下定义:
#define N 3
#define Y(n) ((N+1)*n)

则执行语句:z=2* (N+Y(5+1));后,z的值为:

 A、出错

 B、42

 C、48

 D、54


28、

在C语言程序中,以下说法正确的是:

 A、函数的定义可以嵌套,但函数的调用不可以嵌套

 B、函数的定义不可以嵌套,但函数的调用可以嵌套

 C、函数的定义和函数的调用都不可以嵌套

 D、函数的定义和函数的调用都可以嵌套


29、

若有以下宏定义:
#define N 2
#define Y(n)
(N+1)*n

则执行语句intz; z=2*N+Y(5);后的值是:

 A、50

 B、34

 C、19

 D、无定值


30、

设 int x=1, y=1; 表达式(!x||y--)的值是:

 A、0

 B、1

 C、2

 D、-1


31、

如有定义int * p = malloc(15);p当int型数组使用,最多可以使用多少元素:

 A、3

 B、4

 C、15

 D、16


32、

以下代码的输出结果为:
int x = 10,y = 10;
for(int i = 0; x > 8; y = ++i)
{ printf(“%d %d”, x-- , y); }

 A、101 9 2

 B、98 7 6

 C、910 9 10

 D、1010 9 1


33、

以下代码的输出结果为:
void fun(int x,int y)
{ int temp;
  if(x < y)
  { temp = x ; x = y ; y = temp; }
}
main()
{
  int a = 4,b = 3,c = 5;
  fun(a,b);fun(a,c);fun(b,c);
  printf("%d,%d,%d ",a,b,c);
}

 A、3,4,5

 B、5,3,4

 C、4,3,5

 D、5,4,3


34、

下面程序的输出是:
fun3(int x)
{
  static int a=3;
  a+=x;
  return(a);
}
main()
{
  int k=2, m=1, n;
  n=fun3(k);
  n=fun3(m);
  printf("%d ",n);
}

 A、3

 B、4

 C、6

 D、9


35、

有以下程序
main()
{
  int m[][3]={1,4,7,2,5,8,3,6,9};
  int i,j,k=2;
  for(i=0;i<3;i++){
    printf("%d ",m[k][i]);
  }
}

执行后输出结果是:

 A、45 6

 B、25 8

 C、36 9

 D、78 9


36、

以下程序的输出结果为:
main( )
{
  char c;
  int i;
  for(i=65;i<68;i++)
  {
    c=i+32;
    switch(c)
    {
      case 'a':
      case 'b':
      case 'c':
        printf("%c,",c);
      break;
      default:
        printf("end");
    }
  }
}

 A、a,b,c,end

 B、a,a,a,end

 C、a,a,a,

 D、a,b,c,


37、

定义一个函数指针,返回类型为void,参数为两个int型变量,一下定义正确的是:

 A、void(*p)(int,int) = NULL;

 B、void*p(int,int) = NULL;

 C、typedefvoid(*p)(int,int)

 D、typedefvoid *p(int,int)


38、

下面选项中正确的赋值语句是(设 char a[5],*p=a;):

 A、p="abcd";

 B、a="abcd";

 C、*p="abcd";

 D、*a="abcd";


39、

具有相同类型的指针类型变量p与数组a,不能进行的操作是:

 A、p=a;

 B、*p=a[0];

 C、p=&a[0];

 D、p=&a;


40、

设有如下定义:struct jan{int a;float b;}c2,*p;若有p=&c2;则对c2中的成员a的正确引用是:

 A、(*p).c2.a

 B、(*p).a

 C、p->c2.a

 D、p.c2.a


※判断题(共10题,每题2分)


1、

C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。

 正确

 错误


2、

函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。

 正确

 错误


3、

条件表达式不能取代一般if的语句。

 正确

 错误


4、

数组名不能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。

 正确

 错误


5、

可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数

 正确

 错误


6、

C语言允许用字符串的方式对数组作初始化赋值。

 正确

 错误


7、

在多层循环中,?一个break语句只向外跳一层。

 正确

 错误


8、

continue 不是结束本次循环,而是终止整个循环的执行。

 正确

 错误


9、

通过return语句,函数可以带回一个或一个以上的返回值。

 正确

 错误


10、

若有int a[3][5]={2,2},{2,6},{2,6,2}},则数组a共有7个元素。

 正确

 错误

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值