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 部分不一定要放在程序的最开头位置答案:D【4】以下 f
2、or 循环的执行次数是 。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 10scanf(“%d“, int aSIZE;int an;答案:D分析:数组名后面的是数组的标志,
3、不能用圆括号或其它符号代替;数组元素的个数必须是一个固定的值,可以是整型常量、符号常量或整型常量表达式,不能是变量。【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)或 x(y+x)之类结构中,右边的 x 应为自减后的值。如表达式 x(y+x)?10:12.5y+?20:30; 的值为 20;表达式
4、-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 为真,退出整个程序。【6】main() int a,i;for ( a=1,i=-1; -1=10) break;if (x%2=1) x+=5; continue
5、;x-=3;printf(“x=%d,i=%dn”,x,i);答案:x=10,i=6分析:break 的功能是退出整个循环,结束程序的执行;而 continue 的功能是退出本次循环,进入下次循环。此题可用变量跟踪法来求解:i x x%2 x+=5 x-=31 1 1 62 6 0 33 3 1 84 8 0 55 5 1 106 10 则 if (x=10) break;条件成立,退出整个循环。【8】以下程序的运行结果是 。main() int i, v1=0, v2=1, v3=2;for(i=1; i0 【 3】i%10分析:本题定义 i 为输入的整数, t 为各位数字之和。四、编程题:编程求“卖西瓜” 问题。问题:有 1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?参考答案一:(其中 d 为天数,s 为西瓜数量)main()int d,s=1020;for(d=0;s=0;d+)s=s/2-2;printf(“%d“,d);参考答案二:(其中 day 为天数,sum 为西瓜数量)main()int day,sum;day=0,sum=0;while(sum=1020)sum=sum*2+4;day+;printf(“%d“,day);