簡體   English   中英

printf 中的錯誤輸出

[英]Wrong output in printf

我是 C 的新手,並試圖盡我所能地學習。 我有這個問題,我解決了,邏輯工作得很好,但是只要輸入錯誤,它就會在屏幕上顯示消息,並且條件不正確。 因此,每當應該有無效輸入消息時,我也會得到 NE - 如果條件不成立,它將打印出來。

這是代碼:

#include <stdio.h> 
#include <stdlib.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if(a <= 0 || b <= 0) {
        printf("Invalid input");
    } else {
        if(a < b) {
            int tmp = a;
            a = b;
            b = tmp;
        }
    }
    a/=10;
    int c1,c2;
    while (a!=0 && b!=0){
        c1 = a%10;
        c2 = b%10;
        a /= 100;
        b /= 10;
    }
    if (c1 == c2)
        printf("PAREN\n");
    else
        printf ("NE\n");
    return 0;
}

因為沒有什么可以阻止它這樣做:

如果您只想終止程序,只要條件為真就return

if(a <= 0 || b <= 0) {
printf("Invalid input");
return 1;
 } 

替代方案:只需在else子句下添加其余代碼。

您可以按照其他答案中的建議添加return語句,或者在第一個else子句中包含有效輸入應該發生的所有事情(換句話說,只需移動第一個else子句的右括號,就在您的右括號之前main功能。)

首先,讓我們重新格式化代碼,以便更容易看到控制流:

int main()
{
    int a, b;
    scanf("%d %d", &a, &b);
    if(a <= 0 || b <= 0) {
        printf("Invalid input");
    } else {
        if(a < b) {
            int tmp = a;
            a = b;
            b = tmp;
        }
    }
    a/=10;
    int c1,c2;
    while (a!=0 && b!=0){
        c1 = a%10;
        c2 = b%10;
        a /= 100;
        b /= 10;
    }
    if (c1 == c2)
        printf("PAREN\n");
    else
        printf ("NE\n");
    return 0;
}

這里發生的事情是,當它打印“無效輸入”時,程序繼續運行。 從這里它可以打印“PAREN”或“NE”。

我懷疑您真正想要做的是在確定輸入無效后停止處理。

在您的代碼中執行此操作的最簡單方法是添加“return 0;” 緊接在“printf(“無效輸入”);”之后線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM