-1
因此,當系統提示輸入p的值時,如果輸入的字符太少,它會將我帶到下一行而不是下一個提示。如果我輸入一個足夠大的輸入,它工作正常。此外,我重新運行該程序似乎不起作用。C程序跳過一行
#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
您的程序和輸出不匹配。這不是你在這個問題中描述的問題,也有比計劃更多的輸出。 – Wug 2014-09-24 02:49:59
這正是我得到的輸出結果。我拍了一張照片,但現在不能和我的小代表一起發表。 – 2014-09-24 03:05:15
然後您的發佈代碼已過期。您不打印您讀取的值,但您的提示之間有2個數字。當我逐字運行此代碼時,它會打印出不同的內容。 – Wug 2014-09-24 03:18:20