6.1 选择题
(424) 执行语句for (i = 1; i++ < 4;)后变量i的值是___。
a. 3
b. 4
c. 5
d. 不定
(c)
(425) 语句while(!E);中的表达式!E等价于
a. E==0
b. E!=1
c. E!=0
d. E==1
(a)
(426) 设有程序段
int k=10;
while(k=0)
{
k=k-1;
}
则下面描述中正确的是___
a. while循环执行10次
b. 循环是无限循环
c. 循环体语句一次也不执行
d. 循环体语句执行一次
(c)
(427) 以下程序段:
x = -1;
do
{
x=x*x;
}
while(!x);
a. 是死循环
b. 循环执行二次
c. 循环执行一次
d. 有语法错误
(c)
(428) 有如下语句:
int x=3;
do
{
printf("%d\n",x-=2);
}
while(!(--x));
则上面程序段___
a. 输出的是1
b. 输出的是1和-2
c. 输出的是3和0
d. 是死循环
(b)
(429) 以下描述中正确的是_____。
a. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
b. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
c. 在do-while循环体中,为了避免死循环,一定要有能使while后面表达式的值变为零("假")的操作
d. do-while循环中,根据情况可以省略while
(c)
(430) 以下正确的描述是_____。
a. continue语句的作用是结束整个循环的执行
b. 只能在循环体内和switch语句体内使用break语句
c. 在循环体内使用break语句或continue语句的作用相同
d. 从多层循环嵌套中退出时,只能使用goto语句
(b)
(431) 下面程序段___
x=3;
do
{
y = x--;
if(!y)
{
printf("x");
continue;
}
printf("#");
}
while (1<=x<=2);
a. 将输出##
b. 将输出##*
c. 是死循环
d. 含有不合法的控制表达式
(d)
(432) 根据编码规范,以下描述正确的是______。
a. goto语句只能用于退出多层循环
b. switch语句中不能出现continue语句
c. 可以用continue语句来终止循环
d. 在循环中break语句不能独立出现
(b.d)
(433) 请选择下面中存在无限循环的程序_____。
a. x=2;
while (1)
{
printf(" doggie ");
if (x=1) break;
}
b. for ( ; ; )
printf(" kitty ");
c. for (x=1, flag = 0; flag || x%2; x++, flag = !flag)
{
printf(" bunny ");
}
(a.b)
(434) 下面说法正确的是____.
a. 若有说明int c;则while(c = getchar());是正确的C语句;
b. int i, *p = &i;是正确的说明;
c. For ( ; ; ){S}中的语句S必执行无穷多次;
d. unsigned 和void 在C中都是保留的;
(a.b.d)
(435) 将程序prog.c编译后运行:prog -nla hello world 则 *(*(argv+2)) 是______。
a. 'p' b. '-' c. 'h' d. 'w'
(c)
(436) 下面说法正确的是____。
a. C语言允许在复合语句内定义自动变量;
b. 若一个函数的返回类型为void,则表示其没有返回值;
c. 在程序运行过程中,系统分配给实参和形参的内存单元是相同的;
d. &既可以用作单目运算符也可以用作双目运算符。
(a.b.d)
(437) 以下叙述中正确的是____。
a. 注释可以出现在程序中任意合适的地方
b. 花括号"{"和"}"只能作为函数体的定界符
c. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
d. 分号是C语句之间的分隔符,不是语句的一部分
(d)
(438) 下列叙述中正确的是____。
a. C语言编译时不检查语法
b. C语言的子程序分过程和函数两种
c. C语言的函数可以嵌套定义
d. C语言所有函数都是外部函数
(b)
(439) 以下叙述正确的是 。
a. main( )必须是程序的第一行
b. C程序每一行只能写一条语句
c. C程序可以由一个或多个函数组成
d. 在编译时可以发现注释中的拼写错误。
(c)
(440) 下面有关for循环的正确描述是_____。
a. for循环只能用于循环次数已经确定的情况
b. for循环是先执行循环体语句,后判断表达式
c. 在for循环中,不能用break语句跳出循环体
d. for循环的循环体语句中, 可以包含多条语句,但必须用花括号括起来
(d)
6.2 填空题
(441) 下列程序段的输出结果是_____。
int k, s;
for(k=0, s=0; k<10; k++)
{
if (s>k) break;
else s += k;
}
(442) printf("k=%d s=%d", k, s);下列程序的运行结果是_____。
main()
{
int number, digit;
number = 13579;
do
{
digit = number % 10;
printf("%d", digit);
number = number / 10;
} while (number != 0);
}
(443) 阅读下面程序,如果输入是1882,则程序的输出应该是____。
main()
{
int n = 0;
char c;
while ((c = getchar()) != '2')
{
n++;
printf("0%c",c);
}
printf("%d",n);
}
(444) 下面程序的运算结果是______。
int a = 1;
int b = 2;
int c = 3;
switch ((a = b) == c)
{
case 0: printf("false");
case 1: printf("true ");
case 2:
case 3: printf("2,3");
}
(445) 输入12345#后,下列程序的输出结果是_____。
void main()
{
char c;
for (c=getchar(); getchar()!='#'; c=getchar())
{
putchar(c);
}
}
(446) 执行程序find -nx ould text.txt时,*++argv[1]的值是_______。
(447) 不使用& &或||运算符编写一个与下面的for循环语句等价的循环语句:
for (i = 0; i < lim -1 && (c = getchar()) != '\n' && c != EOF; ++i )
s[i] = c;
(448) 指出下面程序的错误:
while(count)
{
……….
count=count-1;
}
(449) 请简述以下两个for循环的优缺点:
a.
for (i=0; i
{
if (condition)
{
DoSomething();
}
else
{
DoOtherthing();
}
}
b.
if (condition)
{
for (i=0; i{
DoSomething();
}
}
else
{
for (i=0; i{
DoOtherthing();
}
}
(450) 下列程序段的输出是_____。
main()
{
int k;
for(k=1; k<5; k++)
{
if(k % 2) printf("*");
else continue;
printf("#");
}
}
(451) 以下程序运行后的输出结果是______。
main()
{
char s[ ]="9876", *p;
for (p=s; p}
(452) 下列程序编译后生成 t.exe, 运行 t input output zoo oil 的输出结果是_______。
void main(int argc, char * argv[ ])
{ int k;
char *p=argv[1];
for(k=2; k if(strcmp(argv[k], p)>0) p=argv[k];
printf("%sn", p);
}
6.3 问答与设计
(453) 嵌入式系统中经常要用到无限循环,如何用C编写死循环?
(454) 请说明主函数main(int argc, char *argv[])各参数的作用。
(455) 求解下列递归方程:
1 n=1
T(n)={ aT(n/b)+c n>1
其中 a>1, b>1, a?N, b?N
为简单起见,设n为b的整数幂。
阅读(1179) | 评论(0) | 转发(0) |