[英]C Program won't Compile, unsure why
為我的C類入門做功課。 “編寫一個C程序,其鍵盤輸入是一個n個元素的數組(可變長度數組)a1;:::; an和一個值x。假定所有值都是整數。如果ai + aj = x,對於某些i̸= j,否則為false。”
但是我的編譯器在第一個for循環中一直報告問題。 我敢肯定這很簡單/愚蠢,有人請指出嗎? 錯誤:“每個未聲明的標識符僅針對其出現的每個功能報告一次。”
我的if(數字[i] +數字[j] = x){行也有錯誤。 錯誤:需要1的值作為賦值的左操作數。
#include <stdio.h>
#include <stdbool.h>
int main (void) {
//Local Declarations
int size;
int number [size];
int x;
bool equality;
//Statements
printf("Enter the size of the array");
scanf("%f", &size);
for (i = 0; i < size; i++) scanf("%f", &number[i]);
printf("Input x.");
scanf("%f", &x);
equality = false;
for (i = 0; i < size && equality = false; i++) {
for (j = i+1; j < size && equality = false; j++) {
if (number [i] + number [j] = x) {
equality = true;
}
}
}
if (equality = true){
printf("True.");
}
else {
printf("No distinct pair.");
}
return ;
} //main
由於這是您的作業,因此我不會為您准備完整的代碼。 以下是您的代碼中有誤的要點-
1)定義i和j。 int i,j;
將變量聲明為int時,請勿在scanf中使用%f。 在各處使用%d表示大小,數量等。
scanf("%d", &size);
2)是在@Ali Baig發布的if條件(==和not =)中的賦值運算符。 if ( (number [i] + number [j]) == x)
和if (equality == true)
3)為number數組int number array[100]
分配一個靜態大小或您認為足夠的某個大小。 如果您不想使用靜態數組,則可以使用malloc動態分配數組。 您可以對此進行更多搜索。
i
和j
未聲明。 宣告他們
int i, j;
除此之外,您的程序的行為未定義,因為%f
期望參數為float
類型,而number[i]
的類型為int
。 將%f
更改為%d
。
scanf("%d", &number[i]);
與scanf("%f", &x);
, %f
期望使用float
類型的參數,但是您正在向其傳遞int
tupe參數。 更改為
scanf("%d", &x);
我的if
(number [i] + number [j] = x)
{行也有錯誤。Error: 1value required as left operand of assignment
}的Error: 1value required as left operand of assignment
。
正如其他人指出的那樣; 賦值運算符=
與相等運算符==
。 要檢查相等條件,您必須使用==
而不是=
。 您收到錯誤的原因
line. Error: 1value required as left operand of assignment.
在賦值運算符的左側總是需要一個l值,而算術運算會導致r值,因此=
的左側在C中是不可能的。
也嘗試一下。
if ( (number [i] + number [j]) == x)
=是賦值運算符,而==用於比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.