我正在尝试编写一个不使用'pow'函数而计算X ^ Y(X到Y的幂)的C程序。当我输入数字时,该程序运行良好,但是当用户输入非数字字符时,代码无法停止时出现了问题。给出消息“您输入的字符不是数字。请重试。您输入的字符不是数字。请重试。值为1。”,它将再次运行程序。有人可以帮忙吗?我要疯了,想找出答案。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x, y, i,n=1,val;
printf("Please enter a number: \n");
scanf("%d", &x);
if (x!=1)
printf("The character you have entered is not a number.Please try again.");
else
printf("What power is the number raised to?\n");
scanf("%d", &y);
if (y!=1)
printf("The character you have entered is not a number.Please try again.");
else
for(i=1;i<=y;i++)
{
val=x;
n=n*val;
}
printf("The value is %d.\n", n);
return 0;
}
答案 0 :(得分:1)
当您的程序检测到无效输入时,它会打印一条消息,但否则就继续继续,就好像读取了有效输入一样。相反,它需要执行以下操作之一:
其消息表明该程序将提供输入新输入的内容,但实际上并没有遵循。而且,如果是第一个提示的输入无效,那么当程序打印第二个提示时,该输入仍在等待读取,而第二个提示仍然是 still 无效,程序会继续运行再次打印最终n
的初始值1,而无需计算任何内容。
答案 1 :(得分:0)
您需要检查scanf成功读取了多少项:
int numItemsRead = 0;
printf("What power is the number raised to?\n");
numItemsRead = scanf("%d", &y);
if (numItemsRead!=1)
printf("The character you have entered is not a number.Please try again.");
} else {
'''
}
答案 2 :(得分:0)
int main()
{
int x, y, i,n=1,val;
printf("Please enter a number: \n");
scanf("%d", &x);
if (x!=1)
printf("The character you have entered is not a number.Please try again.");
return 0;
else
printf("What power is the number raised to?\n");
scanf("%d", &y);
即使您输入了无效的字符程序,即使您这样做,也可能会结束。