糯米文学吧

位置:首页 > 计算机 > C语言

C语言试题(精选)

C语言1.31W

引导语:C语言是众多编程语言中的一种,以下是小编整理的C语言试题(精选),欢迎参考阅读!

C语言试题(精选)

  1.若有以下程序

#include

main()

{ int a=6, b=0, c=0;

for ( ;a; ) { b += a; a -= ++c; }

printf("%d,%d,%d", a,b,c);

}

则程序的输出结果是

A) 1,14,3

B) 0,14,3

C) 0,18,3

D) 0,14,6

参考答案:B

【解析】本循环的条件判断时只要a为0就退出循环体,初始值a的值为6,满足条件执行完循环体,b的值为6,a-=+ +c即a=a-(++c),所以a的值为5,c的值为1第二次循环后b的值为11,a的值为3,c的值为2第三次也是最后循环后,a的值为0,b的值14,c的值为3

  2.以下选项中非法的C语言字符常量是

A) '07'

B) ''

C) 'aa'

D) 'xaa'

参考答案:C

【解析】C选项中是字符串常量,应该用双引号表示即"aa"所以选择C选项

  3.若有以下程序

#include

void sp(int *a)

{ int b=2;

a=&b; *a = *a * 2; printf("%d,", *a);

}

main()

{ int k=3, *p=&k;

sp(p); printf("%d,%d", k, *p);

}

则程序的输出结果是

A) 4,3,3

B) 4,3,4

C) 6,3,6

D) 6,6,6

参考答案:A

【解析】首先在主函数中给整型变量k赋值为3,将变量k的地址赋给指针变量p;调用sp函数,将实参p的值传给形参a,在sp函数中,指针变量a又获得变量b的地址,通过运算后,输出a的值为4;返回主函数,输出k的`值和p的值为3和3。因此A选项正确。

  4.若有以下程序

#include

int k=7;

void f(int **s)

{ int *t=&k;

*s=t;

printf("%d,%d,%d,", k, *t, **s);

}

main()

{ int i=3,*p=&i, **r = &p;

f(r); printf("%d,%d,%d", i, *p, **r);

}

则程序的输出结果是

A) 3,3,3,7,7,7

B) 3,7,7,7,7,7

C) 7,7,7,3,3,3

D) 7,7,7,3,7,7

参考答案:D

  5.若有以下程序

#include

int *f(int *s,int *t)

{ int *k;

if (*s < *t){ k = s; s=t; t=k; }

return s;

}

main()

{ int i=3, j=5, *p=&i, *q=&j, *r;

r=f(p,q); printf("%d,%d,%d,%d,%d", i, j, *p, *q, *r);

}

则程序的输出结果是

A) 3,5,5,3,5

B) 3,5,3,5,5

C) 5,3,5,3,5

D) 5,3,3,5,5

参考答案:B

【解析】在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,如果条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项正确。

  6.若有以下程序

#include

#define N 4

void fun(int a[][N], int b[], int flag)

{ int i,j;

for(i=0; i<N; i++)

{ b[i] = a[i][0];

for(j=1; j<N; j++)

if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j]))

b[i] = a[i][j];

}

}

main( )

{ int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i;

fun(x, y, 1);

for ( i=0; i<N; i++ ) printf("%d,", y[i]);

fun(x, y, 0);

for (i=0;i<N; i++) printf("%d,", y[i]);

printf("");

}

则程序的输出结果是

A) 1,5,9,13,4,8,12,16,

B) 4,8,12,16,1,5,9,13,

C) 1,2,3,4,13,14,15,16,

D) 13,14,15,16,1,2,3,4,

参考答案:A

  7.若有以下程序

#include

void fun(int a[ ], int n)

{ int t,i,j;

for (i=1; i<n; i+=2)

for (j=i+2; j<n; j+=2)

if (a[i] > a[j]) { t=a[i]; a[i]=a[j];a[j]=t;}

}

main()

{ int c[10]={10,9,8,7,6,5,4,3,2,1},i;

fun(c, 10);

for (i=0;i<10; i++) printf("%d,", c[i]);

printf("");

}

则程序的输出结果是

A) 1,10,3,8,5,6,7,4,9,2,

B) 10,9,8,7,6,5,4,3,2,1,

C) 2,9,4,7,6,5,8,3,10,1,

D) 10,1,8,3,6,5,4,7,2,9,

参考答案:D

【解析】该题首先对一维数组进行初始化,c[0]到c[9]依次赋值为10到1;fun(c, 10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此D选项正确。

  8.若有以下程序

#include

main()

{ int i,j=0;

char a[]="How are you!";

for (i=0; a[i]; i++)

if (a[i] != ' ') a[j++]=a[i];

a[j]='';

printf("%s",a);

}

则程序的输出结果是

A) Hay!

B) Howareyou

C) Howareyou!

D) How are you!

参考答案:C

【解析】主函数中首先定义字符数组a[]="How are you!";执行for循环语句,语句if (a[i] != ' ') a[j++]=a[i];其功能是将字符数组中的空格去掉。因此C选项正确。

  9.若有以下程序

#include

char *a="you";

char b[ ]="Welcome you to China!";

main()

{ int i, j=0; char *p;

for ( i=0; b[i] !=''; i++ )

{ if (*a == b[i])

{ p=a;

for (j=i; *p!=''; j++)

{ if (*p != b[j]) break;

p++;

}

if (*p=='') break;

}

}

printf("%s", &b[i]);

}

则程序的输出结果是

A) China!

B) to China!

C) me you to China!

D) you to China!

参考答案:D

【解析】该程序首先定义*a和b[ ],并进行初始化。主函数中通过外层for循环语句,遍历字符数组b[ ],并且将符合if条件语句的字符赋给数组p;for内层循环语句,遍历字符数组a[ ]。再将符合if条件语句的结果输出。因此D选项正确。

  10.若有以下程序

#include

main()

{ char a[20], b[ ]="The sky is blue."; int i;

for (i=0; i<7; i++) scanf("%c", &b[i]);

gets(a); printf("%s%s", a,b);

}

执行时若输入: (其中表示回车符)

Fig flower is red.

则输出结果是

A) wer is flo is blue.

B) wer is flo

C) wer is sky is blue.

D) Fig flower is sky is blue.

参考答案:A

标签:试题 精选 语言