2017-06-23 23 views
1

我必須找出在滿足第一個標準和的區間[a,b]中有多少個3位數字最後一位數字=中間數字。對於如:121143等 下面是循環的爲同一C代碼找到滿足第一個和最後=中間標準總和的區間中的3位數字

for(int i=a;i<=b;i++) 
    { 
     first=a; 
     last=a%10; 
     temp=a/10; 
     middle=temp%10; 
     while(first>10) 
     { 
      first=first/10; 
     } 

     sum=first+last; 
     if(sum == middle) 
     { 
      count=count+1; 
     } 
    } 
    printf("%d",count); 

的代碼,但我沒有得到正確的答案。例如:在區間[100,130]中,輸出應該是2,而我本身就是0。

請幫忙。謝謝 。

+1

'=第一個; last = a%10; temp = a/10;':使用'i'而不是'a'。 – BLUEPIXY

+0

爲什麼不'first = temp/10;'(在'middle = temp%10;'之後)?代碼中'first'的值是多少?中間是什麼?什麼是最後的?你爲什麼不打印這些信息來告訴你哪裏出了問題?你有一個選擇。使用調試器遍歷代碼,或添加打印語句以顯示正在發生的事情。我傾向於選擇打印語句,但是無論哪種方式都有爭論。但是,您應該使用其中一種來了解發生了什麼。 –

+0

@BLUEPIXY:謝謝,那真是太愚蠢了。我的壞 – tron042

回答

0
for(int i=a;i<=b;i++) 
{ 
    first=i; 
    last=i%10; 
    temp=i/10; 
    middle=temp%10; 
    while(first>10) 
    { 
     first=first/10; 
    } 

    sum=first+last; 
    if(sum == middle) 
    { 
     count=count+1; 
    } 
} 
printf("%d",count); 
0

只需在您的循環中將i替換爲i即可。

for(int i=a;i<=b;i++) 
{ 
    first=i; 
    last=i%10; 
    temp=i/10; 
    middle=temp%10; 
    while(first>10) 
    { 
     first=first/10; 
    } 

    sum=first+last; 
    if(sum == middle) 
    { 
     cnt=cnt+1; 
    } 
} 
printf("%d",cnt); 

這會給你正確的結果:)

相關問題