[英]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.