c語言程式設計問題在C語言程式設計中應該注意哪些問題

2021-03-06 05:53:50 字數 5563 閱讀 3694

1樓:薰衣草的旋律

1.程式設計在一個已知字串中查詢最長單詞,假定字串中只含有字母和空格,空格用來分割不同單詞!

方法一:

//vc++ 6.0 編譯通過

#include

void main()

if(max

#include

void main()

; int i=0,j=0,max=0;

while(*p)

i++;j=0;

} i=0;

max=strlen(array[i]);

p=array[i];

while(strlen(array[i]))

for(--i;i>=0;i--)

putchar('\n');

} //關於二進位制的轉換,還可以用位移運算子。通過和某一個數如1相按位與,就得到它的二進

制最低位,在位移,再得到二進位制最低位,依此類推。

轉換為8進位制:

/vc++ 6.0編譯通過。

#include

#include

void main()

for(--i;i>=0;i--)

putchar('\n');

} /*

轉換為8進位制就沒有16進位制那麼麻煩了,它不需要另外定義一個字元陣列用來存放,進位制的

所有基數了,而是直接輸出來就可以了。而對與16進位制還要存放他的基數。從0到f

*/ 轉換為16進位制:

//vc++ 6.0 下編譯通過

#include

#include

void main()

; scanf("%d",&a);

for(i=0;a!=0;i++)

for(--i;i>=0;i--) //開始有一個 --i

printf("\n");

} /*

一般把其它進位制的數轉換為十進位制的數較容易,有一個現成的乘法公式供我們使用。

但把十進位制的數轉換為其它進位制的數,則要用到除法。這題的思路是比較清晰的,應該是

解決這類問題的典型演算法了。

而對於把十進位制的數轉換為二進位制的數來說,除了用到除法外,還可用位運算。

這個問題主要是這兩句話值得理解:

b[i]=a%base;

a=a/base;

我們一般是用這兩句迴圈使用來得到一個整數的各位的數字,這也恰巧說明了,我們得到

一個整數的各個位數所用到的方法,正是把一個十進位制的數轉換為一個 "十進位制" 數的演算法

也就是我們得到一個十進位制數的各個位的數字的過程,實際上就是求把他轉換為一個十進位制

的數字的過程(雖然這裡本身沒必要在轉換,因為本身它就已經是一個十進位制數了)。用同樣

的道理可以推算把十進位制數轉換為其他進位制數的過程,和這個是類似的。

然後將後得到的結果先輸出,而先取餘數得到的結果則在數字的最後面,在低位。

*/ 通用解決方案:

#include

#include

void main()

; for(int i=9;i>=0;i--)

else

printf("%d",a[i]);

} }/* 其實進位制轉換的演算法我們都知道,就是用我們要轉換的那個數,對進位制的基數(如果是16進位制)

進行取餘,把取餘的結果儲存在一個陣列裡面,再對他取整重新賦值,也就是丟掉餘數部分,

相當於取上一步的商,再取餘,再取整。如此迴圈,直到為0。

其實上面的演算法,只要我們想起把一個十進位制的數轉換為二進位制的數的計算方法,就不難理解,

因為都是相通的。

現在關鍵是,如果我的這些事情都做好了,也就是餘數都放在一個陣列裡了,現在要做的就是

把陣列逆序輸出就ok了。那麼如果是二進位制或八進位制,我們只要直接輸出就可以了,但是如果是

一個十六進位制的話,就不能這樣了,也就是如果陣列裡面有一個元素是14,那麼我就不能原樣輸出

了,此時必須輸出e,因為e就是十六進位制裡面的基數,而且也是與十進位制的14相對應的。但是如果

是一個二進位制或者是一個八進位制的話,就可以直接輸出,因為陣列裡面的數都是0,1(對二進位制)

或者(0....8),這些數就是二進位制和八進位制的基數。

所以這裡要面臨的問題就是,在輸出一個整數的時候,如果這個整數滿足某一條件,就輸出什麼字

符的問題,例如:如果這個整數等於14則輸出'e'字元。

當然我們可以用 if..else 語句來判斷,對於十六進位制的數特殊的字元也就只有a,b,c,d,e,f六個

用 if...else 來判斷也不算太煩瑣。當然我們還可以用 switch 來判斷,這樣更加有條理。**

也更清晰。

當然這是對於16進位制的數來說的,我們可以這樣判斷,但是如果實際生活中遇到的問題和這個有點

類似,而且字母有多的話,用條件判斷或switch就太煩瑣了,**也不直觀,還容易出錯。

那麼這時我們可以在定義一個字元陣列,分別放我們要輸出的字元,如果有以下對應的關係:

10 a

11 b

12 c

13 d

14 e

15 f

16 g

17 h

18 i

19 j

也就是說在陣列a裡面放的是數字,在陣列b裡面放的是字元,要求陣列a裡面的數字是10的時候,輸

出'a',而不是輸出10,依次類推(看上面的對應關係),當然我上面的對應關係都是順序的,其實也

可以不是順序的,對於數字和字元都可以是亂的,當然這要看實際遇到的問題是什麼樣的了。如果

對上面的問題還用if...else來判斷的話,那未免太煩瑣。所以我們定義一個字元陣列來專門存放

字元。那麼怎麼讓數字和字元聯絡起來呢,怎麼讓a[i]的值是10的時候就輸出'a'而是14的時候就輸

出'e'呢,在這裡我們可以這樣定義b陣列:

char b[30]=;

b[10]='a';

b[11]='b';

b[12]='c';

b[13]='d';

b[14]='e';

...b[19]='j';

這樣也就是說當a[i]元素的值是10時,就輸出b[10],是11就輸出b[11];這樣就和數字對應起來

了。我們可以這樣用:

int t=a[i];

printf("%c",b[t]); a[i]的值是多少,我們就輸出b[多少]

但對於上面舉的例子來說,可以這樣:

if(a[i]>=10&&a[i]<=19) //對應關係是連續的,才可以這樣判斷

else

當然了,上面的是對應的連續的情況,對與10進位制與二進位制,8進位制,16進位制之間的轉換,都是連續的情況。

如果對應的是不連續的情況,那有該怎麼辦呢:

20 'a'

25 'b'

30 'd'

50 'g'

53 'h'

58 'c'

100 'z'

200 'w'

對於上面的情況,是一點規律性也沒有的,而且如果為了這幾個數就去定義一個200個元素的陣列,實在是

有點划不來。所以如果是上面這種情況,就沒有比較好的辦法了。只用用判斷語句了,當然如果有20多個

字元的對應關係的話,判斷語句也是不合適的,那麼就沒有比較好的辦法了。還要進一步探索....

*/ 這些都是我在考計算機等級考試碰到過的題目哦,演算法都是相當典型的,有的是書上看到的,有的是自己擴充套件的。還是要自己認真哦。。。

由於文字太多第三題提交不上來了哦。。不好意思。。。

2樓:

1. void larw(char str)else word++;

} else

else k=0;

} }if(word>len)

printf("the largest word is:\n");

for(i=0;i請輸入一個任意整數:");

scanf("%d",&nnum);

printf("\n請輸入一個合法的表示進位制的基數[2,16]:");

scanf("%d",&rad);

if(rad<=1)

exit(-1);

printf("\n轉換後的結果是:");

while(nnum>=rad)

store[i]=nnum;

for(;i>=0;--i)

switch(store[i])

printf("\n");}

3樓:匿名使用者

/*不要到這裡帖題目,沒人有這時間的,當然,你付錢的話就另當別論*/

4樓:匿名使用者

哈 只能說你。夠懶。我也懶

5樓:匿名使用者

2.任意r進位制數麼?

char temp[16];

long num;

_ltoa(num,temp,r);

3.double total = 345.78;

total*100

m100 = total / 10000;

total %= 10000;

m50 = total / 5000;

total %= 5000;

m10 = total / 1000;

total %= 1000;

m5 = total / 500;

total %= 500;

m2 = total / 200;

total %= 200;

m1 = total / 100;

total %= 100;

m01 = total / 10;

total %= 10;

m05 = total / 5;

total %= 5;

m01 = total;

在c語言程式設計中應該注意哪些問題

6樓:匿名使用者

43.別心急,設計c++的class確實不容易;自己程式中的class和自己的class設計水平是在不斷的程式設計實踐中完善和發展的;

44.決不要因為程式「很小」就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;

45.每學到一個c++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;

46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;

47.請不斷的對自己寫的程式提出更高的要求,哪怕你的程式版本號會變成version 100.xx;

48.儲存好你寫過的所有的程式——那是你最好的積累之一;

49.請不要做浮躁的人;

50.請熱愛c++!

另外,站長團上有產品**,便宜***

7樓:匿名使用者

只要經常敲**,做題目。如果你還有問題,那你就找我,其實很容易學的,只要你自己用心。同時我要告訴你語言基礎很重要。

8樓:

《高質量程式設計指南——c++/c語言》林銳寫的

推薦你看一遍,對程式設計細節講得很多

9樓:匿名使用者

樓上的也不知道在**複製了這麼多的,

其實也沒有什麼要注意的方面,自己慢慢學,經驗是自己積累出來的,

c語言程式設計問題,c語言程式設計問題?

1 輸入有範圍,兩個變數輸入都需要驗證,方法變數處置範圍以外,迴圈判斷輸入。2 天數迴圈計數,日期0 6週期自增。用變數累加計數結果。下面是演示 include int main int i,j,a 7,n 366,cnt 0 while a 0 a 6 printf 請輸入a的值 0 6 scan...

c語言程式設計出錯問題,C語言程式設計出錯問題

include 第二個標頭檔案是可以不要的,這裡沒有用到int main if ch ch ch ch 第二個等號寫成了賦值,改掉就好了 printf n繼續輸入請按回車鍵,結束程式請按空格鍵 a getchar while a return 0 之後,這裡有執行結果 process termina...

c語言程式設計錯誤問題,C語言程式設計錯誤問題

void main 是不存在的,現在標準的寫法有兩種 int main 或int main void 以前用main int i num word num 0 word 0 應該是int i,num,word,num 0,word 0 中間是逗號,不是分號,程式中,分號表示語句的結束,編譯器一看到分...