使用VC6打开考生文件夹下的源程序文件modil.cpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。 注意:不要改动main函数,不能增行或删行,也不能

admin2015-05-30  30

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp。本程序要求输入一字符串,然后将其中的小写字母改变成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到界面。
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
    1    #include
    2    void main()
    3    {
    4    int i=0,
    5    char str[12 0];
    6    cout<<"Enter a string endwith’?’."<    7    //********error********
    8    cin.getline(str,120);
    9    //********error********
    10    while(str)
    11    (
    12    //********error********
    13    if(str>=’a’)
    14    str  =str  -’a’+’A’;
    15    i++;
    16    }
    17    cout<    18    return;
    19    }

选项

答案(1)cin.getline(str,120,’?’); (2)while(str[i]) (3)if (str[i] >= ’a’ &&str[i]<=’z’)

解析 同一英文字母的大写和小写形式的ASCII码值相差32,因此,要将小写字母转换为大写字母,只要将其对应的ASCII码值减去32即可,程序中给出的语句中,减去字符’a’的ASCII码再加上字符’A’的ASCII码正好是减去32。
    [解题思路]
    (1)题目中要求以输入字符“?”为结束,用于字符输入的流成员函数getline函数读入一行字符,格式cin.getline(字符数组,字符个数,终止标志字符),所以第1个标识下为“cin.getline(str,120,’?’);”。
    (2)第2个标识下的“while(str)"语句应该是判断字符串str中的每一个字符是否为尾符,若不是尾符在循环中判断每一个字符是否为小写,若为小写,转换。所以应该修改为“while(slal)”。
    (3)第3个标识下的“if(str嘲>=’a’)”语句是判断字符str是否为小写字符,而现有的语句只是判断字符是否大于’a’,但是小写字符应该是’a’到’z’,所以修改为“if(str>=’a’&&str<=’z’)”。
转载请注明原文地址:https://jikaoti.com/ti/6nE0FFFM
0

最新回复(0)