1、一、选择题: 【 1】在 C 语言中,用户能使用的正确标识符是 。 A) 5f B) _for C) struct D) _f.5 答案: B 分析:标识符只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线;大小写敏感;不能使用关键字;最长 32 个字符。 【 2】以下 是正确的 C 语言常量。 A) 0678 B) 0101 C) 1.2E3.5 D) 123L 答案: D 【 3】以下对 C 语言源程序有关常识正确的描述是 。 A) main 函数必须位于文件的开头 B) 每个语句必须单独一行 C) 标识符中大小写字母没有区别 D) 宏定义 #define 部分不一定要放在程序的
2、最开头位置 答案: D 【 4】以下 for 循环的执行次数是 。 for(x=0,y=0;(y=123) a=10%3,b=5; printf(“%d, %d”, a , b); A) %1, %5 B) %1, %d C) %3, %5 D) 1, 5 答案: B 分析:如果两个 %连在一起,则输出一个 % 【 10】在以下运算符中,优先级最高的运算符是( ) (A) = (B) (C) != (D) 答案: B 【 11】下列对一维数组 a 的正确说明语句为 。 A) int a(10); B) int n=10, an; C) int n; D) #define SIZE 10 sca
3、nf(“%d“, int aSIZE; int an; 答案: D 分析:数组名后面的 是数组的标志,不能用圆括号或其它符号代替;数组元素的个数必须是一个固定的值,可以是整型常量、符号常量或整型常量表达式,不能是变量。 【 12】下面程序段的输出结果是 int i; int x33=1,2,3,4,5,6,7,8,9; for(i=0;ib) printf(“%dn”,n+); 答案: 2 分析:对于 y=(x(y+x)?10:12.5y+?20:30); printf(“%d“,y); 答案: 10 分析:关系运算符的优先级高于条件运算符,条件运算符的结合方向为自右向左。 -x(y+x)或
4、x(y+x)之类结构中,右边的 x应为自减后的值。如表达式 x(y+x)?10:12.5y+?20:30; 的值为 20;表达式 -x(y+x)?10:12.5y+?20:30; 的值为 20。 【 4】 main() int n=0; while (n3) break; while (1); printf(“n”); 答案: * 分析:此题中的 while (1)永远为真,程序结束依靠 break 来控制,循环体语句为 printf(“*”); i+;if (i3) break; ,当 i 的值分别为 0, 1, 2, 3 时,程序循环四次,输出 *;当 i 的值为 4 时, i4 为真,退
5、出整个程序。 【 6】 main() int a,i; for ( a=1,i=-1; -1=10) break; if (x%2=1) x+=5; continue; x-=3; printf(“x=%d,i=%dn”,x,i); 答案: x=10, i=6 分析: break 的功能是退出整个循环,结束程序的执行;而 continue 的功能是退出本次循环,进入下次循环。此题可用变量跟踪法来求解: i x x%2 x+=5 x-=3 1 1 1 6 2 6 0 3 3 3 1 8 4 8 0 5 5 5 1 10 6 10 则 if (x=10) break;条件成立,退出整个循环。 【
6、8】以下程序的运行结果是 。 main() int i, v1=0, v2=1, v3=2; for(i=1; i10; i+) switch ( i% 4) case 1: v1+; case 2: v2+; break; default: v3+; printf(“%d,%d,%dn “,v1,v2,v3); 答案: 3, 6, 6 分析:用变量分析法如下: i i% 4 v1 v2 v3 1 1 1 2 2 2 3 3 3 3 4 0 4 5 1 2 4 6 2 5 7 3 5 8 0 6 9 1 3 6 【 9】执行以下程序后,输出结果是多少? main() int j,k,s; for(k=2;k6;k+,k+) s=1; for(j=k;j6;j+) s+=j; printf(“%d“,s);