C语言--每日五道选择题--Day12

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: C语言--每日五道选择题--Day12

第一题

1、如下程序的功能是( )

#include <stdio.h>
int main()
{
    char ch[80] = "123abcdEFG*&";
    int j;
    puts(ch);
    for(j = 0; ch[j] != '\0'; j++)
    {
         if(ch[j] >= 'A' && ch[j] <= 'Z')
           {
                 ch[j] = ch[j] + 'e' - 'E';
           }
    }
    puts(ch);
    return 0;
}

A: 测字符数组ch的长度

B: 将数字字符串ch转换成十进制数

C: 将字符数组ch中的小写字母转换成大写

D: 将字符数组ch中的大写字母转换成小写

答案及解析 D

先来解读程序,首先定义了一个char类型的字符串,然后puts,输出这个字符串,再去遍历字符串,如果是大写字母,就转换成小写字母,最后再次打印字符串;

所以这个程序的功能就是D。

第二题

2、对于代码段,下面描述正确的是( )

t=0;
while(printf("*"))
{
    t++;
    if (t<3)
        break;
}

A: 其中循环控制表达式与0等价

B: 其中循环控制表达式与'0'等价

C: 其中循环控制表达式是不合法的

D: 以上说法都不对

答案及解析 B

本题问的是while的循环的条件是和什么等价的。


这里涉及到了printf函数,我们要知道printf函数是有返回值的


大家不清楚的可以看我的这篇博客🔗http://t.csdnimg.cn/bkwOb


我们知道printf的返回值是跟我们的打印的字符有关的,打印普通键盘上的字符是,打印几个返回值就是几,还有转义字符,汉字等等,看博客吧,这里不介绍了。


所以这里面打印的字符只有一个,那返回值就是1,循环条件为真,是恒成立的;


我们再来看选项,找循环条件为真的,0为假,非0都是真(无论正负);


最好只有B选项正确

第三题

3、以下程序运行时,若输入 1abcedf2df<回车> 输出结果是( )

#include <stdio.h>
int main()
{
    char ch;
    while ((ch = getchar()) != '\n')
    {
        if (ch % 2 != 0 && (ch >= 'a' && ch <= 'z'))
            ch = ch - 'a' + 'A';
        putchar(ch);
    }
    printf("\n");
    return 0;
}

A: 1abcedf2df

B: 1ABCEDF2DF

C: 1AbCEdf2df

D: 1aBceDF2DF

答案及解析 C


本题考查的是ASCII值,大小写的转换


首先while循环条件的表达式是用来输入字符的,我们可以在键盘上输入一堆字符,但是getchar是每次只取一个字符,直到取到回车字符;


然后putchar是依次输出字符;


我们知道这些之后就看ASCII值就OK了,这个表在前面发过了,希望大家做题可以保存下来,防止忘记哦!


7a092dc9e3e5413389166720d6a6254b.png


第四题

4、下列条件语句中,功能与其他语句不同的是( )

A:

if(a) 
    printf("%d\n",x); 
else 
    printf("%d\n",y);


B:

if(a==0) 
    printf("%d\n",y); 
else 
    printf("%d\n",x);

C:

if (a!=0) 
    printf("%d\n",x); 
else 
    printf("%d\n",y);


D:

if(a==0) 
    printf("%d\n",x); 
else 
    printf("%d\n",y);

答案及解析 D

这个题就是看a = 0的时候都输出几,所以我们直接默认a为0再来看选项;

A:a = 0 时;输出y;

B:a = 0 时;输出y;

C:a = 0 时;输出y;

D:a = 0 时;输出x;

所以最后只有D跟其他三个不同,选D


第五题

5、我们知道C语言的 break 语句只能跳出离它最近的一层循环,可是有时候我们需要跳出多层循环,下列跳出多层循环的做法正确的是【多选】( )

A: 将程序写成函数用return结束函数,便可跳出循环

B: 修改外层循环条件例如

for( int i = 0 ; i < MAX1 ; i ++ )
{
    for( int j = 0 ; j < MAX2 ; j ++ )
    {
        if( condition )
        {
            i = MAX1;
            break;
        }
    }
}


C: 在外层循环设置判断条件例如

for( ; symbol != 1 && condition2 ; )
{
    for( ; symbol != 1 && condition3 ; )
    {
        if( condition1 )
            symbol = 1 ;
    }
}

D: 在外层循环后面加入break例如

for( ; condition2 ; )
{
    for( ; condition3 ; )
    {
        if( condition1 )
        symbol = 1 ;
    }
    if( symbol == 1 )
        break ;
}

答案及解析 ABCD

这里先解释一下上面的是伪代码,condition是条件;

跳出多层循环可以使用return,也可以使用一些手段,让跳出最外层循环;

相关文章
|
6月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
52 2
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
|
6月前
|
算法 C语言 C++
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)(中)
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)
154 1
|
6月前
|
算法 编译器 C语言
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(上)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
44 3
|
6月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(中)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
42 1
|
6月前
|
存储 编译器 C语言
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(下)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
46 0
|
6月前
|
Java 编译器 定位技术
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(中)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
45 0
|
6月前
|
安全 程序员 C语言
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(上)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
48 0
|
6月前
|
存储 算法 C语言
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)(下)
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)
42 0
|
6月前
|
存储 C语言 C++
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)(上)
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)
35 0
|
6月前
|
C语言 C++
从C语言到C++⑧(第二章_类和对象_下篇_续)笔试选择题和OJ题
从C语言到C++⑧(第二章_类和对象_下篇_续)笔试选择题和OJ题
37 0