为什么我的C语言程序没有输出?哪错了?

如题所述

    首先指出你写的一处错误,fun函数没有返回值。你要么定义为void,既然定义成int,就要返回数据。

    代码可能需要优化下....

    输入定义成字符串,不必用char数组,然后如果用while就用while,用for就用for,干嘛都一起用,大致可以这么写(自己定义下变量,另外没必要把变量定义到和main fun一个级别,这样不利于释放空间,就用局部变量,然后fun可以用传参的方式)

    int i=0;

    scanf('%s',&str)

    while(str[i]!=条件){

    switch()或者if 判断符合哪种统计方式

    i++;

    }

追问

加了return 0也不行啊

追答

你按照我给你的推荐只写一个while吗?你现在的代码不是死循环吗?当i=0的时候while条件一直非换行所以永远跳不出去!你把while判断删掉吧,基本就能得到最终答案

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-10-24

while ( a[i]!='\n' )

改成

while ( a[i]!=0 )

追问

&为什么啊?

追答

因为scanf输入字符串是默认以换行作为结束的,并且换行符并不作为最后一个有效字符返回

追问

换行没有被输入到数组中吗?

追答

没有,你可以试试: printf("[%s]\n",a);
假设a的内容是"123",则会得到输出: [123]
假设a的内容是"123\n",则会得到输出:
[123
]

本回答被提问者采纳
第2个回答  2019-10-24
对字符串应该使用字符串结束标志进行检测,即测试fun函数while循环里的a[ⅰ]!=0判断到了字符串末尾,回车键在输入时不会输入到字符数组里面。
第3个回答  2019-10-24
仔细看了你的题目要求和你编写C语言程序,单从程序看看不出有问题,我没有C语言编程工具,无法调试,只能给你一些建议,第一个建议使用编程工具通过的断点跟踪调试,找出问题。第二个建议,增加输出语句,打印中间变量,静态分析。本回答被网友采纳
第4个回答  2019-10-24
把while(a[i]!='\n')
改为if(a[i]!='\n')
事实上这句语句不写也行
相似回答