編程打印3個班學生(假設每班4個學生)的某門課成績的最高分_第1頁
已閱讀1頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言實驗,主教材:蘇小紅等,《 C語言大學實用教程(第2版)》,電子工業(yè)出版社,2007,2實驗教材:蘇小紅等,《C語言大學實用教程學習指導》,電子工業(yè)出版社,2007,4,實驗內容,實驗1: 熟悉上機環(huán)境和順序結構編程練習——鍵盤輸入與屏幕輸出練習,問題1:要使下面程序的輸出語句在屏幕上顯示1,2,34,則從鍵盤輸入的數(shù)據(jù)格式應為以下備選答案中的哪一個?,#include main(){char a,b;

2、int c; scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}A) 1 2 34 B) 1, 2, 34 C) ’1’,’2’,34 D) 12 34,實驗1: 熟悉上機環(huán)境和順序結構編程練習——鍵盤輸入與

3、屏幕輸出練習,問題2:與上面程序的鍵盤輸入相同的情況下,要使上面程序的輸出語句在屏幕上顯示1 2 34,則應修改程序中的哪條語句?怎樣修改?,#include main(){char a,b; int c; scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);},問題

4、3:要使上面程序的鍵盤輸入數(shù)據(jù)格式為1,2,34,輸出語句在屏幕上顯示的結果也為1,2,34,則應修改程序中的哪條語句?怎樣修改?,#include main(){char a,b; int c; scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);},實驗1: 熟悉

5、上機環(huán)境和順序結構編程練習——鍵盤輸入與屏幕輸出練習,問題4:要使上面程序的鍵盤輸入數(shù)據(jù)格式為1,2,34,而輸出語句在屏幕上顯示的結果為’1’,’2’,34,則應修改程序中的哪條語句?怎樣修改?[提示:利用轉義字符輸出字符單引號字符。],#include main(){char a,b; int c; scanf("%c%c%d",&a,&b,&a

6、mp;c);printf("%c,%c,%d\n",a,b,c);},實驗1: 熟悉上機環(huán)境和順序結構編程練習——鍵盤輸入與屏幕輸出練習,問題5:要使上面程序的鍵盤輸入無論用下面哪種格式輸入數(shù)據(jù),程序在屏幕上的輸出結果都為’1’,’2’,34,則程序應修改程序中的哪條語句?怎樣修改?第一種輸入方式:1,2,34↙(以逗號作為分隔符)第二種輸入方式:1 2 34↙(以空格作為分隔符)第三種輸入方式:1

7、 2 34↙(以Tab鍵作為分隔符)第四種輸入方式:1↙ 2↙ 34↙(以回車符作為分隔符),實驗1: 熟悉上機環(huán)境和順序結構編程練習——鍵盤輸入與屏幕輸出練習,實驗1: 熟悉上機環(huán)境和順序結構編程練習——計算定期存款本利之和,設銀行定期存款的年利率rate為2.25%,并已知存款期為n

8、年,存款本金為capital元,試編程計算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由鍵盤輸入。,實驗2: 選擇結構編程練習——身高預測,每個做父母的都關心自己孩子成人后的身高,據(jù)有關生理衛(wèi)生知識與數(shù)理統(tǒng)計分析表明,影響小孩成人后身高的因素有遺傳、飲食習慣與堅持體育鍛煉等。小孩成人后身高與其父母身高和自身性別密切相關。設faHeight為其父身高,moHeight為其母身高,身

9、高預測公式為:男性成人時身高 = (faHeight + moHeight) * 0.54(cm)女性成人時身高 = (faHeight * 0.923 + moHeight) / 2(cm)此外,如果喜愛體育鍛煉,那么可增加身高2%,如果有良好的衛(wèi)生飲食習慣,那么可增加身高1.5%。,實驗2: 選擇結構編程練習——身高預測,編程從鍵盤輸入你的性別(用字符型變量sex存儲,輸入字符F表示女性,輸入字符M表示男性)、父母身高(用實

10、型變量存儲,faHeight為其父身高,moHeight為其母身高)、是否喜愛體育鍛煉(用字符型變量sports存儲,輸入字符Y表示喜愛,輸入字符N表示不喜愛)、是否有良好的飲食習慣等條件(用字符型變量diet存儲,輸入字符Y表示喜愛,輸入字符N表示不喜愛),利用給定公式和身高預測方法對你的身高進行預測。,實驗2:選擇結構編程練習——簡單的計算器程序,要求用switch語句編程設計一個簡單的計算器程序。要求根據(jù)用戶從鍵盤輸入的表達式:

11、操作數(shù)1 運算符op 操作數(shù)2計算表達式的值,指定的算術運算符為加(+)、減(-)、乘(*)、除(/)。,例4.8:計算器程序,編程設計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入如下形式的表達式: 操作數(shù)1 運算符op 操作數(shù)2 然后,計算并輸出表達式的值 指定的運算符為 加(+) 減(-) 乘(*) 除(/),main(){

12、int data1, data2; /*定義兩個操作符*/char op; /*定義運算符*/printf("Please enter the expression:");scanf("%d%c%d", &data1, &op, &data2); /*輸入運算表達式*/swit

13、ch (op) {case '+': /*處理加法*/printf("%d + %d = %d\n", data1, data2, data1 + data2); break;case '-': /*處理減法*/printf("%d - %d

14、 = %d\n", data1, data2, data1 - data2);break;case '*': /*處理乘法*/printf("%d * %d = %d\n", data1, data2, data1 * data2); break;case '/':

15、 /*處理除法*/if (0 == data2) printf("Division by zero!\n");else printf("%d/%d = %d\n", data1, data2, data1/data2); break;default: printf("Unknown operator

16、! \n");}},例4.8,實驗2:選擇結構編程練習——簡單的計算器程序,本實驗程序是在例4.8基礎上,增加如下要求:(1)如果要求程序能進行浮點數(shù)的算術運算,程序應該如何修改? 如何比較實型變量data2和常數(shù)0是否相等?(2)如果要求輸入的算術表達式中的操作數(shù)和運算符之間可以加入任意多空白符,那么程序如何修改?(3)(選作題)如果要求連續(xù)做多次算術運算,每次運算結束后,程序都給出提示:Do you wan

17、t to continue(Y/N or y/n)?如果用戶輸入Y或y時,程序繼續(xù)進行其它算術運算,否則程序才退出運行狀態(tài)。那么,程序如何修改?,語句 if (0 == data2)的必要性1998年11月《科學美國人》雜志,描述了美國導彈巡洋艦約克敦號上的一起事故,除零錯導致軍艦推進系統(tǒng)的關閉如果要求程序能進行浮點數(shù)的算術運算,語句 if (0 == data2)還能用于比較實型變量data2和常數(shù)0的大小嗎?if (fabs

18、(data2) <= 1e-7)如果要求輸入的算術表達式中的操作數(shù)和運算符之間可以加入任意多個空格符,那么程序如何修改?scanf("%d%c%d", &data1, &op, &data2);scanf("%d%1s%d", &data1, &op, &data2);,實驗2:選擇結構編程練習——簡單的計算器程序,實驗3:循環(huán)結構編程

19、練習——猜數(shù)游戲,在這個實驗中,我們將嘗試編寫一個猜數(shù)游戲程序,這個程序看上去有些難度,但是如果你按下列要求以循序漸進方式進行編程實現(xiàn),你就會發(fā)現(xiàn)其實這個程序是很容易實現(xiàn)的。先編寫第一個程序,然后試著在第一個程序的基礎上編寫第二個程序,……。程序1:編程先由計算機“想”一個1到100之間的數(shù)請人猜,如果人猜對了,則計算機給出提示:“Right!”, 否則提示:“Wrong!”,并告訴人所猜的數(shù)是大(Too high)還是小(Too

20、low),然后結束游戲。要求每次運行程序時機器所“想”的數(shù)不能都是一樣的。,猜數(shù)游戲用到的庫函數(shù),隨機函數(shù)srand為函數(shù)rand()設置隨機數(shù)種子來實現(xiàn)對函數(shù)rand所產生的偽隨機數(shù)的 “隨機化” 通過鍵入隨機數(shù)種子,產生[0,100]之間的隨機數(shù)scanf("%u", &seed); srand(seed); magic = rand() % 100 + 1;,#include #i

21、nclude main(){ int magic; int guess; int counter; unsigned int seed; printf("Please enter seed:");scanf("%u", &seed);srand(seed);mag

22、ic = rand() % 100 + 1; counter = 0; do{printf("Please guess a magic number:");scanf("%d", &guess); counter ++; if (guess > magic) printf("Wrong! T

23、oo high!\n");else if (guess < magic) printf("Wrong! Too low!\n");}while (guess != magic); printf("Right!\n"); printf("counter = %d \n", co

24、unter); },猜數(shù)游戲用到的庫函數(shù),使用計算機讀取其時鐘值并把該值自動設置為隨機數(shù)種子,產生[0,100]之間的隨機數(shù)函數(shù)time()返回以秒計算的當前時間值,該值被轉換為無符號整數(shù)并用作隨機數(shù)發(fā)生器的種子 #include srand(time(NULL)); magic = rand() % 100 + 1;,#include #include #include main(){ int m

25、agic; int guess; int counter; srand(time(NULL));magic = rand() % 100 + 1; counter = 0; do{printf("Please guess a magic number:");scanf("%d&

26、quot;, &guess); counter ++; if (guess > magic) printf("Wrong! Too high!\n");else if (guess < magic) printf("Wrong! Too low!\n");}while (guess != magic);

27、 printf("Right!\n"); printf("counter = %d \n", counter); },程序2:編程先由計算機“想”一個1到100之間的數(shù)請人猜,如果人猜對了,則結束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。,實驗3:

28、循環(huán)結構編程練習——猜數(shù)游戲,程序3:編程先由計算機“想”一個1到100之間的數(shù)請人猜,如果人猜對了,則結束游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,則結束游戲。,實驗3:循環(huán)結構編程練習——猜數(shù)游戲,#include #include #include main(){ int magi

29、c; int guess; int counter; srand(time(NULL)); magic = rand() % 100 + 1; counter = 0; do{printf("Please guess a magic number:");scanf("%d",

30、&guess); counter ++; if (guess > magic) printf("Wrong! Too high!\n");else if (guess < magic) printf("Wrong! Too low!\n");elsepri

31、ntf("Right!\n");}while ((guess != magic) && (counter < 10)); printf("counter = %d \n", counter); },,程序4:編程先由計算機“想”一個1到100之間的數(shù)請人猜,如果人猜對了,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平

32、,且結束游戲,否則計算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。每次運行程序可以反復猜多個數(shù),直到操作者想停止時才結束。,實驗3:循環(huán)結構編程練習——猜數(shù)游戲,實驗4:函數(shù)編程練習——小學生加法考試題,程序1:通過輸入兩個加數(shù)給學生出一道加法運算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Not correct! Try again!”;

33、,實驗4:函數(shù)編程練習——小學生加法考試題,/* 函數(shù)功能: 計算兩整型數(shù)之和,如果與用戶輸入的答案相同,則返回1,否則返回0 函數(shù)參數(shù): 整型變量a和b,分別代表被加數(shù)和加數(shù) 函數(shù)返回值:當a加b的結果與用戶輸入的答案相同時,返回1,否則返回0*/int AddTest(int a, int b){int answer;printf("%d+%d=", a, b);scanf

34、("%d", &answer);if (a+b == answer) return 1;else return 0;},void Print(int flag){ if (flag) printf("Right!\n"); else printf("Not correct!\n");},實驗4:函數(shù)編程

35、練習——小學生加法考試題,程序2:通過輸入兩個加數(shù)給學生出一道加法運算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Not correct! Try again!”,直到做對為止;,main(){ int a, b, answer; printf("Input a,b:"); scanf("%d,%d", &a, &b); ans

36、wer = AddTest(a, b); Print(answer);},do{ }while (answer == 0);,實驗4:函數(shù)編程練習——小學生加法考試題,實驗4:函數(shù)編程練習——小學生加法考試題,程序3:通過輸入兩個加數(shù)給學生出一道加法運算題,如果輸入答案正確,則顯示“Right!”,否則提示重做,顯示“Not correct! Try again!”,最多給三次機會,如果三次仍未做對,

37、則顯示“Not correct. You have tried three times! Test over!”程序結束;,main(){ answer = AddTest(a, b); Print(answer, chance); },chance = 0; do{ chance++; }while (answer == 0 &&

38、 chance < 3);,實驗4:函數(shù)編程練習——小學生加法考試題,實驗4:函數(shù)編程練習——小學生加法考試題,程序4:連續(xù)做10道題,通過計算機隨機產生兩個1~10之間的加數(shù)給學生出一道加法運算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Not correct!”,不給機會重做,10道題做完后,按每題10分統(tǒng)計總得分,然后打印出總分和做錯的題目數(shù)量。,srand(time(NULL)); error = 0;

39、 score = 0; for (i=0; i<10; i++) { a = rand()%10 + 1; b = rand()%10 + 1; answer = AddTest(a, b); Print(answer); if (answer == 1) score = score + 10; else error++;

40、},實驗4:函數(shù)編程練習——小學生加法考試題,實驗5:數(shù)組編程練習——檢驗并打印魔方矩陣,在下面的5×5魔方矩陣中,每一行、每一列、每一對角線上的元素之和都是相等的,試編寫程序將這些魔方矩陣中的元素讀到一個二維整型數(shù)組中,然后,檢驗其是否為魔方矩陣,并將其按如下格式顯示到屏幕上。,實驗5:數(shù)組編程練習——餐飲服務質量調查打分,有40個學生被邀請給自助餐廳的食品和服務質量打分(1~10等級),統(tǒng)計調查結果,并用*打印如下形

41、式的統(tǒng)計結果直方圖 Grade CountHistogram 1 5***** 2 10********** 3 7******* ...,實驗5:數(shù)組編程練習——餐飲服務質量調查打分,提示定義數(shù)組score存放打的分數(shù)定義數(shù)組count為計數(shù)器(count[0]不用)計算統(tǒng)計結果:設置一個循環(huán),依次檢查數(shù)組元素值score[i]

42、,是1則將數(shù)組元素count[1]加1,是2則將數(shù)組元素count[2]加1,依此類推for (i=0; i<STUDENTS; i++){count[score[i]] ++;}打印統(tǒng)計結果,設置一個循環(huán),按count數(shù)組元素的值,打印相應個數(shù)的符號’*’,實驗6:一維數(shù)組和函數(shù)綜合編程練習 ——學生成績統(tǒng)計,從鍵盤輸入一個班(全班最多不超過30人)學生某門課的成績,當輸入成績?yōu)樨撝禃r,輸入結束,分別統(tǒng)計下

43、列內容:(1)統(tǒng)計不及格人數(shù)并打印不及格學生名單;(2)統(tǒng)計成績在全班平均分及平均分之上的學生人數(shù)并打印其學生名單;(3)統(tǒng)計各分數(shù)段的學生人數(shù)及所占的百分比;,實驗6:一維數(shù)組和函數(shù)綜合編程練習 ——學生成績統(tǒng)計,提示:(1)用num[i]存放第i+1個學生的學號,用score[i]存放第i+1個學生的成績。設置計數(shù)器count,當score[i]=aver時,打印num[i]和score[i]。(3)將成績分為六個分數(shù)段,

44、60分以下為第0段,60~69為第1段,70~79為第2段,80~89為第3段,90~99為第4段,100分為第5段,因此,成績與分數(shù)段的對應關系為:各分數(shù)段的學生人數(shù)保存在數(shù)組stu中,用stu[i]存放第i段的學生人數(shù)。對于每個學生的成績,先計算出該成績所對應的分數(shù)段,然后將相應的分數(shù)段的人數(shù)加1,即stu[i]++。,實驗7:二維數(shù)組、函數(shù)和常用算法綜合編程練習 ——成績排名次,某班期末考試科目為數(shù)學(MT)、英語(EN)和物理

45、(PH),有最多不超過30人參加考試??荚嚭笠螅海?)計算每個學生的總分和平均分;(2)按總分成績由高到低排出成績的名次;(3)打印出名次表,表格內包括學生編號、各科分數(shù)、總分和平均分;(4)任意輸入一個學號,能夠查找出該學生在班級中的排名及其考試分數(shù),實驗7:二維數(shù)組、函數(shù)和常用算法綜合編程練習 ——成績排名次,提示:用二維數(shù)組score存放每個學生各門課程的成績,用一維數(shù)組num存放每個學生的學號,用一維數(shù)組sum存放每個

46、學生的總分,用一維數(shù)組aver存放每個學生的平均分。(1)用函數(shù)編程實現(xiàn)計算每個學生的總分;(2)用函數(shù)編程實現(xiàn)按總分由高到低對學生成績排序,注意:排序時,一維數(shù)組sum元素的變化應連同二維數(shù)組score和一維數(shù)組num和aver一起變化;(3)用函數(shù)編程實現(xiàn)查找學號為k的學生在班級中的排名名次及相關成績等信息,找不到時返回-1值。,實驗8:數(shù)組、指針和函數(shù)綜合編程練習 ——打印最高分和學號,假設每班人數(shù)最多不超過40人,具體人數(shù)

47、由鍵盤輸入,試編程打印最高分及其學號。程序1:用一維數(shù)組和指針變量作函數(shù)參數(shù),編程打印某班一門課成績的最高分和學號。int FindMax(int score[], long num[], int n, long *pMaxNum);,/* 函數(shù)功能:計算最高分及最高分學生的學號 函數(shù)參數(shù):整型數(shù)組score,存儲學生的成績 長整型數(shù)組num,存儲學生的學號 長整型指針變量pMaxNum,存

48、儲求出來的最高分學生的學號 函數(shù)返回值:最高分*/int FindMax(int score[], long num[], int n, long *pMaxNum) { int i;int maxScore;maxScore = score[0];*pMaxNum = num[0]; for (i=1; i maxScore) {

49、 maxScore = score[i]; *pMaxNum = num[i]; }return (maxScore); },實驗8:數(shù)組、指針和函數(shù)綜合編程練習 ——打印最高分和學號,程序2:用二維數(shù)組和指針變量作函數(shù)參數(shù),編程打印3個班學生(假設每班4個學生)的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。int FindMax(i

50、nt score[CLASS][STU], int m, int *pRow, int *pCol);,int FindMax(int score[][STU], int m, int *pRow, int *pCol) {int i, j, maxScore;maxScore = score[0][0]; *pRow = 0; *pCol = 0;

51、 for (i = 0; i maxScore) {maxScore = score[i][j]; *pRow = i; *pCol = j; }}}return (maxScore); },實驗8:數(shù)組、指針和函數(shù)綜合編程練習 ——打印最高分和學號,實驗8:數(shù)組、

52、指針和函數(shù)綜合編程練習 ——打印最高分和學號,程序3:用指向二維數(shù)組第0行第0列元素的指針作函數(shù)參數(shù),編寫一個能計算任意m行n列的二維數(shù)組中的最大值,并指出其所在的行列下標值的函數(shù),利用該函數(shù)計算3個班學生(假設每班4個學生)的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。int FindMax(int *p, int m, int n, int *pRow, int *pCol);,int FindMax

53、(int *p, int m, int n, int *pRow, int *pCol) { int i, j, maxScore; maxScore = p[0]; *pRow = 0; *pCol = 0; for (i = 0; i maxScore) {maxScore = p[i*n+j];

54、*pRow = i; *pCol = j; }} } return (maxScore); },實驗8:數(shù)組、指針和函數(shù)綜合編程練習 ——打印最高分和學號,實驗8:數(shù)組、指針和函數(shù)綜合編程練習 ——打印最高分和學號,程序4:編寫一個能計算任意m行n列的二維數(shù)組中的最大值,并指出其所在的行列下標值的函數(shù),利用該函數(shù)和動態(tài)內存分配方法,計算任

55、意m個班、每班n個學生的某門課成績的最高分,并指出具有該最高分成績的學生是第幾個班的第幾個學生。 int FindMax(int *p, int m, int n, int *pRow, int *pCol);,實驗9:結構體編程練習——在屏幕上模擬顯示一個數(shù)字式時鐘,定義一個時鐘結構體類型:struct clock{ int hour; int minute; int second;};type

56、def struct clock CLOCK;然后,將下列用全局變量編寫的時鐘模擬顯示程序改成用CLOCK結構體變量類型重新編寫。,時:分:秒,void update(CLOCK *t) { t->second++; if (t->second == 60) { t->second = 0; t->minute++; } if (t-&g

57、t;minute == 60) { t->minute = 0; t->hour++; } if (t->hour == 24) t->hour = 0;},void display(CLOCK *t) { printf("%2d:%2d:%2d\r",

58、 t->hour, t->minute, t->second);},,實驗9:結構體編程練習——在屏幕上模擬顯示一個數(shù)字式時鐘,實驗10:文件編程練習 ——文件拷貝,程序1:根據(jù)程序提示從鍵盤輸入一個已存在的文本文件的完整文件名,并再輸入一個新文本文件的完整文件名,然后編程將已存在文本文件中的內容全部拷貝到新文本文件中去,利用文本編輯軟件,通過查看文件內容驗證程序執(zhí)行結果。,實驗10:文件

59、編程練習 ——文件拷貝,程序2:模擬DOS命令下的COPY命令,在DOS狀態(tài)下鍵入命令行,以實現(xiàn)將一個已存在文本文件中的內容全部拷貝到新文本文件中去,利用文本編輯軟件,通過查看文件內容驗證程序執(zhí)行結果。,實驗10:文件編程練習 ——文件拷貝,程序3:(選作)根據(jù)提示從鍵盤輸入一個已存在的文本文件的完整文件名,并再輸入另一個已存在的文本文件的完整文件名,然后編程將第一個文本文件的內容追加到第二個文本文件的原內容之后,利用文本編輯軟件,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論