非常感謝您的耐心指教!請高手幫忙分析一下這個C 程式

2022-12-09 17:05:15 字數 6190 閱讀 5490

1樓:

2.quotient=(unsigned int)floor(x/i);這個語句沒問題吧,為什麼執行後沒有小數位了?

floor返回不大與x/i的最大整數然後強制轉換成無符號整型數賦給quotient

1.zeroflag的作用是什麼?

zeroflag和beginflag是兩個自己設定的標誌位,當滿足這兩個條件時候執行下面**,如:if((zeroflag==1)&&(beginflag==1)&&(i>1000)&&remainder>0)。if((zeroflag==1)&&(beginflag==1)&&(i>1000)&&remainder>0)

這段就包含對標誌位進行檢查。

3.if(remainder!=0)

beginflag=1;

remainder=quotient%10; 錢模10以後如果不等於0的話標誌位設定1,代表需要進行後面程式,如果模10以後等於0就沒有進行後續程式的需要了。

3.if(remainder!=0)

beginflag=1;

if((zeroflag==1)&&(beginflag==1)&&(i>1000)&&remainder>0)

cout<<"零";

這條語句的作用是什麼?

這是一段判斷是不是讀零的**,比如我們把1001讀成1千零元。

if(remainder>0)

zeroflag=0;

else if(beginflag==1)

zeroflag=1;

它的作用又是什麼?

這段是用來設定標誌為,當remainder>0讀零標誌位=0就是不讀零的意思。else的情況就是當remainder==0的情況下是要讀零的。

請教:c++程式問題!請高手幫忙,非常感謝!

2樓:匿名使用者

建議看一下 數值分析

牛頓迭代法(newton's method)又稱為牛頓-拉夫遜方法(newton-raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函式f(x)的泰勒級數的前面幾項來尋找方程f(x) = 0的根。

牛頓迭代法是求方程根的重要方法之一,其最大優點是在方程f(x) = 0的單根附近具有平方收斂,而且該法還可以用來求方程的重根、復根。另外該方法廣泛用於計算機程式設計中。

設r是f(x) = 0的根,選取x0作為r初始近似值,過點(x0,f(x0))做曲線y = f(x)的切線l,l的方程為y = f(x0)+f'(x0)(x-x0),求出l與x軸交點的橫座標 x1 = x0-f(x0)/f'(x0),稱x1為r的一次近似值。過點(x1,f(x1))做曲線y = f(x)的切線,並求該切線與x軸交點的橫座標 x2 = x1-f(x1)/f'(x1),稱x2為r的二次近似值。重複以上過程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),稱為r的n+1次近似值,上式稱為牛頓迭代公式。

步驟:1 準備 :選定初始值x0 ,計算f0=f(x0),f'0=f'(x0)

2 迭代: 按公式 x1=x0-f0/f'0 迭代一次得到新的近似值x1,把x0替換成x1

再計算f1=f(x1) f'1=f'(x1)

3 控制:如果x1滿足|x1-x0|小於某一個誤差則終止迭代,否則轉4

4 修改:如果迭代次數達到預先設定次數n,或者此時f'1=0.則方法失敗,否則以(x1,f1,f'1)代替(x0,f0,f'0)轉2繼續迭代。

那段**就是實現上述步驟,不過沒有判斷f'1=0而已。

c++程式高手請幫忙分析一下

3樓:任恆崔釵

明天我幫你註釋吧,今天要熄燈了,我睡覺了,加q

529462570我可以指導你!

c++程式,請幫忙分析一下啊 ?!

4樓:匿名使用者

#include

void main()

while(b<15); //b<15執行迴圈cout<<"ok"<

1214

16ok*/

5樓:cfv呆呆獸

第一個程式是找出9到6之間不能被2整除或不能被3整除的數,所以輸出是98

7第二個程式是找出12到16之間的偶數,所以輸出是1214

16ok

6樓:匿名使用者

整型 a a的植是10

執行a(while(--a))

並且每次執行完後a自減1

if(a==5)如果 a=5,那麼跳出迴圈

if(a%2==&&a%3==0)cotinue 如果a除以2和除以3的餘數都等於0,那麼

cout<

整型 b b的植是10

do 無論如何執行一次一下**

b自己增加1,既b的直是11

cout<<++b<

if(b==15) break; 如果b的直上15,就退出這迴圈

while(b<15); 如果b的直小於15,

cout<<"ok"<

還有int a(10); 是1種c語言的方法,最好別這麼寫,應該寫成 int a=10

7樓:馬雲飛

第一道題 7

因為是--a,所以是以9只代入最先,if(a%2==&&a%3==0) continue

者排除 8 6 ,5時break

第二道題 12 13 14 15 16先是++b,輸出++b,然後判斷b,若b == 15,break,因為break是在輸出之後,所以進行5次,

請c++高手幫忙分析程式執行出現這樣結果的原因: 謝謝!

8樓:匿名使用者

輸入 的應該是 k 後面跟了個 換行符 在緩衝區裡面是有這2個東東的

在c++中,下面的結果正確不?如果不正確,為什麼?請高手幫忙分析一下,謝謝!

9樓:維多

(1)完全正確。sizeof操作符返回一個變數、物件或者型別所佔的記憶體位元組數。ss在這裡是一個字串指標,指標變數在記憶體中佔四個位元組,因此輸出4;而*ss表示的是ss變數所指向的字元,即字串首字元'0',因此在記憶體中佔一個位元組,輸出1;

(2)部分錯誤。其中變數ss表示陣列,佔用的記憶體大小是15個位元組(字串長度加結尾符'\0'),因此sizeof應該輸出15;而*ss跟(1)一樣,是對的!

(3)部分錯誤。這裡的ss是一個包含100個位元組的陣列,因此sizeof輸出100是對的;但是strlen表示字串長度(不包括結尾字元'\0'),因此應該strlen(ss)輸出14;

(4)錯誤。這裡的錯誤是宣告出錯,因為你宣告的是一個整形int陣列,而用一個字元型陣列來賦值,是不對的!不知道是不是你筆誤?

如果是char型陣列,那麼sizeof輸出就應該是100,同問題(3)

10樓:

(1)char* ss = "012345678array";

sizeof(ss) 結果 4 //32bit 如vc6是對的,16bit如bc4.5不對結果為2,或4

// near* 或far * 不同記憶體模式不一樣

sizeof(*ss) 結果 1 //對

(2)char ss = "012345678array";

sizeof(ss) 結果 11 //15

sizeof(*ss) 結果 1 //對

(3)char ss[100] = "012345678array";

sizeof(ss) 結果是100 //對

strlen(ss) 結果是10 //14

(4)int ss[100] = "012345678array";

sizeof(ss) 結果 400 //kuliuhong的說法應該是正確的,這是一條錯誤語句。

11樓:青山鬱

(1)char* ss = "012345678array";

sizeof(ss) 結果 4:正確,ss是指標,一個指標大小為4位元組

sizeof(*ss) 結果 1:正確,*ss是字元陣列的第一個元素,即字元0,一個字元大小為1位元組

(2)char ss = "012345678array";

sizeof(ss) 結果 11: 錯誤,ss是一個字串,字串預設都是以一個『\0』非顯示字元結尾的,所以整個字串的大小是(14+1)個字元*1位元組=15位元組(包括了字串末尾的'\0'字元)

sizeof(*ss) 結果 1:正確,與(1)同理

(3)char ss[100] = "012345678array";

sizeof(ss) 結果是100:正確,ss是字元陣列,陣列在建立時已申請好了記憶體空間, 大小是100*1 = 100位元組

strlen(ss) 結果是10:錯誤,strlen返回的是陣列ss的長度,即14.

(4)int ss[100] = "012345678array";

sizeof(ss) 結果 400:正確,與(3)同理,陣列在建立時已經申請好了記憶體空間,因為int型別大小為4位元組,所以總大小為100*4 = 400位元組。

注意:對於不同的機器型別,int型別的長度是不一樣的,有的機器上是32位(4位元組), 有的機器上是16位(2位元組)。而以上解釋是按int型別為4位元組長度算的。

12樓:程式猿3號

(1)是正確的。

(2)中sizeof(ss)的結果是15,這裡sizeof計算的是陣列的長度,總共有15個字元(最後一位是『\0』),陣列長度為15

(3)中strlen(ss)的結果是14,這裡strlen計算的是字串長度。

(4)整形陣列不能這麼定義,這樣寫是錯誤的,兩個錯誤:1. 「012345678array」是字元陣列,不能用int型陣列儲存。 2. 定義應該用{1,2,3} 這樣才行

13樓:墮落門徒

(1)正確

(2)陣列的sizeof應該是得到它開闢的空間大小,即陣列元素個數+1(\0)=15

(3)陣列的strlen得到的是其元素個數14(4)字串不能像這樣直接賦值給int型陣列

14樓:兮兮往矣

1對,2第一個結果為15 3第二個結果為14 第四個定義就不對

請幫忙分析下c++指標程式

15樓:

如果每道題都這麼有趣,那天天看知道也不會無聊了。

這個題相當有趣。而且,幾乎沒有資料仔細的解釋過這個問題。

正確的符合標準c++的輸出結果確實應該是4 。

分析一下你的操作:

你取他的地址,你確實取到了,這是真的。

你利用這個地址修改其中的值,你也確實修改了那個地址的值,那個地址位置的記憶體中所儲存的確實是你修改後的值8,這也是真的:原來恆量p所在的地址中的值現在是8。

為什麼輸出是4的原因,其實列印語句根本沒有跑去記憶體裡面讀那個地址的值,而是直接把一個常量『4』扔給cout了。這是編譯器做的手腳。目的是為了符合c++標準:

恆量不許被修改,即便是利用一個可以進行修改的指標指向這個恆量(標準規定這個指標可以被當作指向了這個恆量,但不必真的指向他,而且不可以通過這個指標修改恆量內容)。

舉個例子說明一下編譯器的行為方式:

const int i=10;

b(i);

會被編譯器當成

const int i=10;

b(10);

來處理。

所以你無論把i所在的記憶體改成什麼都無所謂,反正b收到的引數都是10.

實際上這個語法在c++裡面可以當做替代前處理器的#define語句,而編譯器處理他們的方式也基本是這個樣子,就是扔個常量給他,不去讀他們所在的記憶體。不變是const存在的意義,正因為有這個保證才能執行這樣的操作:

const int a=10;

int b[a];

請大家給看看,這是什麼植物,非常感謝您

醉蝶花,一年生草本植物。花莖直立,株高40釐米 60釐米,有的品種可達1米,其莖上長有粘汁細毛,會散發一股強烈的特殊氣味 葉片為掌狀複葉,小葉5枚 7枚,為矩圓狀披針形 總狀花序頂生,花由底部向上次第開放,花瓣披針形向外反捲,花苞紅色,花瓣呈玫瑰紅色或白色,雄蕊特長 蒴果圓柱形,種子淺褐色。花期在6...

求英語高手幫忙翻譯!非常感謝

in fact,i do not feel complicated after reading the report.about 6 months ago,i broke up with my girlfriend yang yongqing,and it s really sad for bein...

請戀愛高手來回答非常感謝

喜歡就要鼓起勇氣去表白,既然你都說她也喜歡你那還有什麼好怕的你都知道她也是喜歡你的了,也許她也正等著你去向她表白呢?要不下次碰到的時候勇敢一點主動約她吃飯吧,你要再這樣拖下去真的錯過你會後悔一輩子的,相信自己!這個問題很簡單嘛,喜歡一個人是能感覺的到的。既然你都已經感覺的到她喜歡你,那麼你就放心大膽...