-1
我知道我的標題很奇怪。我不知道怎麼說。如果我要輸入一個字符,它會循環一次,但如果我輸入一個字符,它會循環一次,但如果我再次輸入一個字符,我輸入5個字符 「你好」,它會遍歷5倍。循環迭代的次數與輸入中的字符數相同
前。 你想再次運行?(Y/N)
q
你想再次運行?(Y/N)
你好
您想再次運行嗎? (y/n)
您想再次運行嗎? (y/n)
您想再次運行嗎? (y/n)
您想再次運行嗎? (y/n)
您想再次運行嗎? (Y/N)
這是我的代碼:
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);
}
這可能是因爲你要求一個字符。詢問整條線並檢查允許的值。並閱讀您在代碼中使用的函數的文檔。詢問時請使用最少的示例。 – 2014-09-21 18:45:49
非常感謝。這工作。我剛換的scanf(「%C」,&a);到scanf函數(「%S」,&a); – 2014-09-21 18:51:17
這可能更好地工作,但你寫了''的地址後面它仍然不是正確的。如果你不想關心緩衝區,'getline()'可能是您的選擇。 – 2014-09-21 18:55:20