問題是我的代碼不執行 for 回圈。它只需要一個輸入并列印出來。
#include<stdio.h>
int main(){
int A[100], B[100], C[100], D[100];
int r[100];
for(int i = 0; i < 3; i )
{
scanf("(%d %d)x(%d-%d)", &A[i], &B[i], &C[i], &D[i]);
r[i] = (A[i] B[i])*(C[i]-D[i]);
}
for(int k = 0; k < 3; k )
{
printf("%d", r[k]);
}
return 0;
}
uj5u.com熱心網友回復:
假設您輸入的運算式由換行符分隔,當第二次呼叫scanf 時,第一個未讀字符是換行符而不是左括號。要使scanf跳過前導空白字符,請以空格開頭格式字串,即" (%d %d)x(%d-%d)".
https://pubs.opengroup.org/onlinepubs/000095399/functions/fscanf.html
uj5u.com熱心網友回復:
首先,這是使用 scanf 的錯誤方法。
使用以下代碼:-
#include<stdio.h>
int main(){
int A[100], B[100], C[100], D[100];
int r[100];
for(int i = 0; i < 3; i )
{
scanf("%d %d %d %d", &A[i], &B[i], &C[i], &D[i]);
r[i] = (A[i] B[i])*(C[i]-D[i]);
}
for(int k = 0; k < 3; k )
printf("%d", r[k]);
return 0;
}
uj5u.com熱心網友回復:
問題是您在讀取第二行輸入時沒有跳過掛起的換行符,因此換行符不匹配(并scanf()回傳0.
您應該始終測驗scanf()回傳值以確保輸入被有效轉換。
還要確保通過附加空格或換行符將每個結果列印為單獨的數字。
這是一個修改后的版本:
#include <stdio.h>
int main() {
int A[100], B[100], C[100], D[100];
int r[100];
int n = 0;
for (int i = 0; i < 3;) {
/* ignore pending spaces */
if (scanf(" (%d %d)x(%d-%d)", &A[i], &B[i], &C[i], &D[i]) == 4) {
r[i] = (A[i] B[i]) * (C[i] - D[i]);
n = i;
} else {
int c;
/* flush pending input line */
while ((c = getchar()) != EOF && c != '\n')
continue;
if (c == EOF)
break;
printf("Invalid input, try again:");
}
}
for (int k = 0; k < n; k ) {
printf("%d\n", r[k]);
}
return 0;
}
uj5u.com熱心網友回復:
我在行后添加 getchar 修復了它 r[i] = (A[i] B[i])*(C[i]-D[i]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/335270.html
標籤:C
上一篇:如果不是“停止時鐘周期”,則TM4C123上的LED閃爍失敗
下一篇:單鏈表中的選擇排序不使用交換
