c语言 ,写了一个把小写字母转大写程序,结果挺萌的,哪部有问题?

和教材核对了一遍,没错啊

第1个回答  2013-12-27
while(c=str[i]!='\0')
改成
while((c=str[i])!='\0')

赋值运算是从右到左运行的

也就是说如果不加括号
c=str[i]!='\0'
就相当于
c=(str[i]!='\0')
也就是说
c是么1,要么是0
而ascii码值1 就是对应白底笑脸的,也就出现了你的结果
第2个回答  2013-12-27
while(c=str[i] !='\0')
这句有问题
你是想实现将str[i]赋值给c,然后判断c!='\0'
但是,逻辑运算先结合了,就是先判断str[i]!='\0',再将逻辑判断的结果赋值给c
结果你的c全部都等于1,直至字符串终结

应该加个括号
while((c=str[i])!='\0')
或者,直接这样写
while(c=str[i] )
第3个回答  2013-12-27
运算符优先级问题你少括号了
第4个回答  2013-12-27
c = str[i] != '\0' // 相当于 c = (str[i] != '\0');
优先级问题。本回答被提问者采纳
第5个回答  2013-12-27
把 while (c = str[i] != '\0') 改成 while ((c = str[i]) != 0)
运算符优先级问题
相似回答
大家正在搜