while("65"<=(a=getchar())&&(a=getchar())<="90")为什么不对
时间: 2024-04-22 21:24:39 浏览: 196
这是因为在C语言中,字符是按照ASCII码进行比较的。在ASCII码中,大写字母的范围是65到90。所以,你的代码逻辑是如果输入的字符在这个范围内,则循环会继续执行。但是,你在判断条件中使用了两次`getchar()`函数,这样会导致每次循环读取两个字符。因此,你需要将代码修改为以下形式才能正确比较单个字符的ASCII码:
```c
while ((a = getchar()) >= 'A' && a <= 'Z') {
// 在这里执行循环体的操作
}
```
这样,每次循环只会读取一个字符,并且判断该字符的ASCII码是否在大写字母的范围内。
相关问题
while('A'<=(a=getchar()!="/n")&&a<='Z')为什么不对
你的代码中有一个小错误。在判断条件中,你使用了`getchar()`函数读取字符,并将其赋值给变量`a`。然后,你想通过比较`a`与大写字母的ASCII码来判断是否继续循环。
然而,在C语言中,条件判断运算符`!=`的优先级高于逻辑与运算符`&&`,所以你需要使用括号来确保逻辑的正确性。此外,换行符的ASCII码是`\n`,而不是`"/n"`。
正确的代码应该是:
```c
while (('A' <= (a = getchar()) && a <= 'Z') && a != '\n') {
// 在这里执行循环体的操作
}
```
在这个条件判断中,首先使用`getchar()`函数读取一个字符,并将其赋值给变量`a`。然后,判断该字符是否在大写字母的范围内,并且不是换行符。如果满足条件,循环将继续执行。
注意,在条件判断中,先判断字符的范围是否在大写字母范围内,再判断字符是否为换行符,这样可以避免错误的输入情况。
#include <stdio.h> main() { char c; while((c=getchar())!=’$’) { if(‘A’<=c&&c<=‘Z’) putchar(c); else if(‘a’<=c&&c<=‘z’) putchar(c-32); } } 当输入为ab*AB%cd#CD$时,运行结果为?
运行结果为:ABCD。
这是一个简单的C语言程序,用于从标准输入中读取字符并将其转换为大写字母。程序在遇到字符 '$' 之前不断读取输入字符,如果字符是大写字母,则直接输出;如果是小写字母,则将其转换为大写字母后再输出。在输入ab*AB%cd#CD$后,程序将会输出ABCD,因为只有字母字符才会被输出。
阅读全文