读书人

这道题错哪里啊老是提示内部异常或全局

发布时间: 2012-03-24 14:00:46 作者: rapoo

这道题错哪里啊?老是提示内部错误或全局变量或主函数已存在文件中。
【习题6.110】系统给定外部字符数组变量s和数组长度n(不需要
自行定义)。main函数的功能是:把字符串s中所有小写字母转换
为大写字母,其他字符不变。例如,当s="68abcdEFGhijkLM86"
时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。
void main()
{
int i=0;
n==strlen(s);
while(i<n)
{
if(*(s+i)>='a' && *(s+i)<='z')
*(s+i)=*(s+i)-32 ;
i++ ;
}
}

还有。跟头文件#include<sudio.h>是没有关系的。变量是系统已经给定了的。不用自己定义的。
另外,*(s+i)也就是s[i].

为什么老是提示内部错误或全局变量或主函数已存在文件中。


[解决办法]
首先,这个是个笔试题,题目说变量系统已定义是假设它已定义的意思,并不是说这个变量确实是定义了,
所以不要直接把书上的代码直接拿来运行,肯定通不过的。变量S明显是没有定义的。

然后,*(s+i)就是s[i]的说法不完全对,*(s+i)是个指针(s+i)是这个指针的地址,不具体运算直接认定它就是s[i]的地址的说法是不对,可能内存溢出什么的,那地址就不是指向该数组值的地址了。

最后,请提高结贴率,偶犹豫了很久才决定打这么多字。

[解决办法]

C/C++ code
void main()  {    char s[] = "adasd";    int i=0;    int n=strlen(s);    while(i<n)    {        if(*(s+i)>='a' && *(s+i)<='z')            *(s+i)=*(s+i)-32 ;        i++ ;    }    printf("%s",s);    system("pause");}
[解决办法]
探讨

引用:

C/C++ code

#include <stdio.h>
#include <string.h>
char s[10] = "gpshq";
int n;
int main()
{

int i=0;
n = strlen(s);
while(i < n)
{
if(*(s+i)>='a' &&am……

读书人网 >C语言

热点推荐