一、选择题:
【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】以下 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 为假即可。
B) for(表达式 1;1;表达式 3)
C) for(表达式 1; 表达式 1;表达式 3)
D) for(表达式 1; 表达式 3;表达式 3)
答案: B
【6】 设有程序段
int k=10;
while(k=0) k=k-1;
则下面描述中正确的是 。
A) while 循环执行 10 次 B)循环是无限循环
C)循环体语句一次也不执行 D)循环体语句执行一次
答案: C
分析:因为 k=0 为假,所以程序不执行其后的语句。
【7】C 语言中 while 和 do-while 循环的主要区别是 。
A) do-while 的循环体至少无条件执行一次
B) while 的循环控制条件比 do-while 的循环控制条件严格
C) do-while 允许从外部转到循环体内
D) do-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小时内删除。
发表评论