C语言考试试题三套
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言辅导试题一
一、单项选择题(每小题 2 分,共20 分)
1.C 语言程序的三种基本结构是顺序结构、选择结构和______结构。
A、循环
B、递归
C、转移
D、嵌套
2.若x是单精度实型变量,表达式(x = 10/4) 的值是_____ 。
A、2.5
B、2.0
C、3
D、 2
3. 表达式!x 等价于_____。
A、x==0
B、x==1
C、x != 0
D、x != 1
4.若变量已正确定义且k 的值是4,计算表达式( j = k--) 后,_____。
A、j=3, k=3
B、j=3, k=4
C、j=4, k=4
D、j=4, k=3
5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_____。
A、算术运算、赋值运算、关系运算
B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算
D、关系运算、算术运算、赋值运算
6.C语言中,形参的缺省的存储类说明是______。
A、auto
B、static
C、register
D、extern
7.下列语句定义pf为指向float类型变量f的指针,_____是正确的。
A、float f, *pf = f;
B、float f, *pf = &f;
C、float *pf = &f, f;
D、float f, pf = f;
8.表达式sizeof(“key”) 的值是______。
A、1
B、2
C、3
D、4
9.将程序prog.c编译后运行:prog –nla hello world 则*(*(argv+2)) 是______。
A、‟p‟
B、…-…
C、…h‟
D、…w‟
10.若a是整型变量,表达式~(a ^ ~a ) 等价于______。
A、~a
B、1
C、0
D、2
二、填空题(每小题 3 分,共24 分)
1.写出语句printf ("%d, %o, %x", 0x12, 12, 012); 的输出结果。
2.写出下列程序段的输出结果。
#define F(x) x - 2
#define D(x) x*F(x)
printf("%d,%d", D(3), D(D(3))) ;
3.写出下列程序段的输出结果。
int k ; char *s = “ABC”;
for( k=10; k != 0; k-- ) ;
printf ( "%d", k );
while( *s++ ) putchar( *s );
4.写出下列程序的输出结果。
void fun(int k)
{ static int a;
printf(”%d,”, a);
a += k;
}
main()
{ int k;
for (k=1; k<=3; k++)
fun(k);
}
5.写出下列程序的输出结果。
main( )
{ struct st {
int x, y;
} a[4]={{10,20},{30,40},{50,60},{70,80}};
struct st *p=a;
printf("%d,", p++->x);
printf("%d,", ++p->y);
printf("%d\n", (a+3)->x);
}
6.写出下列程序的输出结果。
#include "stdio.h"
void main()
{ int k, j, m, n, a[6][6], b[6];
m=3, n=2;
for(k=0; k for(j=0; j a[k][j] = k*n+j+1; for(k=0; k b[k] = 0; for(j=0; j b[k] += a[k][j]; } for(k=0; k printf("%d, ", b[k]); } 7.写出下列程序的输出结果。 # include long fib(int g) { switch(g){ case 0: return(0); case 1: case 2: return(2); } printf("g=%d,", g); return ( fib(g-1) + fib(g-2) ); } main() { long k; k = fib(4); printf("k=%ld\n", k); } 8.用typedef定义一个长度为10的整型数组NUM。 三、程序阅读题(每题 5 分,共20 分)1.写出下列程序的输出结果。 #include int x, y, z; void p(int *x, int y) { --*x; y++; z = *x+y; printf("%d,%d,", *x,y); } void main() { x=5; y=2; z=0; p(&x, y); printf("%d,%d,%d--", x, y, z); p(&y, x); printf("%d,%d,%d\n", x, y, z); } 2.写出下列程序的输出结果,并指出该程序的功能。 #include void main() { int x, k; x =14; for ( k = 0; x!=0; x &= x-1 ) ++k; printf("%d\n", k); } 3.写出下列程序的输出结果。 #include void main() { int v[]={6,3,4,1,2}; int n=5; int gap, j, k, temp; for( gap = n/2; gap > 1; gap /= 2 ) for( j = gap; j < n; j++ ) for( k = j-gap; k >= 0 && v[k] > v[k+gap]; k -= gap ){ temp = v[k]; v[k] = v[k+gap]; v[k+gap] = temp; } for(k=0; k<5; k++) printf("%d, ", v[k]); } 4.输入1 2 3 4 5 0后,写出下列程序的输出结果。 #define LEN sizeof(struct line) #define NULL 0 struct line{ int num ; struct line *next ; } main() { struct line *p1 , *p2 , *head ; int j, k = 0; p1 = p2 = head = (struct line *) malloc (LEN) ; scanf("%d", &p1->num) ; while (p1->num != 0){ p1 = (struct line *) malloc (LEN) ; scanf("%d", &p1->num) ; if ( p1->num == 0 ) p2->next = NULL ; else{ p2->next = p1 ;