簡體   English   中英

C程序無法編譯,不確定為什么

[英]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動態分配數組。 您可以對此進行更多搜索。

ij未聲明。 宣告他們

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.

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