我在使用这段小代码时遇到了麻烦。问题与数据输入有关。输入数据时我无法获取数据。如果我输入以下值:
g1 = 3; q = 3且term(termo)= 3
我得到了 g1 = 3,q = 0,term(termo)= 2686724。
在数据输入例程之前和之后,getchar()
和scanf,
之后已经尝试使用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(){;}
答案 0 :(得分:2)
您没有为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
答案 1 :(得分:0)
在scanf
之前的每次printf调用之后添加fflush(stdout)