【发布时间】:2014-11-15 17:47:07
【问题描述】:
我知道我的标题很奇怪。我不知道怎么用语言表达。
基本上,我有一个循环询问用户是否想再次运行该程序,“你想再次运行吗(y/n)。 如果我输入一个字符,它将循环一次。但如果我输入 5 个字符“你好”,它将迭代 5 次。
例如。 你想再跑一次吗? (是/否)
q
你想再次跑步吗? (是/否)
你好
你想再次跑步吗? (是/否)
你想再次跑步吗? (是/否)
你想再次跑步吗? (是/否)
你想再次跑步吗? (是/否)
你想再次跑步吗? (是/否)
这是我的代码:
char a='y';
while(a=='y' || a=='Y')
{
printf("Enter a p value: \n");
scanf("%d",&p);
printf("Enter a q value: \n");
scanf(" %d",&q);
printf("Enter a k value: \n");
scanf(" %d",&k);
for (i=p; i<q+1; i++)
{
Q=i;
sum=0;
count=0;
while(Q>0)
{
count++;
r = Q%10;
sum = sum + pow(r,k);
Q = Q/10;
}
if ( i == sum && i>1 && count==k )
{
printf("%d\n",i);
}
i++;
}
a='z';
while(a !='y' && a !='Y' && a!='n' && a!='N' )
{
printf("Would you like to run again? (y/n) \n");
scanf(" %c", &a);
}
【问题讨论】:
-
这可能是因为您要求一个字符。询问整行并检查它的允许值。并阅读您在代码中使用的函数的文档。询问时请使用最少的示例。
-
非常感谢。那行得通。我刚刚更改了 scanf(" %c", &a); to scanf("%s", &a);
-
这可能会更好,但它仍然不正确,因为您在
a的地址后面写。如果您不想关心缓冲区,getline()可能是您的选择。
标签: c input while-loop