gpt4 book ai didi

C程序跳行

转载 作者:行者123 更新时间:2023-11-30 19:45:39 26 4
gpt4 key购买 nike

因此,当系统提示我输入 p 值时,如果我输入的字符太少,它会将我带到下一行,而不是下一个提示。如果我输入足够大的输入,它就可以正常工作。另外,我重新运行该程序似乎不起作用。

#include <stdio.h>  
#include <math.h>
#include <limits.h>
#include <ctype.h>
int main()
{
char pbuffer[10], qbuffer[10], kbuffer[10];
int p=0, q=0, k=0;
int r, i, Q, c, count, sum;
char a[3];
a[0]='y';

while(a[0]=='y' || a[0]=='Y')
{
printf("Enter a p value: \n");
fgets(pbuffer, sizeof(pbuffer), stdin);
while ((c = fgetc(stdin)) != '\n' && c != EOF);
p = strtol(pbuffer, (char **)NULL, 10);

printf("Enter a q value: \n");
fgets(qbuffer, sizeof(qbuffer), stdin);
while ((c = fgetc(stdin)) != '\n' && c != EOF);
q = strtol(qbuffer, (char **)NULL, 10);

printf("Enter a k value: \n");
fgets(kbuffer, sizeof(kbuffer), stdin);
while ((c = fgetc(stdin)) != '\n' && c != EOF);
k = strtol(kbuffer, (char **)NULL, 10);

while(p<q+1)
{
Q=p;
sum=0;
count=0;
while(Q>0)
{
count++;
r = Q%10;
sum = sum + pow(r,k);
Q = Q/10;
}

if ( p == sum && i>1 && count==k )
{
printf("%d\n",p);

}
p++;
a[0]='z';
}
while((a[0]!='y') && (a[0]='Y') && (a[0]!='n') && (a[0]!='N'))
{
printf("Would you like to run again? (y/n) ");
fgets(a, sizeof(a), stdin);
}
while ((c = fgetc(stdin)) != '\n' && c != EOF);
}
return 0;
}

输出:

 Enter a p value:
1
1
Enter a q value:
1000
0

最佳答案

首先,你的代码行有一个错误

while((a[0]!='y') && (a[0]='Y') && (a[0]!='n') && (a[0]!='N'))

您错过了“!”第二个条件下的角色 对于您的问题,使用此行的原因是什么:

while ((c = fgetc(stdin)) != '\n' && c != EOF);

如果我们使用控制台,它只需再等待一个“\n”因为上一张是fgets拿的

关于C程序跳行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007642/

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