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