❶ c語言問題 C語言中 ||的優先順序高於== !b==c||d<a 等價於 ((!b)==c)||(d<a)而不是(!b)==(c||(d<a))
是哪個混·蛋告訴你,邏輯或 || 的優先順序 高於 恆等於 == 運算符的,拉出去槍斃!!
❷ 本年度最有挑戰性的5道C語言難題(個人看法)
第2題解不出來。因為素數不可以表示出來,是無理數列。
世界上絕對正確的事物是一元本真世界。也就是終極世界,終極真理。
一元本真世界是有素數數列構成的:2、3、5、7、11、13、17......
一元本真世界屬於虛擬世界。我們所有可以看見的東西都屬於二元以上闡釋世界,即至少有兩個因子闡釋的,比如我們說動物園有:6隻猴子,黑熊(黑和熊),母獅子(母和獅子)......
世界上很多事物都具備了對稱性,但對稱性只是二元闡釋世界的一個表現形式。例如雞和蛋,善與惡,對與錯。二元闡釋世界實際上是素數數列中的2與另一個素數數列的重疊,即1+1,任何一個不小於4的偶數都屬於二元闡釋世界。因此必然等於1+1。
❸ C語言學習
寫給C語言初學者的話(轉帖)
學習C語言不要心急,要循序漸進,須知欲速則不達的道理。千萬不要盲目的寫大量的代碼,這樣做只會堆出大量的低檔次代碼,同時使你形成不好的代碼習慣。先買本基礎的教材來看看,使得對C語言有個初步的認識,其實我現在手頭上還放著《The C Programming Language》和《C程序設計(第二版)》(大學教材)呢,有些時候我還會為了一些基本性的概念來翻翻看呢。
如果你的身邊有高水平的開發人員,那麼再好不過了,多多向別人請教。但是就我了解的情況來看,大部分的初學者並沒有在進入IT行業後得到一個資深的軟體工程師的指導,而恰恰是在入公司後就被推向前線,替老闆們騙取客戶口袋裡的錢,在這個過程中很多人都是在苦苦的堆代碼,賺著可憐的薪資。盡管我也是在拿著可憐的錢,但是有一點我是幸運的,因為我在我的第一家公司里遇到了帶領我走向Unix和C語言領域的導師,正是他的一句「Unix和C語言是你一生都要去學習的技術」讓我狂熱的愛上了它們,正是他的一句「你有root口令,並不是你有root口令這么簡單,更多的是一種責任」(說這句話的前提是我用root口令進入SUN伺服器後刪除了別人的東西,因為我認為這些是無用的東西)使我對責任這兩個字有一個非常具體的認識。所以在這里請廣大讀者允許我用一些篇幅來對我neusoft的導師yuhj表示深深的感謝。同時也對CU的朋友們表示深深的感謝,可以說,你們是我的第二導師,我已經離不開你們了。
希望大家都比我幸運,沒有得到幸運之神垂青的朋友們也不要灰心,多上CU上來和大家交流交流,討論討論吧,但是注意在論壇上討論的時候不要刨根問底,很多事情不是一句話就說的清楚的,別人只能給你一個指引,再具體的只有靠自己多研究研究、琢磨琢磨。閑暇的時候去精華區看看,你會有意外的收獲的。
千萬不要一看到英文就頭大,盡管我也是這樣,並不是看不懂(畢竟也接受過CET4、6級啞巴英語的教育,還是能看懂的)。man的幫助是最好的教材並且很多國外的論壇對技術的描述是很清楚的,也是很簡單的,更重要的是,你會在上面看到些在國內論壇上看不到的東西(計算機的技術一直都是由西方向東方傳遞,希望有朝一日老外都到我們中國的論壇上來尋找技術資料)。
學習C語言有一件事情也是必須要學的,而且最好是同時學,有的朋友可能已經猜出來了,沒錯,是Unix。Unix和C語言可以說大家提的很多了,有Unix的地方就有C語言,同時也正是有了C語言,才有了Unix(我們還是先討論討論雞生蛋還是蛋生雞的哲學問題吧,誰拿西紅柿打我),甚至有人說C語言就是為了Unix而設計的,可見Unix和C語言之間的非同尋常的關系。學習Unix現在容易多了,以前Unix都是運行在大型的伺服器上的,可是現在有了Linux(按照GNU的意思,Linux就是Linux還不能叫Unix),大家可以在自己的PC上裝一套Linux來學習,注意學習Linux不要拿Linux和Windows來比較,它們不可同日而語。Linux會讓你知道什麼是經典,永遠讓你在一個方向上大展宏圖,Windows只會讓你在別人的套子里耍上大刀,不時的還要換一個套子耍耍。下面羅列了一些我在學習Unix的一些經驗:
1、學習Unix和C語言,先向大家推薦一本書《Unix高級環境編程》,這本書是學習Unix和C的經典之作,盡量把書中提到的系統調用都寫個練習程序,先感性的認識一下Linux系統提供給用戶的系統調用都是干什麼的,怎麼用。系統調用是內核提供給用戶的功能用以申請內核服務,對於Linux內核的學習,從系統調用入手是個不錯的辦法。學習過程可以參看Linux的聯機幫助,和網路上的資料。當你覺得差不多了的時候,那我給大家出一道聯系題目吧:實現一個ftp伺服器和客戶端的功能,完全可以自己定義一些應用層的協議,只要能實現用簡單的命令傳輸文件就可以了。這個題目可以使你練習到TCP/IP的基本編程方法和文件操作的基本方法對於後面學習內核的文件系統會有幫助的。
2、當你對Unix系統有了些了解後,同時對於大部分的系統調用(關鍵是關於文件的系統調用,對於Linux系統的內核來說從文件系統入手相對容易一些)也有了清楚的認識後,再推薦你一本書《Linux內核情景分析》,該書是關於Linux內核的經典之作唯一美中不足的是沒有關於網路子系統的詳細介紹。你可以從文件系統的系統調用入手,慢慢的你就會對Linux有了一個更深入的認識。同時注意很多經典的方法和思想在Linux中的運用。你會認識到為什麼Unix把所有的東西都看成文件,對什麼東西操作都是對文件操作,你會慢慢體會到Unix的經典之處了。
3、當你對Linux內核有了些了解後,你就可以找個方向來專門發展了,如果你想對眼下流行的網路編程感興趣,那麼再推薦你一本書《TCP/IP詳細解釋》,這本書是關於TCP/IP協議的經典之作。你會學習到TCP/IP協議棧是如果實現的,為什麼,各層協議之間是如何工作的。你看完了這本書後,你就可以自己寫一個dos攻擊程序和sniffer了。
我說的簡單,其實我提到的每本書至少都夠你研究很長時間的,所以希望初學者別著急不驕不躁,相信只要努力過,一定會成為高手的。
在寫代碼的時候大家要注意養成好的代碼習慣和風格還有抽象能力。下面給出大家在寫代碼的時候的20字方針:
函數要小 盡量的把函數弄的通用點,代碼行少點,一個函數只完成一個簡單的功能,一眼就能看出來此函數有沒有代碼錯誤,每個函數都是健壯的,那麼你的程序就是健壯的。
代碼要少 完成一個功能的時候在邏輯清楚的情況下代碼越少越好,千萬不要比代碼誰寫的多啊。
演算法要好 在完成一個功能的時候要考慮效率,目前計算機的內存很大,所以內存已經不是首要考慮的因素了,但是在某些特殊的地方效率還是很重要的。有效率高的演算法,就不用效率低的演算法,看看本版有一篇精華貼子是關於把一個字元竄兩邊的空格去掉的帖子(trim),很多人都提出了演算法,但是有一個演算法是最好的,效率最高,代碼最少,是演算法要好的最好體現
命名要清 命名要清楚,最要用漢語中的謂賓結構如set_buffsize()
文件要多 盡量把一個大的程序安功能分成多個文件,一個文件盡量不要超作1000行,這樣就很清楚的知道那個文件代碼是健壯的,那個文件有可能有隱患,在代碼檢查的時候可以有針對性的檢查某幾個文件
❹ c語言高手看看這樣編哪裡錯了
/*
錯的有點離譜了,題目都沒讀清楚啊!
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int i,j;
/*
你怎麼確定題目的解釋在 50 以內的?
實際上第一個結果是 59 個雞蛋
*/
for(i=0;i <=50;i++)
{
/*
題目的核心語句是:
兩個一數,三個一數,四個一數,五個一數時,余數分別為1,2,3和4。
(i+1) 是當前枚舉的雞蛋數,也就是要:
(i+1)%2==1
(i+1)%3==2
(i+1)%4==3
(i+1)%5==4
而你做的判斷是:
(i+1)%0== 0(錯誤多餘,而而且被除數為0,結果已經溢出了)
(i+1)%1==0(錯誤且多餘)
(i+1)%2==0(錯誤,應該判斷==1)
(i+1)%3==0(錯誤,應該判斷==2)
(i+1)%4==0(錯誤,應該判斷==3)
(i+1)%5==0(錯誤,應該判斷==4)
*/
for(j=0;j<=5;j++)
{
if((i+1)%j!=0)
break;
}
if(j==5)
{
/*
這里怎麼又變成了 i 個雞蛋了?
上面還是 i+1 的呢?
*/
printf( "有蛋%d個。 ",i);
}
}
return 0;
}
###################################################
示常式序:
###################################################
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i=1;;i++)
{
if(i%2==1 && i%3==2 && i%4==3 && i%5==4)
{
printf( "有蛋%d個。\n",i);
break;
}
}
return 0;
}
❺ C語言問題
這么麻煩干什麼啊。
#include<stdio.h>
main()
{ int i,j max,hang,lie,a[3][4];
printf("input number:");
for(i=0;i<3;i++)
{ for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } }
max=a[0][0];
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]>max)
{ max=a[i][j];
hang=i+1;
lie=j+1;
}
}
}
printf("max=%6d,hang=%6d,lie=%6d",max,hang,lie);
}
❻ 用c語言編程,最後輸出結果為笨蛋這兩個字,最好過程不要含這兩個字
把笨蛋保存在文件中,打開文件讀取並直接輸出即可
❼ [高分懸賞]求助:有關一個C語言編程題目
{ int i,thun,hun,ten,data,count=0;
for(i=0;i<300;i++)
{
thun=a[i]/1000; //多此一舉了
hun=a[i]/100%10; //多此一舉了,感覺好像錯了.沒深究.
ten=a[i]%100/10; //多此一舉了
data=a[i]%10; //多此一舉了
a[i]=thun*1000+hun*100+ten*10+data; //多此一舉了
if (isP(a[i])){cnt++;pjz1+=a[i];} //這句沒錯.
else {count++;pjz2+=a[i];} }
if(cnt==0) pjz1=0; //沒素數pjz1=0,也沒錯.可0~300之間肯定有素數存在的.沒必要的句子
else pjz1/=cnt; //對.
if (count==0) pjz2=0; //你用得著算不是素數嗎?0~300之間肯定有不是素數的數了.
else pjz2/=count;//越來越啰嗦了.
}
//感覺你寫的太啰嗦了.很多不必要的語句都寫上了.呵呵.可見你很心細啊.可惜程序不單要心細,還要效率啊.
❽ C語言代碼問題
現在寬度是4 ,這時候,你比方說要輸出50,就會顯示為" 50",50前邊有兩個空格,占滿四位。如果 你所要輸出的數字大於4位,就沒什麼用了
❾ C語言基本類型的問題
下面是我從我的講義上復制下來的,你看看吧,應該能有些幫助。
第2章 數據類型、運算符與表達式
本章主要介紹C語言的各種數據類型、運算符和表達式。
2.1 C語言的數據類型
C語言的數據類型具體分類如下:
基本類型:分為整型、實型(又稱浮點型)、字元型和枚舉型四種。
構造類型:分為數組類型、結構類型和共用類型三種。
指針類型
空類型
2.2 常量和變數
2.2.1 常量
1、常量的概念:在程序運行過程中,其值不能被改變的量稱為常量
2、 常量的分類:
整型常量
實型常量
字元常量
符號常量
3、常量的類型,可通過書寫形式來判別。
2.2.2 變數
1、變數的概念:在程序運行過程中,其值可以被改變的量稱為變數
2、變數名:每個變數都必須有一個名字——變數名,變數命名遵循標識符命名規則
3、變數值:在程序運行過程中,變數值存儲在內存中。在程序中,通過變數名來引用變數的值
4、標識符命名規則:
只能由字母、數字和下劃線組成,且以字母或下劃線開頭
有效長度:隨系統而異,但至少前8個字元有效。如果超長,則超長部分被舍棄
C語言的關鍵字不能用作變數名
注意:C語言對英文字母的大小敏感,即同一字母的大小寫,被認為是兩個不同的字元。
習慣上,變數名和函數名中的英文字母用小寫,以增加可讀性。
5、變數的定義與初始化
在C語言中,要求對所有用到的變數,必須先定義、後使用;且稱在定義變數的同時進行賦初值的操作為變數初始化。
(1)變數定義的一般格式
數據類型 變數名[, 變數名2……];
例如,float radius, length, area;
(2)變數初始化的一般格式
數據類型 變數名[=初值][, 變數名2[=初值2]……];
例如,float radius=2.5, length, area;
2.3 整型數據
2.3.1 整型變數
1、分類
根據佔用內存位元組數的不同,整型變數又分為4類:
(1)基本整型(類型關鍵字為int)。
(2)短整型(類型關鍵字為short [int])。
(3)長整型(類型關鍵字為long [int])。
(4)無符號整型。無符號型又分為無符號基本整型(unsigned [int])、無符號短整型(unsigned short)和無符號長整型(unsigned long)三種,只能用來存儲無符號整數。
2、佔用內存位元組數與值域
上述各類型整型變數佔用的內存位元組數,隨系統而異。在16位操作系統中,一般用2位元組表示一個int型變數,且long型(4位元組)≥int型(2位元組)≥short型(2位元組)。
顯然,不同類型的整型變數,其值域不同。佔用內存位元組數為n的(有符號)整型變數,其值域為:-2n*8-1~(2n*8-1-1);無符號整型變數的值域為:0~(2n*8-1)。
例如,PC機中的一個int型變數,其值域為-22*8-1~(22*8-1-1),即-32768~32767;一個unsigned型變數的值域為:0~(22*8-1),即0~65535。
第2章 數據類型、運算符與表達式
本章主要介紹C語言的各種數據類型、運算符和表達式。
2.1 C語言的數據類型
C語言的數據類型具體分類如下:
基本類型:分為整型、實型(又稱浮點型)、字元型和枚舉型四種。
構造類型:分為數組類型、結構類型和共用類型三種。
指針類型
空類型
2.2 常量和變數
2.2.1 常量
1、常量的概念:在程序運行過程中,其值不能被改變的量稱為常量
2、 常量的分類:
整型常量
實型常量
字元常量
符號常量
3、常量的類型,可通過書寫形式來判別。
2.2.2 變數
1、變數的概念:在程序運行過程中,其值可以被改變的量稱為變數
2、變數名:每個變數都必須有一個名字——變數名,變數命名遵循標識符命名規則
3、變數值:在程序運行過程中,變數值存儲在內存中。在程序中,通過變數名來引用變數的值
4、標識符命名規則:
只能由字母、數字和下劃線組成,且以字母或下劃線開頭
有效長度:隨系統而異,但至少前8個字元有效。如果超長,則超長部分被舍棄
C語言的關鍵字不能用作變數名
注意:C語言對英文字母的大小敏感,即同一字母的大小寫,被認為是兩個不同的字元。
習慣上,變數名和函數名中的英文字母用小寫,以增加可讀性。
5、變數的定義與初始化
在C語言中,要求對所有用到的變數,必須先定義、後使用;且稱在定義變數的同時進行賦初值的操作為變數初始化。
(1)變數定義的一般格式
數據類型 變數名[, 變數名2……];
例如,float radius, length, area;
(2)變數初始化的一般格式
數據類型 變數名[=初值][, 變數名2[=初值2]……];
例如,float radius=2.5, length, area;
2.3 整型數據
2.3.1 整型變數
1、分類
根據佔用內存位元組數的不同,整型變數又分為4類:
(1)基本整型(類型關鍵字為int)。
(2)短整型(類型關鍵字為short [int])。
(3)長整型(類型關鍵字為long [int])。
(4)無符號整型。無符號型又分為無符號基本整型(unsigned [int])、無符號短整型(unsigned short)和無符號長整型(unsigned long)三種,只能用來存儲無符號整數。
2、佔用內存位元組數與值域
上述各類型整型變數佔用的內存位元組數,隨系統而異。在16位操作系統中,一般用2位元組表示一個int型變數,且long型(4位元組)≥int型(2位元組)≥short型(2位元組)。
顯然,不同類型的整型變數,其值域不同。佔用內存位元組數為n的(有符號)整型變數,其值域為:-2n*8-1~(2n*8-1-1);無符號整型變數的值域為:0~(2n*8-1)。
例如,PC機中的一個int型變數,其值域為-22*8-1~(22*8-1-1),即-32768~32767;一個unsigned型變數的值域為:0~(22*8-1),即0~65535。
實型數據
2.4.1 實型變數
C語言的實型變數,分為兩種:
(1)單精度型:類型關鍵字為float,一般佔4位元組(32位)、提供7位有效數字。
(2)雙精度型:類型關鍵字為double,一般佔8個位元組、提供15~16位有效數字。
2.4.2 實型常量
1、表示形式
實型常量即實數,在C語言中又稱浮點數,其值有兩種表達形式:
(1)十進制形式:例如3.14、9.8。
(2)指數形式:<尾數>E(e)<整型指數>。例如3.0E+5等。
2、關於類型
實型常量不分float型和double型。一個實型常量,可以賦給一個實型變數(float型或double型)。
2.5 字元型數據
2.5.1 字元常量
1、字元常量的定義
用一對單引號括起來的單個字元,稱為字元常量。
例如,『A』、『1』、『+』等。
2、轉義字元
C語言還允許使用一種特殊形式的字元常量,就是以反斜杠「\ 」開頭的轉義字元。
注意:如果反斜杠或單引號本身作為字元常量,必須使用轉義字元:『\\』、『\』『。
[案例2.1] 用轉義字元輸出可列印字元和不可列印字元。
main()
{
printf(「\x4F\x4B\x21\n」); /* 等價於printf(「OK!\n」); */
printf(「\x15 \xAB\n」);
}
程序運行結果如下:
OK!
2.5.2 字元變數
字元變數的類型關鍵字為char,一般佔用1位元組內存單元。
1.變數值的存儲
字元變數用來存儲字元常量。將一個字元常量存儲到一個字元變數中,實際上是將該字元的ASCII碼值(無符號整數)存儲到內存單元中。
例如,
char ch1, ch2; /*定義兩個字元變數:ch1,ch2*/
ch1=』a』; ch2=』b』; /*給字元變數賦值*/
2.特性
字元數據在內存中存儲的是字元的ASCII碼—— 一個無符號整數,其形式與整數的存儲形式一樣,所以C語言允許字元型數據與整型數據之間通用。
(1)一個字元型數據,既可以字元形式輸出,也可以整數形式輸出。
[案例2.2] 字元變數的字元形式輸出和整數形式輸出。
main()
{
char ch1,ch2;
ch1='a'; ch2='b';
printf(「ch1=%c,ch2=%c\n」,ch1,ch2);
printf(「ch1=%d,ch2=%d\n」,ch1,ch2);
}
程序運行結果:
ch1=a,ch2=b
ch1=97,ch2=98
(2)允許對字元數據進行算術運算,此時就是對它們的ASCII碼值進行算術運算。
[案例2.3] 字元數據的算術運算。
main()
{
char ch1,ch2;
ch1=『a』; ch2=『B』;
printf(「ch1=%c,ch2=%c\n」,ch1-32,ch2+32); /*字母的大小寫轉換*/
/*用字元形式輸出一個大於256的數值*/
printf("ch1+200=%d\n", ch1+200);
printf("ch1+200=%c\n", ch1+200);
printf("ch1+256=%d\n", ch1+256);
printf("ch1+256=%c\n", ch1+256);
}
程序運行結果:
ch1=A,ch2=b
ch1+200=297
ch1+200=)
ch1+256=353
ch1+256=a