C 语言中 while 块中的 if 函数

问题描述 投票:0回答:1

有人可以帮忙, 我尝试编写一个程序来读取字符,并输出 1 到较低的字符,2 到较高的字符,如果不是字母则输出 -1。程序应该继续工作,直到输入为零

我不明白为什么下面的代码; 在“if”块的所有情况下保持 print -1;

我尝试两种方法:

try 1:
#include<stdio.h>

int main(){
    char entrada = 'x';
    
    while (entrada != 48){
        
        scanf("%c", &entrada);
            
        if(entrada > 96 && entrada < 123){
            printf("%d\n", 1);
            
        } else if (entrada > 64 && entrada < 91) {
            printf("%d\n", 2);
            
        } else {
            printf("%d\n", -1);
        }
      
    }
    return 0;
}


try 2:
#include<stdio.h>

int main(){
    char entrada = 'x';
    int teste;
    
    while (entrada != 48){
        
        scanf("%c", &entrada);
            
        if(entrada > 96 && entrada <123){
            printf("%d\n", 1);
            continue;
        } else {
            if (entrada > 64 && entrada < 91) {
                printf("%d\n", 2);
                continue;
            } else if(entrada <= 64 || (entrada >= 91 && entrada <= 96) 
            || entrada >= 123 ) {
                printf("%d\n", -1);
                continue;
            }
        }
        
    }
    return 0;
} `

c if-statement while-loop
1个回答
0
投票

当您的程序(其中任何一个)执行

scanf("%c", &entrada);
时,
scanf
会读取单个字符。

当您键入“a”并按 EnterReturn 时,两个字符将发送到您的程序:“a”和换行符。

当您的程序读取“a”时,它会打印“1”。

当你的程序读取换行符时,它会打印“-1”。

所以,只要你输入一个字符并按 EnterReturn,你的程序就会打印两个数字:一个代表第一个字符,一个代表换行符。

© www.soinside.com 2019 - 2024. All rights reserved.