不知道怎么陷入死循环了 c语言。

[复制链接]
查看11 | 回复3 | 2011-7-24 15:36:30 | 显示全部楼层 |阅读模式
我知道这本身是个不符合要求的程序,我单步调试时发现i没有自加,不知道为什么?还有最后的printf里面如果改成printf("%s\n",s[j]);的话会出现内存错误的提示。
#include
void main()
{
        char s[100]={"our teacher teach C language!"};
       
        int i,j;
        for(i=j=0;s!='\0';i++)
        {
       
                if(s!=' ')
                {
                        s[j]=s;
                        j++;
                }
       
                s[j]=s;
        }
                printf("%s\n",s);
}

回复

使用道具 举报

千问 | 2011-7-24 15:36:30 | 显示全部楼层
因为if后面那s[j]=s;当s[j]=s;j++;s[j]=s;(这里j=i+1了)也就是s[i+1]=s,那么下一个s已经等于s[i-1]的值了,循环到最后,'\0'已经被改为'!'了。所以循环找不到'\0',所以死循环了。...
回复

使用道具 举报

千问 | 2011-7-24 15:36:30 | 显示全部楼层
你的输出语句不应该只是一个s呀!printf(“%s\n”)这没有错可输出的是数组而不是单纯的一个s;你修改一下像是输出个s[3]了都行。...
回复

使用道具 举报

千问 | 2011-7-24 15:36:30 | 显示全部楼层
那要看你输入的是什么,还有具体问题具体分析。 比如说有的时候让你输入除数,你输入了0。0是不能做除数的,而你的程序中又没有列出当用户输入0时,程序应该干什么,是应该报错呢,还是当做1处理呢。计算机不知道该怎么做,他只知道0不能做除数,那么结果就不能被计算出来,所以程序就只能等在哪个地方,也就是死循环了。
类似的,比如你让用户输入一个数字,你...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行