、选择题:
1】在 C 语言中,用户能使用的正确标识符是    。
A) 5f    B)  _for    Cstruct    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】以下 for 循环的执行次数是             
for(x=0,y=0;(y=123)&&(x<4);x++)
A)  是无限循环  B)循环次数不定  C)  执行 4 次  D)执行 3 次
案:  C
分析:若要判断(y=123)&&(x<4)假,  因为 y=123 永远为真,所以只需要判断 x<4 为假即可。
Bfor(表达式 1;1;表达式 3)
C) for(表达式 1; 表达式 1;表达式 3)
D) for(表达式 1; 表达式 3;表达式 3)
案:  B
6】  设有程序段
int k=10;
while(k=0)  k=k-1;
下面描述中正确的是              。
Awhile 循环执行 10 次            B)循环是无限循
C)循环体语句一次也不执行          D)循环体语句执行一次
案:  C
分析:因为 k=0 为假,所以程序不执行其后的语句。
【7】C 语言中 while 和 do-while 循环的主要区别是          。
Ado-while环体至少无条件执行一次
B) while 的循环控制条件比 do-while 的循环控制条件严格
Cdo-while 允许从外部转到循环体内
Ddo-while循环体不能是复合语句 案:  A
【8】  设有:  int a=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d) 后 n 的值为              。
A)  1      B)  2        C)  3        D) 4
案:  B
析:  对于&&运算,只要第一个操作数为假,就不判定第二个操作数。对于 ||运算,  只要第

一个操作数为真,就不判定第二个操作数。上题中 m=a>b 为假,  则 n=c>d 没有被判定,所 n值仍为 2。
9】以下程序运行后,  a 和b 的值分别为:
#include <stdio.h>
main()
{int a,b;
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, a[n];
C) int n                         D) #define SIZE 10
scanf("%d", &n);                  int a[SIZE];
int a[n];
案:  D
分析:数组名后面的[]是数组的标志,不能用圆括号或其它符号代替;数组元素的个数必是一个固定的值,可以是整型常量、符号常量或整型常量表达式,不能是变量。
12】下面程序段的输出结果是
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)  printf("%d",x[i][2-i]);
A)1 5 9      B)1 4 7        C)3 5 7        D) 3 6 9
案:  C
析:
数组 x[3][3]的元素分别:  x[0][0] x[0][1] x[0][2]
x[1][0] x[1][1] x[1][2]
x[2][0] x[2][1] x[2][2]
对数组初始化后应的值为:      1        2        3
4        5        6
7       8        9
i=0 时,  x[i][2-i]= x[0][2]=3
i=1 时,  x[i][2-i]= x[1][1]=5
i=2 时,  x[i][2-i]= x[2][0]=7
i=3 时,条件不成立,程序退出。
、填空题:
【1】main()
{ int a=5;float x=5.3,y=6.6;

printf("%.2f",x+a%3*(int)(x+y)%2/4);}
案:  5.30
分析:算术运算符结合方向为自左向右,并注意格式控制
【2】main()
{ int a=1,b=2,m=2,n=2;
(m=a>b)&&++n;
printf(“%d\n”,n++);}
答案:  2
析:对于&&运算,只要第一个操作数为假,就不判定第二个操作数。所以  n 的值为 2, 表达式 n++的值也为 2。
【3】main()c语言中struct
{ int x=1,y=0;
y=(x-->(y+x)?10:12.5>y++?20:30);
printf("%d",y);}
案:  10
分析:  关系运算符的优先级高于条件运算符,  条件运算符的结合方向为自右向左。  --x>(y+x) x-->(y+x)之类结构中, 右边的 x 应为自减后的值。如表达式 x>(y+x)?10:12.5>y++?20:30;  的 值为 20;  表达式--x>(y+x)?10:12.5>y++?20:30;  的值为 20。
【4】main()
{ int n=0;
while (n<=2)
{ n++;
printf(“%d”,n);
}
}
案:  123
分析:  { n++; printf(“%d”,n);} 为 while 语句的循环体部分,  当 n=0 时条件成立,  执行 n++后 n 变为 1,  并输出 1;  当 n=1 时条件成立,执行 n++后 n 的值变为 2,  并输出 2;  当 n=2 时条件成立,执行 n++后n 的值变为 3,  并输出 3;  n=3 时条件不成立,程序退出。
【5】main()
{ int i=0;
do
{ printf(“*”);
i++;
if (i>3) break;
} while (1);
printf(“\n”);
}
答案:  ****
分析  此题中的 while (1)永远为真,  程序结束依靠 break 来控制,  循环体语句为{printf(“*”); i++;if (i>3) break;  },  当 i 的值分别为 0,  1,  2,  3 时,程序循环四次,输出 ****;当 i 的值 4 时,  i>4 为真,退出整个程序。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。