问题: - 编写一个程序,由用户取五个数字,找到或不找到一个数字。 我的尝试: -
#include<stdio.h>
#include<conio.h>
void main ()
{
int a=2,b;char directory[5];int i;
printf("enter a number you want to find");
scanf("%d",&a);
for(i=0;i<5;i++)
{
scanf("%d",&directory[i]);
}
if(a=directory[i]);
printf("number is found");
else
printf("number not found");
getch();
}
问题描述: -
我已经给了int a = 2
并输入了5个值,其中包括2作为输入之一,但输出结果是未找到的数字..建议我需要处理的更改或部分。
谢谢!
编辑1: - 完成答案中提出的更改后代码如下所示 但我仍然没有得到正确的输出
#include<stdio.h>
#include<conio.h>
void main ()
{
int a=2,b;char directory[5];int i;
printf("enter a number you want to find");
scanf("%d",&a);
for(i=0;i<5;i++)
{
scanf("%d",&directory[i]);
if (a==directory[i])
{
printf("number is found");
}
else
printf("number not found);
}
}
getch();
}
答案 0 :(得分:2)
%d
期待int
但char directory[5]
为char
值。这应该被称为
int directory[5];
此外,您只查看i
的值,该值在for循环结束时先前在该行的数组中为5:
if(a=directory[i]);
你应该有一个for循环说:
for(i = 0; i < 5; i++)
{
if(a == directory[i])
{
printf("number is found");
}
else
{
printf("number not found");
}
}
关于我的if
,您应该注意的另外两件事是==
和结尾。使用单个=
是一个赋值,这意味着一个现在将等于directory[i]
的值并检查布尔值,如果a
为真(除了0之外的任何东西)或假(0)。将其写为==
就是要检查它们是否具有相同的值。
在if
结束时你有一个半冒号。这使得if
毫无意义。该块将在它结束时停止。
修改强>
在新的修改中,您仍然使用char
数组而不是int
char directory[5];
应该是:
int directory[5];
我认为这只是一个复制粘贴问题,但是你错过了开头{在你的其他地方。取出关闭}或添加另一个。还假设这个问题的复制粘贴问题,但你错过了“在行中的结束:
printf("number not found);
答案 1 :(得分:1)
char directory[5]
这需要是int
类型。同样,您将char *
作为参数传递给%d
,您的程序会显示未定义的行为。
这应该在for
循环 -
if(a==directory[i]); // out of loop i is out of bounds
printf("number is found");
else
printf("number not found");
答案 2 :(得分:0)
if(a=directory[i]);
如果陈述不以分号结尾!
你的意思是:
for(i=0;i<5;i++)
{
scanf("%d",&directory[i]);
if(a == directory[i])
{
printf("number is found");
}
else
{
printf("number not found");
}
}
getch();
答案 3 :(得分:0)
第一个错误,你必须将数组声明为int
int directory[5]
第二个错误是在if条件下你用“=”运算符赋值 你应该使用“==”运算符
if(directory[i]==a)
“=”是赋值运算符
if和else应该在for循环中
答案 4 :(得分:0)
在您的密码中 char目录[5] //您需要将其声明为整数,以将其与另一个整数进行比较 如果(α=目录[I]); //你不需要在这里加分号它没有任何意义 如果(α=目录[I]); //您需要使用==而不是=进行比较 最后,让它们在循环中。快乐编码
答案 5 :(得分:0)
您发布的程序版本似乎存在一些问题;我冒昧地在下面纠正它们:
#include <stdio.h>
#include <stdbool.h>
int main()
{
int a=2, b, i;
int directory[5];
int found=false;
printf("Enter a number you want to find: ");
scanf("%d",&a);
printf("Enter the numbers you want to check\n");
for(i = 0 ; i < 5 ; i++)
scanf("%d", &directory[i]);
for(i = 0 ; i < 5 ; ++i)
{
if(a == directory[i])
{
found = true;
break;
}
}
if (found)
printf("number is found\n");
else
printf("number not found\n");
}
最重要的是,原始代码永远不会循环输入值的数组,以查看它们是否与目标值匹配。另外,检查的“输入值”实际上不在数组中(使用的索引超出了数组的有效索引值的范围),并且“比较”被编码为赋值('='是用来代替'=='),所以检查的是数组结尾后字节中的值是零还是非零。在此版本的程序中,数组被定义为int
类型,而不是char
祝你好运。
答案 6 :(得分:0)
你没有初始化。这是逻辑错误
int directory[5]