首页 养生问答 疾病百科 养生资讯 女性养生 男性养生
您的当前位置:首页正文

C程序设计基础_复习题

2024-08-10 来源:华佗健康网


C程序设计基础_复习题(共9页)

--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--

c语言规定,任何非0的数像1 -1等都被认为是真,而0被认为是假1>1为假

试题一、单选题

1. 已知int k,m=1;执行语句k=-m++;后,k的值是_____。【知识点: 难度: 正确答案:A】

A.-1 A.(int k)%m

B.0 B.int(k)%m

C.1 C.int(k%m)

D.-2 D.(int)k%m

2. 已知定义int m; float k; 正确的语句是 。【知识点: 难度: 正确答案:D】 3. 当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是______。【知识

点: 难度: 正确答案:B】

A.m=k=n

C.(m=k)||(n=k)

B.(m=k)&&(n=m) D.(n=m)&&(m=k)

4. 已知 int x=5; 表达式6>x>1值是_____。【知识点: 难度: 正确答案:A】

A.0 B.1 C.5 D.表达式语法错

表达式6>x>1 ,先

判断6>x 为0,再判断0>1,所以值为0。

(6>x 为1 ,再判断1>1,所以值为0。) 5. 下列程序段执行后c值为_____。【知识点: 难度: 正确答案:D】

int k=7, c=0; while(--k)

if (k%3) continue; else c++;

A.5

B.4

C.3

D.2

6. 已知字母a的ASCII码为十进制数97,且ch为字符型变量,则执行语句ch=‘a’+‘D’-

‘A’;后,ch中的值为_____。【知识点: 难度: 正确答案:C】

A.d

B.c

C.100

D.不确定

7. 设m,n已正确定义,执行语句{for(m=0, n=10; m是________。【知识点: 难度: 正确答案:C】

A.6,7 C.9,7

B.7,6 D.7,9

8. 已知char *t[] ={”How”, ”are”, ”you!”};则t是_______。【知识点: 难度:

正确答案:B】

A.指向char变量的指针 C.指向”How”的指针变量

B.指向字符指针的指针常量 D.指向’H’的指针

9. 假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串

的程序段是______。【知识点: 难度: 正确答案:C】

A.char s[5] = {\"ABCDE\ C.char *s; s = \"ABCDE\"; puts(s);

B.char s[5] = {‘A’,’B’,’C’,’D’,’E’}; puts(s); D.char *s; scanf(“%s”,s); puts(s);

2

10. 以下程序有错,错误原因是______。【知识点: 难度: 正确答案:D】

main()

{ int *p, i; char *q, ch; p = &i; q = &ch; *p = 40; *p = *q; ...... }

A. p和q的类型不一致,不能执行*p=*q;语句

B. *p中存放的是地址值,因此不能执行*p=40;语句 C. q没有指向具体的存储单元,所以*q没有实际意义

D. q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

11. 若有定义:int a=2, b=5, c=8; 则表达式c |= (~a && b) ^ !(a & b)的值为_____。【知识点: 难度:4 正确答案:B】 A.14 B. 8 C.1 D.0

12. 设int a=5, b=7, 表达式(++a == b--) ++ a : --b 的值是_______。【知识点: 难度:2 正确答案:C】 A.7 B. 6 C.5 D.4

13. 设a=3, b=2, 那么表达式 (a=b=7, b=a!=7) 的值是 。【知识点: 难度:2 正确答案:D】 A.1 B.2 C.7 D.0

逗号(,)也可以是运算符,逗号表达式最右边的子表达式的值即为逗号表达式的值。而b=a!=7的值为0

逗号运算符只取最右边的子表达式的值,但每个子表达式都要运行

14. 设有:int a=1,b=2,c=3,d=4,m=2,n=2; 执行语句(m=a>b)&&(n=c>d);后n的值是_____。 【知识点: 难度:3 正确答案:A】 A.2 B.1 C.0 D.3 &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式, 15. 下列程序段的输出结果是_____。 【知识点: 难度:3 正确答案:B】

int k=2, s=0;

3

switch (k) { case 2: s++; k++;

case 1: s++; case 3: s+=1; switch(s){

case 2: s+=2; break; default: k++; break; }

default: s+=3; }

printf(\"%d#%d#\ A.1#3# B.6#4# C.3#2# D.3#4#

16. 下列程序的输出结果是_____。 【知识点: 难度:2 正确答案:C】 int f(int x)

{ static int k; return ++k + x;

}

main( ) { int k;

for(k=1; k<4; k++) printf(\"%d#\ }

A.2#5# B.3#6# C.2#4#6# D.不确定

17. 下列程序的输出结果是_____。 【知识点: 难度:2 正确答案:D】

main()

{ char x=040;

printf(\"%o\\n\); }

A. o B. 40 C.1000000 D.100

18. 下列程序段的输出是__________。 【知识点: 难度:3 正确答案:A】

main()

{ int x= -9, y=5, z=8;

if(x=y)if(x>0)z=0; else z+=1; printf(\"z=%d\\n\); }

A.z=0 B.z=1 C.z=8 D.z=9

4

esle子句与其之前最近的不完整if配对。C语言中等号“=”为赋值运算符,不用于判断相等,判断相等应用“==”,因此执行x=y后,x=5,if(5)相当于if( true), 执行if(x>0)z=0,所以z=0

19. 下列程序段的输出是__________。【知识点: 难度:3 正确答案:B】

#define SQ(a,b) (a*a-2*a*b+b*b) main() { int k=4;

printf(\"%d\ }

A.1

#define定义一个宏(不是一个函数),用于字符串的替换,注意替换不是用数值去替换,也不会自动加括号,因此

SQ(k, k-1)=k*k-2*k*k-1+k-1*k-1=-k*k-2

SQ(4,3)=-4*4-2=-18

B.-18 C.-15

D.-8

20. 若运行以下程序时,从键盘输入Hello_Everyone!表示回车),则下面程序的运行结

果是_________。【知识点: 难度:2 正确答案:C】

main() { char c;

int v1=0,v2=0; do{ switch(c=getchar()) {case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O':

case 'u': case 'U': v1+=1; default: v1+=1;v2+=1; } } while( c != '\\n' );

printf(\"%d,%d\\n\ }

A.6,10 B.21,10 C.22,10 D.6,9

21. 下列程序段输出 _____。【知识点: 难度:4 正确答案:D】 main() { char str[2][5] = { \"abcd\" };

strcpy( str[0], \"You\" ); strcpy( str[1], \"Me\" ); str[0][3] = '&';

5

printf( \"%s\\n\ }

A.You&Me B.abcd

22. 对于函数f,调用 f (12345) 的输出是_____。【知识点: 难度:3 正确答案:

C.abc&

D.You&

A 】

void f (int n)

{ if(n<10) printf( \"%1d\

else { f(n/10); printf( \"%1d\ }

A.12345

23. 下列程序段的输出结果是_____.【知识点: 难度:2 正确答案:B】

B.54321

C.11111

D.5432

void fun(char *fname,char *st) { FILE *myf; int i; myf = fopen(fname,\"w\" ); for(i=0; ivoid main() { fun(\"test_\ fun(\"test_\ }

A.C_is_fun B.is_fun C.test_is_fun D.C_

试题二、程序阅读题

1. 以下程序的输出结果是_______。【知识点: 难度:3 正确答案:C】

main() { char ch[2][5]= { \"1234\[2]; int i,j,s=0; }

for(i=0; i<2; i++)p[i]= ch[i]; for(i=0; i<2; i++) for(j=0; p[i][j]> ′\\0′; j+=2) s=10*s + p[i][j]- ′0′; printf(\"%d\\n\); B.2468

C.1357

D.2648

A.1537

6

2. 运行下列程序的输出结果是__________。【知识点: 难度:3 正确答案:D】

struct st { int x; int *y; } *p;

int dt[4] = { 10, 20, 30, 40 };

struct st aa[4] = { 50, &dt[0], 60, &dt[1], 70, &dt[2], 80, &dt[3] }; main() { p=aa;

printf(\"%d,\ }

A.60,60,21 B.51,51,21 C. 60,70,31 D.51,52,11

3. 下列程序的输出结果是__________。【知识点: 难度:4 正确答案:A】

void fun(int m, int *a, int *n) { int i,j=0;

for( i=1; i<=m; i++ )

if(i%3==0 && i%7==0)

a[j++]=i;

*n=j; }

void main()

{ int aa[50],n,k;

fun(50, aa, &n); for(k=0; kA.21#42# B.3#7# C. 3#7#21#42# D. 3#7#9#49#

4. 运行下面程序的输出结果是__________。【知识点: 难度:3 正确答案:B】

int x, y; int f( int n )

{ static int x=0; x++; if( !(n%3)) printf(\"%d\ else y++; return x; }

void main()

7

{ int i; x=1; y=5;

for( i = 0; i < 7 ; i++) x = f( i ); printf(\"#%d#%d\\n\ }

A.1245#7#10 B .036#7#9 C. 1245#1#9 D. 036#1#10

5. 如果已经有了有关的定义,则下列程序的输出结果为_______。【知识点: 难

度:4 正确答案:C】 main() { int i, n=7;

char b[7], *a[] = { \"January\ f(a, n);

for (i=0; iif( strlen(a[i]) >= i ) b[i]=*(a[i]+i); b[i]='\\0';

printf(\"%s\\n\ }

void f(char *a[], int n) { int i, j; char *temp; for( i = 1; i < n; i++) for (j = 0; j < n-i; j++ )

if (strcmp(a[j], a[j+1]) > 0) swap(&a[j], &a[j+1]); }

void swap(char **s1, char **s2) { char *temp; temp=*s1; *s1=*s2; *s2=temp; }

A.Jeri B.Juyichay C. Aeny D. JFMAMJJ

试题三、程序(段)填空题

1. 下面的程序输入n ( 1<=n<=10),打印出n行杨辉三角。第m行有m个整数,其中

第i个整数是 m选i的组合数:Ci,m。每个数右对齐占4位,相邻行交错显示,呈金字塔状。例如,输入6以后,输出的金字塔是:【知识点: 难度:3 正确答案:(1)A (2)B (3)G】

8

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 /* 1 */ #include \"\" /* 2 */ main() /* 3 */ {

/* 4 */ int i, j, n, a[10][10]; /* 5 */ scanf(\"%d\

/* 6 */ for( i=0; i/* 8 */ for( i=0; i<____(1)____; i++ )

/* 9 */ for( j=1; j<____(2)____; j++ ) /* 求每行的内部数据 */ /* 10 */ a[i][j] = a[i-1][j-1] + a[i-1][j]; /* 11 */ printf(\"\\n\"); /* 12 */ for(i=0; i/* 14 */ for(j=0; j<__(3)___; j++) printf(\" \"); /* 打印前导空格 */ /* 15 */ for(j=0; j<=i; j++) /* 打印一行数据 */ /* 16 */ printf(\"%4d\ /* 17 */ printf(\"\\n\"); /* 换行 */ /* 18 */ } /* 19 */}

A. n B. i C. n-1 D. i-1 E. n-i F. n-i-1 G. n-i+1 H. i-n I. i-n+1

2. 一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个

月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到R对(R为给定的正整数)。下面的程序输入一个正整数R,输出“至少到第几个月时,兔子总对数才能达到R对。”例如:输入30,输出“至少第 9 个月才有 30 对兔子。” 【知识点: 难度:3 正确答案:(1)F (2)A (3)C】 /* 1 */ #include \"\" /* 2 */ main() /* 3 */ {

/* 4 */ int month=1, R, R1=1, R2=0, R3=0; /* 5 */ scanf(\"%d\

9

/* 6 */ while( R1+R2+R3 < R ) /* 兔子数量未达到给定的量,继续计算下个月的值 */

/* 7 */ { month++; /* 8 */ R3 = ___(1)___; /* 9 */ R2 =___(2)___; /* 10 */ R1 = ___(3)___; /* 11 */ }

/* 12 */ printf(\"至少第 %d 个月才有 %d 对兔子。\\n\ /* 13 */ }

A. R1 B. R2 C. R3 D. R1+R2 E. R1+R3 F. R2+R3 G. R3-R1 H. R3-R2 I. R2-R1

3. 给定一个整数序列(整数允许是负数,但至少有一个非负整数):a1, a2, ..., ai, ...,

aj, ..., an。设Sij = ai+...+aj (1<=i<=j<=n),如果Suv = max{Sij},那么就称au,…av是原来序列的最大连续子序列。下面程序入整数个数n(n<=100)和n个整数序列{ai},输出最大连续子序列的和值MaxSum。例如,输入8和8个整数2 -3 5 -2 -1 2 6 -2,输出最大连续子序列5 -2 -1 2 6的和值10。【知识点: 难度:4 正确答案:(1)B (2)F (3)H】 void main( ) {

int n, A[101];

int ThisSum, MaxSum, i, j;

/*---输入n个整数,并求最大连续子序列之和值MaxSum--*/ scanf(\"%d\

for( i = 0; i < n; i++ ) /* 输入n个整数 A[ i ] */ {

scanf(\"%d\ }

MaxSum = 0; /* 初始化最大和值 */ for( i = 0; i < n; i++ ) /* 从 A[ i ]开始 */ { ThisSum = 0; for( j = __(1)__; j < __(2)__; j++ ) { /*到A[ j ]为止 */ ThisSum += __(3)___; /* 求 A[ i ] 到 A[ j ] 的和*/ if ( ThisSum > MaxSum ) MaxSum = ThisSum; /* 更新最大和值 */ } /* end for-j */ } /* end for-i */

printf(\"%d\\n\ }

10

A. A[i] B. A[j] C. A[n] D. 0 E. 1 F. i G. j H. n I. n-i

11

因篇幅问题不能全部显示,请点此查看更多更全内容