使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。调用fun函数输出字符串,当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串。 请改正函数f

admin2018-03-27  15

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。调用fun函数输出字符串,当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串。
    请改正函数fun中指定部位的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #pragma warning(disable:4996)
    void fun(char*s)
    { int i;
    /**********found**********/
    Static int n=1:
    if(rl++%2)
    /**********found**********/
    for(i=0;i<=strlen(s);i++)
    printf(’’%’’,islower(s)toupper(s):s);
    else
    /**********found**********/
    for(i=strlen(s)-1;i>0;i--)
    printf(’’%c’’,s);
    }
    main()
    {int i;
    char s[]=’’Hello,C Programmer’’;
    for(i=0;i<5;i++){fun(s);printf(’’\n’’);}
    }

选项

答案(1)将Static改为static (2)将for循环中的i<=strlen(s)改为i<strlen(s) (3)将for循环中的i>0改为i>=0

解析 (1)函数使用static修饰变量n,用来保存调用次数以便判断是奇数次还是偶数次,关键字应为static,第一个字母为小写,所以将static改为static。
    (2)用strlen()汁算字符串长度,但因为字符串保存在一个数组中,而数组元素是从0位置开始的,例如一个字符数组a[]有5个字符,利用数组调用它们应为a[0]、a[1]、a[2]、a[3]、a[4],for循环中当i=strlen(s-1)时即为最后一个字符,所以将for循环中的i<=strlen(s)改为i<strlen(s)。
    (3)利用for循环从该字符数组最后一个字符开始依次向前输出字符,实现该字符串的逆序输出,字符数组的第一个元素应为s[0],因此最后输出的字符为s[0],所以将for循环中的i>0改为i>=0。
转载请注明原文地址:https://kaotiyun.com/show/xqID777K
0

相关试题推荐
最新回复(0)