① c語言程序設計基礎葉文珺版答案
初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:
一、所謂的看懂聽明白,只是很膚淺的語法知識,而我們編寫的程序或軟體是要根據要解決問題的實際需要控製程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程序解決這些實際問題呢?
二、用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。
三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。
出現問題原因清楚了,那麼如何學習呢?請你看【C語言學習六步曲】
特別提醒:在使用本方法之前一定要先閱讀C語言的相關內容,要初步掌握相關知識的要點,然後按下述方法學習,可以達到理解、鞏固、提高C語言知識和提高程序調式能力的目的。
第一步、驗證性練習
在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。 單擊此處查看【C語言的編程風格】
使用《Turbo C/C++ for Windows 集成實驗與學習環境》軟體可以很方便地看著軟體集成的《C語言入門教程》輸入練習其中的程序例題。具體使用方法參見軟體幫助部分。
初學者最容易犯的錯誤是:
1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號""輸入出入成中文狀態下的逗號,分號;括弧(),雙引號「」造成非法字元錯誤。
2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉「;」、「{」與「}」、「(」與「)」不匹配、控制語句(選擇、分支、循環)的格式不正確、調用庫函數卻沒有包含相應的頭文件、調用未聲明的自定義函數、調用函數時實參與形參不匹配、數組的邊界超界等。
3、修改C語言語法錯誤時要注意以下兩點:
(1)、由於C語言語法比較自由、靈活,因此錯誤信息定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前查找錯誤並修改之。
(2)、一條語句錯誤可能會產生若干條錯誤信息只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤信息最能反映錯誤的位置和類型,所以調試程序時務必根據第一條錯誤信息進行修改,修改後,立即運行程序,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程序。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。
例如:將最簡單的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的printf("Hello World!\n");中的Hello World!改成你的姓名,運行一下程序,看有什麼變化?
再如求1+2+3...+100的和的程序
#include <stdio.h>
main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}
第1次將for(i=1;i<=100;i++)中的100改成50,運行一下程序,看有什麼變化?
第2次將for(i=1;i<=100;i++)中的i++改成i=i+2,運行一下程序,看有什麼變化?
找出程序結果變化的原因,就加深了對C語句的理解。
第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。
在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。
第四步、增強程序的調試能力
在《Turbo C/C++ for Windows 集成實驗與學習環境》集成的教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。
注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!
注意:上機調試程序時要帶一個記錄本,記下英文錯誤提示信息和解決該錯誤問題的方法,積累程序調試經驗,避免在編程犯同樣的錯誤,切記!!!!
例如,將Hello World程序中語句printf("Hello World!\n");中的;改成中文的分號;運行一下程序,看有什麼結果?
C語言的錯誤信息的形式:(下面例子是的Turobo C2.0錯誤信息,如圖1)
錯誤 文件名 行號 冒號 錯誤內容
↓ ↓ ↓ ↓ ↓
Error E:\WinTc\WinTc\frist.c 5 : Function call missing) in function main
C語言的錯誤信息的形式:(下面例子是Visual C++6.0 錯誤信息,如圖2)
文件名 行號 冒號 錯誤代碼 冒號 錯誤內容
↓ ↓ ↓ ↓ ↓ ↓
e:\wintc\wintc\frist.c ( 5 ) : error C2143 : syntax error : missing ')' before ';'
軟體集成了高校教學用的最多的兩個編譯器Visual C++6.0和Turbo c 2.0,支持C、標准C、C++、標准C++、WINDOWS C程序的編輯、編譯、和調試。軟體根據用戶輸入程序的類型智能選擇編譯器,不用使用者干涉。
調試程序是一種實踐性很強的事,光紙上談兵是是沒用的,就像游泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會游泳的。 即使在優秀的程序員編寫程序也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就是差別。
第五步、研究典型的C語言程序,提高程序設計能力
經過上述過程的學習,我們已經學會了C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後就可以研讀別人編寫C語言經典程序,看懂別人是如何解決問題的,學習解決問題的方法和程序設計技巧,提高自己的程序設計能力。
在軟體中有50多個典型的源程序,研究它的實現方法,提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言程序設計的能力。
C語言課程設計的目的:是讓學生綜合利用所學的C語言知識,解決一些接近實際問題題目,提高程序設計和調試較大程序的能力,為進一步進行軟體開發打下堅實的基礎。
最後送C語言初學者一句話來共勉:首先要相信自己是有能力學好C語言的,然後不惜一切代價把這種能力表現出來,你就成功了。做任何事,何嘗不是這樣呢?興趣是學習C語言的最大動力,學習方法給你指明努力的方向,讓你事半功倍。如果你感覺對你有幫助的話,請回帖支持,讓更多的朋友知道它,謝謝支持!!!
② c語言編程水手分椰子問題,我自己寫了一段程序,答案不對
這道題我也想了很久,看了網上很多方法都是直接給出公式算,我自己找了下這個問題的規律,用迭代和逆向遞推的方法解決了這個問題,具體代碼如下:(程序附有注釋,建議大家動筆畫畫圖,看看不同水手個數的情況是怎麼樣的,這樣就可以理解了)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
intn;//水手個數
printf("Inputn(1<n<=5): ");
scanf("%d",&n);
//增加程序的健壯性
if(n>1&&n<=5)
printf("y=%d ",Coconu(n));
else
printf("Error! ");
system("pause");
}
intCoconu(intn)
{
inti;//內層循環變數
intj=1;//外層循環變數,
ints;//原來椰子的個數
intr;//迭代變數
do//第一層循環:增加最後一名水手平均分完之後的每一份椰子數,從1開始(1最小)
{
r=j*n+1;//最後一名水手總的椰子數
//第二層循環:利用迭代及反向遞推的方法求出原先的椰子數
for(i=n-1;i>0;i--)
{
//在迭代過程中,如果逆向遞推出現不能整除的情況,則跳出循環。(因為椰子必須是整個的)
if(r%(n-1)!=0)
break;
//迭代
s=(r/(n-1))*n+1;
r=s;
}
j++;
}while(i!=0);//i=0則表示完成了循環,整個循環完成s才是最終的原先的椰子個數
returns;
}
③ C語言二樹葉子結點
這個畫一下就知道了。
第一層 度為2的一個
第二層 2個
總計五個度為2 的,那麼第三層就是2個度為2 的節點 另外兩個為葉子節點。
第四層,4個葉子節點。
總計6個。
這個是不存在度為1 的情況。
事實上,度為1的節點個數,不影響葉子節點個數的。
④ 蕪湖學編程哪個機構最好,孩子十歲,想學C語言,不知道哪個機構靠譜點兒
十歲的先學scratch或者python,Java也行啊.
C不是特別友好,不建議一開始就學,容易枯燥
網上看看教程就行了,報班就算了.
⑤ 學習C語言簡單嗎
學習任何一門語言都是不容易的,但是只要堅持有恆心,最後一定會有所成功。
設計語言中也是有[1] 「單詞」,「語法」,「語義」三部分組成,其中跟人類語言一樣,「單詞」「語法」是基礎,而為達到交流的目的「語義」是整個程序設計語言的重點。當然相對人類語言(以英語為例)而言程序設計語言(以C語言為例)顯然要有簡單得多的組成,所以這里我們要首先確立自己對學好程序設計語言的信心。
1、基礎, C語言的單詞是由26個英文字母、數字(0,1,2……9)、運算符以及其他特殊符號組成,所以相比而言學習C語言是多麼的幸福。
「語法」,在英語中是如常見構詞法、時態、常用句型、特殊用法、固定用法等等(呵呵,不是語言專家如有興趣可以參考英語語法書籍),僅拿構詞法來說動詞後面加er就變成名詞(work-worker),名詞後面加y就變成形容詞(wind-windy)等十多種變換還要記憶些特殊變換,復雜且繁瑣,假如算上時態、句型等那就更復雜了。在C語言中也同樣也存在有語法,比如標識符、常量、表達式、數據定義、函數定義、變數初始化、語句構成、預處理命令等大致8種語法,如標識符[2]可由字母、數字以及下劃線組成,且必須以字母或下劃線開頭,區分大小寫,另外在不同的編譯器中字元數目有不同的規定,一般為7個字元。不過這里有些可能會被忽略的就是書寫格式,在C語言中書寫格式也是需要被注意的,因為格式也可以當作C語言的語法項目,如語句是以分號『;』作為結束的標志的而不是以換行作為結束標志.
綜上所述要學好一門程序設計語言首先就要象學習英語一樣先熟記至少要熟悉這門語言的「單詞」和「語法」然後才能談得上使用,俗話說「萬丈高樓平地起」,學好C語言的必要前提就是先打下堅實的C語言基礎.
2、重點
「語義」即語句的意思、含義。同人類語言一樣,程序設計語言最重要的目的還是「交流」,所以寫一段沒有任何作用的代碼就如同說一句沒有任何意思的話是沒有意義的,在這一點上兩者是共同的,至於在其他某些方面兩者也有驚人的相似之處,不過與人類語言相比,程序設計語言畢竟是與計算機交流,交流對象計算機與人類的不同也決定了程序設計語言與人類語言還是有所區別,甚至可以說是存在巨大的「鴻溝」,這也就是學習程序設計語言的重點。
首先明確,即要在與計算機交流時「語義」必須明確,否則計算機將無所適從,因此作為交流工具的程序設計語言的「語義」也必須是能夠明確無二義的。其次正確,包括正確的輸入以及正確的邏輯。由於計算機
輸入測試用例也能夠完全正確,看看源程序,其中增加了一個標志位便把所有的情況給考慮進去了,相比前一個程序,程序2就是直白的描述了解題的思路,而程序3看起來好象不好理解但似乎更能滿足「天才程序員」的慾望,這也就是編程時使用的一些小技巧。
總體比較三個程序,可以說類似程序1的錯誤——邏輯錯誤是我們程序員比較容易犯的,也是在編程調試過程中最費時間的,至於語法錯誤編譯器可以很快的給我們找出錯誤的地方程序2邏輯正確但相比程序1思路要更難想到,程序3思路不但正確而且還在編程的過程中使用了一些編程技巧,所有這些開闊的邏輯思路(解決問題),快速的調試方法及過程(發現錯誤).
3、兩者之間的關系
綜合上面的敘述,我們把編程看成程序設計語言的「單詞」「語法」「明確的語義」「正確的語義」四個部分,可以看出前面三個部分是幾乎所有的程序設計語言自身所具有的,「單詞」「語法」不同的程序設計語言有所不同,但如果你仔細觀察所有的程序設計語言,可以分成幾類,而且有很多地方也有相通的地方,有點象一通百通的味道,這也就是為什麼很多有經驗的程序員可以在很短的時間就能熟悉其他語言的原因。最後「正確的語義」包括開闊的,正確的邏輯思路以及發現並糾正錯誤的能力則是屬於我們自己的,這也是我們區別於其他人的地方,這些都需要在經常性的編程實踐中去積累去開闊,所以是所應該關注的重中之重。
書本是綱領,我們首先要熟悉一門語言的粗枝大葉,在編程的過程中不至於老是去翻書查找一門語言的基本語法,比如說函數的傳遞方式,函數調用的一些特點,這樣不僅非常浪費時間而且一直困擾於語法中使得自己有種身緣「廬山」中的那種非常迷茫的感覺。因此編程實踐同樣不可少,編程實踐不僅可以「讓語義正確」即開闊編程思路,發現錯誤(調試),累計編程技巧,而且可以在編程過程中熟悉這門語言,熟悉這門語言的細節部分,但也請記住這些細節雖然重要,但也僅僅是細節。當然光看書,光有理論那也是不行的,有「綱領」而沒有「章程」,有「綱領」而沒有實施那同樣也是沒用的,畢竟實踐是檢驗真理的唯一標准,實踐過程中給理論修枝剪葉。
總得來說熟悉一門程序設計語言的語法是編程實踐的先行,而編程實踐是可以更好促進對程序設計語言基本語法知識的理解和熟悉。
⑥ 蕪湖地區國家計算機二級C語言考試地點在蕪湖嗎
當然!你在哪裡報名就在哪裡考試!
我也正打算報名!可就是不知道在哪裡報名,在高校內,我又不認識路,唉郁悶!
希望那個你能一次過,記得要在本月27號前報名,因為截至日期是6月27日
⑦ 蕪湖學習C語言
C 很多編程培訓的單位都有培訓的 但是還是要靠自己去琢磨拉 .
⑧ C語言求葉子結點數的方法
/*二叉樹遍歷時遇到沒有孩子分支的情況下就算做一個葉子即可!*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagBTree {
int data;
struct tagBTree * left;
struct tagBTree * right;
} BTree;//end struct BTree
BTree * CreateLeaf(int number)
{
BTree * l = (BTree*)malloc(sizeof(BTree));
l->data = number;
l->left = 0;
l->right = 0;
return l;
}//end CreateLeaf
void append(BTree ** root, int number)
{
BTree * t =0;
if (!root) return ;
t = *root;
if (!t) {
*root = CreateLeaf(number);
return ;
}//end if
while(t) {
if(number == t->data ) return ; //ignore plicated elements.
if(number < t->data ) {
if(!t->left ) {
t->left = CreateLeaf(number);
return ;
}//end if
t = t->left ;
}else{
if(!t->right ) {
t->right = CreateLeaf(number);
return ;
}//end if
t = t->right ;
}//end if
}//end while
}//end append
int global_leaves = 0;
void PrintLeaf(const BTree * root)
{
if (!root) return ;
if (root->left ) PrintLeaf(root->left );
printf("%d\t", root->data);
if (root->right ) PrintLeaf(root->right );
if(!root->left && !root->right ) global_leaves ++;
}//end printLeaf
void PrintTree (const BTree * root)
{
global_leaves = 0;
printf("[\t");
PrintLeaf(root);
printf("]\n");
printf("total leaves: %d\n", global_leaves);
}//end printTree
BTree * global_root = 0;
int main(void)
{
int x = 0;
printf("Enter some numbers ended with 0:");
do {
scanf("%d", &x);
append(&global_root, x);
}while(x);
PrintTree(global_root);
return 0;
}//end main
⑨ 全國二級C語言考試難不難,通過率為多少
1、C語言二級考試是比較基礎的國家認證的考試,雖然考察的是基礎,但是參加考試的往往都是新手,因此可以說並不簡單,特別是C語言,本身並不容易懂,因為C語言幾乎融合了所有計算機專業基礎學科的內容。
2、通過率,每年都不一樣,而且參考通過率沒有任何意義。
3、如果只是為了拿證,不建議考二級C語言證,如果是計算機專業的,那必須得細致的學習,自己多做練習,多去參考別人的源碼,總結而來,即多讀和多寫。
4、附上二級C語言考試的主要內容:
一、C語言程序的結構
1. 程序的構成,main函數和其他函數。
2. 頭文件,數據說明,函數的開始和結束標志以及程序中的注釋。
3. 源程序的書寫格式。
4. C語言的風格。
二、數據類型及其運算
1. C的數據類型(基本類型,構造類型,指針類型,無值類型)及其定義方法。
2. C運算符的種類、運算優先順序和結合性。
3. 不同類型數據間的轉換與運算。
4. C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。二級各科考試的公共基礎知識大綱及樣題見高等教育出版社出版的《全國計算機等級考試二級教程——公共基礎知識(2013年版)》的附錄部分。
三、基本語句
1. 表達式語句,空語句,復合語句。
2. 輸入輸出函數的調用,正確輸入數據並正確設計輸出格式。
四、選擇結構程序設計
1. 用if 語句實現選擇結構。
2. 用switch語句實現多分支選擇結構。
3. 選擇結構的嵌套。
五、循環結構程序設計
1. for循環結構。
2. while和do-while循環結構。
3. continue語句和break語句。
4. 循環的嵌套。
六、數組的定義和引用
1. 一維數組和二維數組的定義、初始化和數組元素的引用。
2. 字元串與字元數組。
七、函數
1. 庫函數的正確調用。
2. 函數的定義方法。
3. 函數的類型和返回值。
4. 形式參數與實在參數,參數值的傳遞。
5. 函數的正確調用,嵌套調用,遞歸調用。
6. 局部變數和全局變數。
7. 變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。
八、編譯預處理
1. 宏定義和調用(不帶參數的宏,帶參數的宏)。
2. 「文件包含冶處理。
九、指針
1. 地址與指針變數的概念,地址運算符與間址運算符。
2. 一維、二維數組和字元串的地址以及指向變數、數組、字元串、函數、結構體的指針變數的定義。通過指針引用以上各類型數據。
3. 用指針作函數參數。
4. 返回地址值的函數。
5. 指針數組,指向指針的指針。
十、結構體(即「結構冶)與共同體(即「聯合冶)
1. 用typedef 說明一個新類型。
2. 結構體和共用體類型數據的定義和成員的引用。
3. 通過結構體構成鏈表,單向鏈表的建立,結點數據的輸出、刪除與插入。
十一、位運算
1. 位運算符的含義和使用。
2. 簡單的位運算。
十二、文件操作
只要求緩沖文件系統(即高級磁碟I/ O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。
1. 文件類型指針(FILE類型指針)。
2. 文件的打開與關閉(fopen,fclose)。
3. 文件的讀寫(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf 函數的應用),文件的定位(rewind,fseek函數的應用)。
⑩ c語言難么
c語言相對來說,在大學裡面作為基礎課程是比較難得,如果只是為了考試,多做題目得分不是很難,但是如果應用,這個牽扯到好多相關信息,比如線代矩陣,數據結構,演算法,當然還有比如常用的傅里葉級數相關的高數。所以如果工作用的比較熟練的,還是不容易的。,特別是c語言中的數組與指針,鏈表這一塊,還是有難度的,而且是重點。
C語言也是C++的重要基礎,如果C語言熟練的話,C++的課程切人肯定不難。