#include <stdio.h>
int bolucu(int n){
int temp;
temp=n;
int basamak=0;
while(temp != 0){
temp/=10;
basamak;
}
int digits = 0;
int m = n;
while (m) {
digits ;
m /= 10;
}
digits /= 2;
int tmp = 0, lower_half = 0;
while (digits--) {
tmp *= 10;
tmp = n % 10;
n /= 10;
}
while (tmp) {
lower_half *= 10;
lower_half = tmp % 10;
tmp /= 10;
}
if (basamak % 2==1){
n/=10;
}
int a;
int b;
a = n;
b=lower_half;
printf("%d %d\n",a,b);
int loopTemp;
for(int i=0;i<10;i ){
a=3*a 2;
b=2*b 3;
if(a>b){
temp=a;
a=b;
b=temp;
}
if(a==b){
printf("Congratulations you caught one!!!\n");
return 1;
break;
}
}
if(a!=b){
printf("10 tries were not enough!\n");
return 2;
}
}
int main()
{
int number;
printf("\nEnter a number with at least two digits: ");
scanf("%d",&number);
bolucu(number);
while(bolucu(number) != 1){
printf("\nEnter a new number: ");
scanf("%d",&number);
printf("%d",bolucu(number));
}
return 0;
}
例如: 這是終端螢屏。
如您所見,還有第二個。第一個是真的,但我不想要第二個。我怎樣才能擺脫第二個電話?(對于糟糕的代碼撰寫也很抱歉,我是新手)我在這里缺少什么?而且我不能使用 stdio 以外的任何庫。(比如 math.h)
uj5u.com熱心網友回復:
這樣做的原因是因為您bolucu()在while回圈內部和條件檢查中都呼叫了該函式。要解決此問題,請呼叫該函式并將其結果保存在變數中一次,然后在檢查和列印陳述句中使用該單個結果。你的主函式可以像這樣重寫:
int main()
{
int number;
printf("\nEnter a number with at least two digits: ");
scanf("%d", &number);
int result = bolucu(number);
while (result != 1)
{
printf("\nEnter a new number: ");
scanf("%d", &number);
result = bolucu(number);
printf("%d", result);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367987.html
標籤:C
上一篇:具有默認初始化的C結構定義?
