1樓:匿名使用者
你給出的答案明顯就有漏的,用你的程式求解,得不到那個「 -99」,但是事實上它也是一個答案,你是用一個個列舉的方法來求的,而列舉的範圍是你定的。如果你把i的初始值定為小於-99的整數,那麼你的程式也可以得到這個答案。
但是在未求解前你是不知道的,也就是說,你不分析就編寫出這樣的程式很有可能會有疏漏。所以編寫前一定要分析嚴密一點,保證不會有疏漏。
而且從另一方面說你給出那麼多數,也是浪費計算機資源。如果你認真看一下我的演算法,應該會理解我的是沒有疏漏的。而且經過分析後,明顯可以減少計算機的工作量,雖然在這題裡這麼點計算量不算什麼。
我的程式只計算了13種可能的情況,並且計算的都是簡單的運算,你的程式段還要用到開方的函式,計算100000種可能。。。。。
另外,我的程式是在vc6.0環境下編譯連線通過。看你的答案中的**,應該是其他編譯器,如果我的**在你的編譯器中有問題,你可以只取其中的核心部分,稍作修改即可。
——————————————————————
//該整數可能為:1581、261、21、-99
/*問題:一整數,它加100後是完全平方數,再加168還是完全平方數,求該整數
解題思路:設該數為x,它加100後是a,再加168為b。
則因為a是完全平方數,
所以a為正數,且a=y*y,y為正整數或0。
同理,b為正數,b=z*z,z為正整數。
因為b=a+168>a,所以,我們可設z=y+n,n為正整數,n>0。
由b=a+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2。
又y為正整數,所以84/n-n/2≥0,則得出n≤13
所以,程式設計時可用的條件有:
0int main()
}return 0;
} //此程式還可擴充套件為更一般化的演算法
2樓:匿名使用者
168-100=(18+16)*(18-16)
16^2-100=156
c語言程式設計實現:一個整數,它加上100後是完全平方數,再加168又是完全平方數,求該數。
3樓:變美的果團
**:#include
#include
#include
#define maxsize 100000int main()
long int i,x,y;
for(i = -100;i <= maxsize;++i)x = sqrt(i+100);
y = sqrt(i+268);//再加上168,即i+100+168
if((x*x == i + 100)&&(y*y == i+268))
printf("%ld\t",i);
return 0;
4樓:光頭數理化課堂
一個正整數,分別加上100和168,得到的2個數都是完全平方數,求這個正整數。
5樓:風蕭寒
解題思路:設該數為x,它加100後是a,再加168為b。
則因為a是完全平方數,
所以a為正數,且a=y*y,y為正整數或0。
同理,b為正數,b=z*z,z為正整數。
因為b=a+168>a,所以,我們可設z=y+n,n為正整數,n>0。
由b=a+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2。
又y為正整數,所以84/n-n/2≥0,則得出n≤13所以,程式設計時可用的條件有:
0int main()
}return 0;
} //此程式還可擴充套件為更一般化的演算法
6樓:2丶leonard丨
sqt出來的數自動是double的,要強制轉換為int的,我看了他們的回答應該都執行不出來吧
#include
#include
void main()}}
7樓:匿名使用者
這個問題其實關鍵就在於你要判斷加上100或是再加168後開方完他是個整數,只要是個整數就沒問題,所以關鍵就是判斷一個數是不是整數。
思路大概這樣:用該數減去對該數取整(可直接用強制型別轉換),差和一個極小數(比如e的-6次方)進行比較,如果小於這個極小數我們就近似地認為這個數是一個整數。
思路給你寫了,懂的話自己把程式寫寫,自己寫才有印象
題目2:一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
8樓:達興老師
解題過程如下:
#include
#include
void main()
int i=1;
int n,m;
for (i=1;i<100000;i++)
m=sqrt(100+i);
n=sqrt(268+i);
if(m*m==i+100)
if(n*n==i+268)
printf("%ld ",i);
}}1581
性質:c程式中函式的數目實際上是不限的,如果說有什麼限制的話,那就是,一個c程式中必須至少有一個函式,而且其中必須有一個並且僅有一個以main為名的函式,這個函式稱為主函式,整個程式從這個主函式開始執行。
c語言程式鼓勵和提倡人們把一個大問題劃分成一個個子問題,對應於解決一個子問題編制一個函式,因此,c語言程式一般是由大量的小函式而不是由少量大函式構成的,即所謂「小函式構成大程式」。這樣的好處是讓各部分相互充分獨立,並且任務單一。因而這些充分獨立的小模組也可以作為一種固定規格的小「構件」, 用來構成新的大程式。
比較特別的是,位元右移(>>)運算子可以是算術(左端補最高有效位)或是邏輯(左端補 0)位移。例如,將 11100011 右移 3 位元,算術右移後成為 11111100,邏輯右移則為 00011100。因算術位元右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術位元右移。
運算子的優先順序從高到低大致是:單目運算子、算術運算子、關係運算子、邏輯運算子、條件運算子、賦值運算子(=)和逗號運算子。
9樓:侃史小吏
寫程式一定要仔細,不得馬虎。第三個for迴圈應該是for(k=13; k<100 ;k++)不是for(k=13; j<100 ;k++)。照你那麼些,第三個for迴圈是一個死迴圈,所以沒有執行結果。
改正如下(輸出156):
#include
void main()
10樓:匿名使用者
你給出的答案明顯就有漏的,用你的程式求解,得不到那個「 -99」,但是事實上它也是一個答案,你是用一個個列舉的方法來求的,而列舉的範圍是你定的。如果你把i的初始值定為小於-99的整數,那麼你的程式也可以得到這個答案。
但是在未求解前你是不知道的,也就是說,你不分析就編寫出這樣的程式很有可能會有疏漏。所以編寫前一定要分析嚴密一點,保證不會有疏漏。
而且從另一方面說你給出那麼多數,也是浪費計算機資源。如果你認真看一下我的演算法,應該會理解我的是沒有疏漏的。而且經過分析後,明顯可以減少計算機的工作量,雖然在這題裡這麼點計算量不算什麼。
我的程式只計算了13種可能的情況,並且計算的都是簡單的運算,你的程式段還要用到開方的函式,計算100000種可能。。。。。
另外,我的程式是在vc6.0環境下編譯連線通過。看你的答案中的**,應該是其他編譯器,如果我的**在你的編譯器中有問題,你可以只取其中的核心部分,稍作修改即可。
——————————————————————
//該整數可能為:1581、261、21、-99
/*問題:一整數,它加100後是完全平方數,再加168還是完全平方數,求該整數
解題思路:設該數為x,它加100後是a,再加168為b。
則因為a是完全平方數,
所以a為正數,且a=y*y,y為正整數或0。
同理,b為正數,b=z*z,z為正整數。
因為b=a+168>a,所以,我們可設z=y+n,n為正整數,n>0。
由b=a+168,有:(y+n)(y+n)=y*y+168,即:y=84/n-n/2。
又y為正整數,所以84/n-n/2≥0,則得出n≤13
所以,程式設計時可用的條件有:
0int main()
}return 0;
} //此程式還可擴充套件為更一般化的演算法
11樓:手機使用者
設這個整數為x
x+100=a^ (1)
x+168=b^ (2)
(2)_(1)得
68=b^_a^=(b+a)(b-a)
68=1*68=2*34=4*17
因b+a應該大於b-a
所以得到下列三個方程組
b+a=68 b+a=34 b+a=17
b-a=1 b-a=2 b-a=4
解以上方程組,1和3方程組中,a和b均有小數,不符和題意應舍取。2方程組得解a=16 b=18
把a=16 b=18代入 方程(1)或(2)得x=156
12樓:匿名使用者
#include
#include
int main()}}
return 0;
}-99
21261
1581
13樓:庚午子李
最後的for迴圈錯了,j該為k
#include
void main()}
題目:一個整數,它加上 100 後是一個完全平方數,再加上 168 又是一個完全平方數,請問該數是多少?
14樓:買昭懿
21+100=11²
21+100+168=17²
該數是21
15樓:雲南新華電腦學校
public class prog13
}system.out.println(" 所求的數是: "+n);
}// 判斷完全平方數
private static boolean iscompsqrt(int n)
}return iscomp;}}
設計c語言程式一個整數,它加上100是一個完全平方數,再加上168又是一個完全平方數,請計算這個數
16樓:
#include "stdio.h"
int main(void){
int x,i;
for(x=121;;x++){
for(i=10;i*i
17樓:
#include
#include
int main()
return 0;}
c++一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
18樓:波多貝羅的巫師
#include "math.h"
#include "stdio.h"
#include "conio.h"
main()
system("pause");//暫停
return 0;}
一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是
19樓:東風冷雪
#include
#include "math.h"
int main()
return 0;}
20樓:西域牛仔王
設這個數是 n,
n+100 = a^2,
a^2+168=b^2,
所以 (b+a)(b-a)=168=84*2 = 42*4 = 28*6 = 14*12,
由 b+a=84,b-a=2 解得 a=(84-2)/2=41,所以 n=41^2-100 = 1581,
由 b+a=42,b-a=4 解得 a=(42-4)/2=19,所以 n=19^2-100=261,
由 b+a=28,b-a=6 解得 a=(28-6)/2=11,所以 n=11^2-100 = 21 ,
由 b+a=14,b-a=12 解得 a=(14-12)/2=1,所以 n=1^2-100 = -99 ,
所以,所求的整數是 -99、21、261、1581 。
C語言題目輸入整數n(設1000 n 9999),將n按十進位制位分解為各乘式的累加和
你的程式我改了下,沒什麼大的問題,你自己看看 include include int main printf n return 0 ps 這個題目要求輸入的是一個四位數,所以可以簡單的使用窮舉法,一位一位的列印就可以了。我還是建議樓主使用下面的這種辦法,可以輸出多位的。include include...
C語言程式設計迴圈結構的題目,C語言程式設計 要求用迴圈結構程式設計
include void main 計算x有幾位存放在n中 xx x k 1 for i 0 i include void xs int a int main void xs int a for j 0 j 這個看情況了,其實不用陣列也是能寫出來的,可以用除10的方法得到數字的個位數。例如12345...
C語言 用迴圈結構解以下題目
這種題目,我建議你還是自己解不要看參考書,磨刀不誤砍柴工,前期基礎悟好了,後面學起來會很快,可以先拿個筆自己畫畫,找出規律,一定要自己想出來 做出來,再看參考書,程式思維的真諦,我覺得在於分解和組合,看到複雜的題目不要急,分解了它,分成一塊塊,解決每一小塊,再找出塊於塊的聯絡,重組回一個整大塊,如果...