gpt4 book ai didi

c - 在 C 的条件语句中使用数组元素时出错

转载 作者:行者123 更新时间:2023-11-30 15:06:44 24 4
gpt4 key购买 nike

我已经完成了 C 语言的学习,并遇到了这种我无法解释的不一致情况。我到处搜索并审查了所有数据类型定义和关系语法,但它超出了我的范围。

在《C 如何编程》一书中,有一个问题是制作一个二进制到十进制转换器,其中输入必须是 5 位数字。我开发了以下代码来接收一个数字,并通过除法和求余运算,将其拆分为单独的数字,并将每个数字分配给数组中的一个元素。当我尝试通过检查每个数组元素是 1 还是 0 来验证输入的数字确实是二进制时,问题就出现了。

这是代码:

#include <stdio.h>

int power (int x, int y); //prototype

int main(void)
{
int temp, bin[5], test;
int n=4, num=0;
//get input
printf("%s","Enter a 5-digit binary number: ");
scanf("%d", &temp);

//initialize array
while(n>=0){
bin[n]=temp/power(10,n);
temp %= power(10,n);
n--; }

//verify binary input
for (test=4; test>=0; test--){
if ((bin[n]!=0)&&(bin[n]!=1)){
printf("Error. Number entered is not binary.\n");
return 0; }

//convert to decimal
while(n<=4){
num+=bin[n]*power(2,n);
n++; }

printf("\n%s%d\n","The decimal equivalent of the number you entered is ",num);
return 0;
}

//function definition
int power(int x, int y)
{
int n, temp=x;
if(y==0) return 1;
for(n=1; n<y; n++){
temp*=x; }
return temp;
}

有人可以向我解释一下为什么无论输入什么(无论是:00000 还是 12345),我总是收到错误消息?其他一切似乎都工作正常。感谢您的帮助。

更新:如果if语句移至while循环之前。这应该仍然有效吗?

更新2:没关系,我注意到了我的错误。根据 sps 和 Kunal Tyagi 提供的解决方案,将 if 语句移动到 while 重复之前确实有效。

最佳答案

在此之后

    while(n>=0){
bin[n]=temp/power(10,n);
temp %= power(10,n);
n--; }

n 设置为 -1,因此当您尝试转换为十进制时,语句 bin[n] 实际上是 bin [-1] 因此它会返回错误。

关于c - 在 C 的条件语句中使用数组元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com