C語言是近年來國內外得到迅速推廣使用的一種高級編程語言。目前,高等院校普遍開設了C語言的課程,學習C語言成為廣大計算機應用人員和編程人員的迫切要求。
本書是宋海民、賈學斌主編的《C語言程序設計基礎》的配套實訓教材。書中C語言程序設計實訓和二級C語言等級考試輔導編排次序與教材的章節次序相同,方便讀者學完一章后鞏固練習。本書以《C語言程序設計基礎》為理論基礎,以C語言程序設計上機實訓與全國計算機等級考試二級C語言程序設計考試輔導為主要目的,結合了相關教學大綱,注重實踐、編程、開發能力及應試能力的培養。
本書具有如下特色。
1. 考慮學習特點,突出易學性
充分考慮到初學者學習C語言的特點,本書按照循序漸進、難點分散的原則組織內容。通過圖示和表格來講解VC++ 6.0集成開發環境的使用方法。
2. 注重基礎內容,突出實用性
C語言博大精深。在上機實訓的內容摘要里精選了對初學者最基本、最重要、最實用的內容進行介紹,不刻意追求所謂的全面和詳盡。對于較生僻的內容,也從概念講解入手進行簡單介紹,以保證C語言知識體系的完整性。本書力求做到內容新穎、實用,邏輯性強,完整性好,且又突出重點。
3. 強化編程思想,突出應用性
全書始終強化編程思想,通過實例及實際編程,有意識地不斷強化,給讀者以潛移默化的影響。由于程序設計語言是實踐性很強的課程,因此,實訓內容給出13個實訓項目,57個編程題目,讀者通過多次上機實踐,可以盡快掌握C語言的編程方法并提高實踐動手的能力。為了提高讀者的編程水平,本書還提供了70個經典編程習題。
4. 加強考試輔導,突出針對性
為了滿足讀者參加二級C語言等級考試的需要,本書有針對性地給出了等級考試輔導,并精心編寫了筆試及上機模擬試題各四套。本書共包括5章及4個附錄。主要章節包括: 第1章VC++ 6.0集成開發環境;第2章C語言程序設計上機實訓;第3章C語言程序編程訓練;第4章二級C語言等級考試輔導;第5章二級C語言等級考試模擬試題精選;附錄A全國計算機等級考試二級C語言程序設計考試大綱(2013年版);附錄B全國計算機等級考試二級公共基礎知識考試大綱(2013年版);附錄C全國計算機等級考試二級C語言應試技巧;附錄D實訓報告書寫參考格式。
本書介紹的知識和程序具有通用性,基本可以適用于任何計算機系統和C語言版本,但是要注意,不同的C語言版本是有一些差別的。書中的實訓和習題全部在VC++ 6.0集成開發環境上調試通過。
本書適合作為高職高專相關專業的實訓課程教材,也可供讀者自學使用。
本書由武漢職業技術學院宋海民、賈學斌主編,第1章由賈學斌編寫,第2章至第5章由宋海民編寫,附錄由陳覦編寫。同時,許多教師對本書的出版給予了大力的支持,本書在編寫過程中得到了周桂枝教師、張偉教師的幫助,在此一并表示感謝。
感謝所有使用本書的師生,雖然在本書的編寫過程中,作者已盡了最大努力,但書中不足之處在所難免,懇請讀者批評指正。
編者
2017年4月
第3章C語言程序編程訓練 Chapter 3本章提供70個經典【習題】以及程序源代碼供讀者參考學習。
【習題1】用號輸出字母C的圖案。
(1) 程序分析: 可先用號在紙上寫出字母C,再分行輸出。
(2) 程序源代碼如下: #include
void main()
{
printf("Hello C-world!\\n");
printf(" \\n");
printf(" \\n");
printf(" \\n");
printf(" \\n");
}【習題2】輸入3個整數x、y、z,請把這3個數由小到大輸出。
(1) 程序分析: 把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
(2) 程序源代碼如下: #include
void main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /交換x,y的值/
if(x>z)
{t=z;z=x;x=t;} /交換x,z的值/
if(y>z)
{t=y;y=z;z=t;} /交換z,y的值/
printf("small to big: %d %d %d\\n",x,y,z);
}【習題3】請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母,當所按字母為y時結束。
(1) 程序分析: 用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。
〖2〗〖3〗〖4〗(2) 程序源代碼如下: #include
#include
void main()
{
char letter;
printf("please input the first letter of someday\\n");
while ((letter=getch())!='y')/當所按字母為y時才結束/
{
switch (letter)
{
case 's':printf("please input second letter\\n");
if((letter=getch())=='a')
printf("saturday\\n");
else if((letter=getch())=='u')
printf("sunday\\n");
else printf("data error\\n");
break;
case 'f':printf("friday\\n");break;
case 'm':printf("monday\\n");break;
case 't':printf("please input second letter\\n");
if((letter=getch())=='u')
printf("tuesday\\n");
else if ((letter=getch())=='h')
printf("thursday\\n");
else printf("data error\\n");
break;
case 'w':printf("wednesday\\n");break;
default: printf("data error\\n");
}
}
}【習題4】輸入某年某月某日,判斷這一天是這一年的第幾天。
(1) 程序分析: 以3月5日為例,應該先把前兩個月的加起來,再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
(2) 程序源代碼如下: #include
void main()
{
int day,month,year,sum,leap;
printf("\\nplease input year,month,day\\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month) /先計算某月以前月份的總天數/
……