gpt4 book ai didi

c - 需要帮助重组循环/让简单的平均代码正常工作。

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

第一次使用 C 语言,我被要求为我的系统类做一个简单的平均函数,而不使用 scanf(仅使用 getchar)。我最终编写了一个不必要的复杂循环,只是为了让我的代码进行编译,即使在编译+运行之后,它在接受键盘输入后似乎也没有做任何事情。

#include <stdio.h>
#include <stdlib.h>

//average program

//use getchar to get numbers separately instead of scanf and integers.
//Not sure why. Most likely to build character.

int main (int argc, const char * argv[])
{
char x,z;
float avg;
int tot,n,b;

printf("Input Integer values from 1 to 100. Separate each value by a space. For example: 23 100 99 1 76\n");

ret:

x=getchar();
while( x != '\n' );
{
if(x==isspace(x))
{ goto ret;}


opd:

z=getchar();
if ((z == isspace(z)))
{
b = x - '0';//subtracting 0 from any char digit returns integer value
tot +=b;
n++;
goto ret;
}

else if(z == '\n')
{
b = x - '0';
tot +=b;
n++;
goto end;
}

else
{
x = x*10;
x = x + z;
goto opd;
}
}

end:
avg=tot/n;

printf("Taking of the average of the values. The average is %1.2f\n",avg);

return avg;

}

最佳答案

  1. while(...); 中的分号会导致无限循环,相当于:while(...) continue;
  2. 您应该只使用一个循环,并且应该尝试只使用一次对 getchar() 的调用...多次 getchar() 调用太困惑了,而且您的代码试图按照编写的方式丢弃第一行。
  3. 一定要去掉 goto 语句,你的老师不会喜欢它们,而且它们完全没有必要。 (请仔细阅读中断继续。)
  4. 在直接调用 getchar() 的 C 解析器中,能够将字符推回输入流非常有用。请参阅 man 3 ungetc 或仅围绕 getchar() 编写一个简单的包装器。 在解析器循环结束时,您应该只需要一个推回字符。

关于c - 需要帮助重组循环/让简单的平均代码正常工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544172/

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