怎麼用C語言確定題目 整數,它加上100後是完全平方數,再加上168又是完全平方數,請問該數是多少

2022-03-08 07:48:20 字數 6243 閱讀 4678

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語言 用迴圈結構解以下題目

這種題目,我建議你還是自己解不要看參考書,磨刀不誤砍柴工,前期基礎悟好了,後面學起來會很快,可以先拿個筆自己畫畫,找出規律,一定要自己想出來 做出來,再看參考書,程式思維的真諦,我覺得在於分解和組合,看到複雜的題目不要急,分解了它,分成一塊塊,解決每一小塊,再找出塊於塊的聯絡,重組回一個整大塊,如果...