【求助】关于getchar()的位置
初学C语言,弱弱地问个很二的问题,为什么我的getchar()必须放在函数前面(见程序一)而放在后面就出问题(见程序二)?程序一:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
void main()
{
char c;
int i,n;
float t,*a,x,p;
printf("******* 多项式求值程序 *******\n\n");
printf("请选择计算方法(要大写哦):\nA.课本公式(5) B.秦九韶算法\n");
c=getchar();
printf("\n请输入待计算多项式的次数n以及x的值:");
scanf("%d %f",&n,&x);
a=(float *)malloc(sizeof(float)*n);
printf("\n\n请输入待计算的多项式的每项系数a0,a1,...,an:\n");
for(i=0;i<=n;i++)
scanf("%f",&a[i]);
if(c==65)
{
t=1;p=a[0];
for(i=1;i<=n;i++)
{
t=x*t;
p=p+a[i]*t;
}
}
else
{
p=a[n];
for(i=1;i<=n;i++)
p=x*p+a[n-i];
}
printf("\np(%f)=%f\n\n",x,p);
free(a);
system("pause");
}
程序二:
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
void main()
{
char c;
int i,n;
float t,*a,x,p;
printf("******* 多项式求值程序 *******\n\n");
printf("请输入待计算多项式的次数n以及x的值:");
scanf("%d %f",&n,&x);
a=(float *)malloc(sizeof(float)*n);
printf("\n\n请输入待计算的多项式的每项系数a0,a1,...,an:\n");
for(i=0;i<=n;i++)
scanf("%f",&a[i]);
printf("\n\n请选择计算方法(要大写哦):\nA.课本公式(5) B.秦九韶算法\n");
c=getchar();
if(c==65)
{
t=1;p=a[0];
for(i=1;i<=n;i++)
{
t=x*t;
p=p+a[i]*t;
}
}
else
{
p=a[n];
for(i=1;i<=n;i++)
p=x*p+a[n-i];
}
printf("\np(%f)=%f\n\n",x,p);
free(a);
system("pause");
}