gpt4 book ai didi

c - scanf() 获取垃圾值,没有双重问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:02 26 4
gpt4 key购买 nike

我在处理这段小代码时遇到了问题。问题与数据输入有关。我无法在键入时获取数据。如果我输入以下值:

g1 = 3; q = 3 and term(termo) = 3
I get
g1 = 3, q = 0 and term(termo) = 2686724.

已经尝试在scanf之后使用getchar()和在数据输入例程之前和之后使用fflush(stadin),并且还在它们之间放置空格“%f(d)”。什么都不管用。我正在使用 DevC++ 和 CodeBlocks,两者都有同样的问题(可能是 gnu gcc?)。

我不知道还能做什么。代码是 scanf() 还是我的 PC 有问题?

这尝试是一个C代码。问题出在 termos_pg() 函数例程中。句子 printf("g1=%.f, q=%.f, termo=%d,\n",g1,q,termo);calcula_pg() 函数例程显示了我进入 termos_pg() 例程的内容。谁能帮帮我?

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
float ind,gn,g1,val,q;
int termo,gx=0,i;
main()
{
setlocale(LC_ALL,"Portuguese");

char X;
printf ("\nSe houver parâmetro desconhecido, tecle s ou S, caso nao, ENTER.\n");
X=getch();
fflush(stdin);

if(X=='s' || X=='S'){
es_pg();
return (0);}
else{
termos_pg();
return (0);
}
system("PAUSE");
return 0;
}

termos_pg()
{
printf("\nDigite o 1º termo da PG: ");
scanf("%f",&g1);

printf("Digite a razao da PG: ");
scanf("%f",&q);

printf("Digite a quantidade de termos: ");
scanf("%d",&termo);
calcula_pg(g1,q,termo);
}

calcula_pg(g1,q,termo)
{
printf("g1=%.f, q=%.f, termo=%d,\n",g1,q,termo);
printf("\n\tA sequência é: \n");
for(i=0;i<termo;i++)
if(++gx==termo)
printf("\ta%d= %20.f.\n",gx,(g1*powf(q,(termo-(termo-i)))));
else
printf("\ta%d= %20.f;\n",gx,(g1*powf(q,(termo-(termo-i)))));
system("PAUSE");
}

es_pg(){;}

最佳答案

您没有为 calcula_pg 的参数提供任何类型,这意味着编译器假定您传递的是 int 类型的变量,而不是 float

下面是一个演示效果的示例程序:

#include <stdio.h>

void ints(int x, int y, int z)
{
printf("ints: x == %.f, y == %.f, z == %d\n", x, y, z);
}

void floats(float x, float y, int z)
{
printf("floats: x == %.f, y == %.f, z == %d\n", x, y, z);
}

int main()
{
ints(3.14, 3.14, 5);
floats(3.14, 3.14, 5);
return 0;
}

这是输出:

ints: x == 0, y == 0, z == 3
floats: x == 3, y == 3, z == 5

关于c - scanf() 获取垃圾值,没有双重问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193449/

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