繁体   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