程序設(shè)計基礎(chǔ) ——C語言 上機(jī)指導(dǎo)參考答案_第1頁
程序設(shè)計基礎(chǔ) ——C語言 上機(jī)指導(dǎo)參考答案_第2頁
程序設(shè)計基礎(chǔ) ——C語言 上機(jī)指導(dǎo)參考答案_第3頁
程序設(shè)計基礎(chǔ) ——C語言 上機(jī)指導(dǎo)參考答案_第4頁
程序設(shè)計基礎(chǔ) ——C語言 上機(jī)指導(dǎo)參考答案_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1 上機(jī) 1 參考答案 三、 2. 程序輸出結(jié)果是: C! 0 4. 程序輸出結(jié)果是: to 5. #) *n); n); *n); ; 6. ( 1) 2065: a : 2065: b : 2065: c : 2)沒有錯誤。 剛才的錯誤是: a,b,c 沒有定義 ( 3)沒有顯示結(jié)果 。 缺少輸出語句。 修改程序, 數(shù)的最后 一行增加一條語句: %dn”,c); 2 ( 4)有顯示結(jié)果。 輸出: 7 上機(jī) 2 參考答案 三、 1.( 1)平均值為: 因是: x, y 和 z 都是整數(shù),則( x+y+z) /3 時,即整數(shù)與整數(shù)除法得到的結(jié)果是取整。 ( 2)平均值為: 3)平均值為: . 程序輸出的結(jié)果是: 解釋: 型的有效位數(shù)是 7 位, 型的有效位數(shù)是 16 位 。 3. 程序輸出的結(jié)果是: 97,61,141,d 第一個 格式控制個數(shù)與變量列表中的變量個數(shù)不一致。 k 的值沒有輸出。 第二個 兩個連續(xù)的 %字符會輸出一個 %。 k 的值沒有輸出。 4. 程序輸出的結(jié)果是: %示小數(shù)點保留 2 位有效數(shù)字,寬度為 7。 %數(shù)點保留 2 位有效數(shù)字,寬度為 4,左對齊。 若設(shè)定的寬度比實際輸出的寬度要小,將按原長輸出。 5. 第 7 行錯,錯誤原因: 掉了 &。修改后的語句如下: x=%d,y=%f,c=%c,&x,&y,&c); 第 8 行錯,錯誤原因:格式控制符錯誤。修改后的語句如下: x=%d,y=%f,c=%c,x,y,c); 程序修改正確后,輸出正確的結(jié)果是: 3 x=25, y=c=C 6. ( 1)程序輸出的結(jié)果為: x,y ( 2)將第 4 行改為 “c1,,輸出結(jié)果為: x,y ( 3)將第 5 行改為 “c1=x;”,編譯結(jié)果如何?原因是什么? 出錯,賦值格式不對。右邊不能是變量。 ( 4)將第 5 行改為 “00”,輸出結(jié)果為: ,y 結(jié)合輸出結(jié)果分析原因: 00,當(dāng)以 %c 的格式輸出 ,進(jìn)行如下計算: 3004,即輸出 4 對應(yīng)的字符,即 “ ,” 。 ( 5)將第 7 行改為 “%d,%d”,c1,”,輸出結(jié)果為: 120,121 ( 6)將第 7 行改為 “%d,%d”,55,56);”,輸出結(jié)果為: 375,377 ( 7)將第 7 行改為 “%c,%c”,55,56);”,輸出結(jié)果為: w,y 7. 程序輸出的結(jié)果是: a=2,b=1,c=1,d=0,e=6 觀察結(jié)果,并對結(jié)果做出合理的解釋: 對于表達(dá)式: +a|+b&+c;當(dāng) +a 為真時,由于是做 “或操作 ”,所以 +b 不執(zhí)行。 對于表達(dá)式: (d=wx)&(e=yz);當(dāng) (d=wx)為假時,由 于是做 “與操作 ”,所以(e=yz)不執(zhí)行。 四、 1. #4 a; a=5; %d,%o,%xn,a,a,a); ; 2. # a; %f”,&a); %,a,a); 3. # a; %c,%d,%o,%xn, %c,%d,%o,%xn, ; 5 上機(jī) 3 參考答案 三、 1.( 1) 程序描述的分段函數(shù)是: ( x=0) ( x0) 1 ( x 請輸入要查詢的星期: n); %d,& : 上午:英語,數(shù)學(xué);下午:法律 n); : 上午:物理,計算機(jī);下午:音樂 n); 6 : 上午:英語,數(shù)學(xué);下午:體育 n); : 上午:計算機(jī),物理; 下午:班會 n); : 上午:寫作,實習(xí);下午:聽力 n); : : 休息 n); 非法輸入 n); ; 3. i= n/100; /*n 的百位 */ j= n%100/10; /*n 的十位 */ k= n%10; /*n 的個位 */ if(i*i*i+j*j*j+k*k*k=n) ( 2) 程序 輸出的結(jié)果是 : 153=13+53+33 370=33+73+03 371=33+73+13 407=43+03+73 7 4. /*用 現(xiàn) */ # ,n; n=0; n ,n; n=0; n; n+; n ,n; n=0;n i,j; /*打印輸出第一行(包括 *和 19 這 9 個數(shù)字) */ * 1 2 3 4 5 6 7 8 9n”); /*打印輸出從第二行開始的所有內(nèi)容 */ i=1;i x,y,z; /*第 4 行 */ x=0;x # x,y; %&x); 10 if(x0 & x=3 & x x,y; x=0;x i,j; i=1;i %c,%c,%c,%f,%f,& if(M) if(F) if(Y) if(Y) 身高為: %fn, ; 12 2. 簡單的計算器 # 請輸入要計算的表達(dá)式(例如: ); %f%c%f,& +: -: *: : %f%c%f=%fn,op, ; 13 ( 1)比較實型變量 常量 0 是否相等。 #1if( op,Y; Y|y) 請輸入要計算的表達(dá)式(例如: ); %f%c%f,& +: -: *: 14 : %f%c%f=%fn,op, ; Do to )?n); %c,& ; 3. 猜數(shù)游戲 #00 ; is a nn); ; /* 用系統(tǒng)時間初始化隨機(jī)數(shù)生成器 */ A d n, /*調(diào)用 生隨機(jī)數(shù)供猜測 */ 15 % 1; ;) ); %d, & ; /*統(tǒng)計猜的次數(shù) */ = /*猜對 */ d nn, ; i; i=0;i ; ; 5. 18 i=0;i b10; i; ,; i=0; /*正數(shù)累加到 */ bi; if(bi # 10 ) ; i,j; ,; i=0;i # 5 # 4 aMN; i,j,請輸入 %d*%d 階矩陣 A: n,M,N ); i=0;iaij) j; ; /*定位第 ,看看 ai否是該列中最大的那個元素 如果是不是,則 0;如果是,則 持為 1*/ j=0;jai ; if(1) ; 第 %d 個鞍點 :a%d%d=%dn,i,ai; 21 if(0) 沒有鞍點 ); ; 4. # 80 i=0,j=0; ,; 請輸入原文: n); i!=0) /*大寫字母時,密文與原文字符的 之和為 155*/ if(i=A & i=a & i # 5 N,i,j,s1,s2, 0; ; /*讀入魔方矩陣的數(shù)據(jù)到二維整型數(shù)組 */ i=0;i #0 #1 i,j,0; /*從鍵盤錄入 40 個學(xué)生為餐飲服務(wù)質(zhì)量的打分 */ 請輸入 %d 個學(xué)生的打的分?jǐn)?shù): n, i=0;i # /*數(shù)組 a 存放隨機(jī)數(shù),數(shù)組 b 存放用戶所猜的數(shù) */ a4,b4,n,i=0,j,k,x,y; /*計算機(jī)隨機(jī)生成一個各位相異的 4 位數(shù)字 */ ; a0 = %10; a1 = %10; a0 = a1); a2 = %10; (a0 = a2) | (a1 = a2); a3 = %10; (a0 = a3) | (a1 = a3) |(a2 = a3); /*最多允許用戶猜的次數(shù)由用戶從鍵盤輸入 */ 想猜數(shù)的次數(shù): n); 26 %d,&n); i+; 請輸入你猜想的數(shù)字: n); %d%d%d%d,&b0,&b1,&b2,&b3); x=0; y=0; /*x 中存放有幾個數(shù)字?jǐn)?shù)字猜對,位置也猜對 */ j=0;j=v,若 bi; if(bi #I *函數(shù)功能:求圓的面積 函數(shù)參數(shù): 圓的半徑 返回值:實型值圓的面積 */ r) I*r*r); /*函數(shù)功能:求圓的周長 函數(shù)參數(shù):圓的半徑 返回值:實型值圓的周長 */ r) *PI*r); s,l; %c”,& Y | y) 請輸入圓的半徑 :); 31 %f”,& s= l= 半徑為 %f 的圓的面積為: %長為: %s,l); %c”,& ; 2. # 10 # 10 b N,m); b N,m); aMN; i,j; i=0 ; bij; /*函數(shù)功能:求二維數(shù)組 b 中的最小值函數(shù) 函數(shù)參數(shù):浮點型二維數(shù)組 b,有 N 列;數(shù)組的行數(shù) 返回值:返回數(shù)組 b 中的最小值 */ b N,m) i,j; b00; i=0;i /*函數(shù)功能:將字符串 接到字符串 尾部 函數(shù)參數(shù):字符數(shù)組 符數(shù)組 回值:空 */ 0,0) 33 i=0,j=0; i!=0) /找到 的末尾 i+; j!=0) /將 連接到 的尾部 i=j; i+; j+; i=0; /在 的末尾添加一個 0 0,0; 請輸入字符串 n); 請輸入字符串 n); 連接后的串為: %sn, ; 上機(jī) 6 參考答案 三、 *p+0=1 a0=1 *p+1=2 a1=2 34 *p+2=3 a2=3 *p+3=4 a3=4 *p+4=5 a4=5 指針與數(shù)組的關(guān)系是: *(p+i)和 ai等價( i=04)。 2. /*指針 向第一個字符串 p1= i=0;*(p1+i)!= 0;i+) p2= 0;) /*如果第二個字符串的字符與第一個字符串的字符相同 */ (p1+i)=* s1i,&s1i+1); 3. p1=x,p2=x;p1* ; d,dn,* ); 4. (3)請指出錯誤的原因并修改錯誤 。 第 1 處錯誤: j=x+n; 錯誤的原因是:數(shù)組 x 中的最后一個元素的標(biāo)號應(yīng)為 修改為: j=x+ 第 2 處錯誤: k i,j,n; i=0; j= j=0) *(i)=*(j); i+; *(i)=0; 2. p,n,x) i=0; ; i=0;i # 3 # 4 /*計算并打印每門課程的平均成績 */ p)N) /*p 為行指針 */ i,j; i=0;i # /*排名 */ *姓名 */ *平均成績 */ ; =3, 0; i,; /*判斷是否找到與姓名相匹配的學(xué)生的標(biāo)志 */ a ); /*輸入一個學(xué)生姓名 */ i=0;i 0; =李一 ,1,王二 ,2, 趙三 ,3,劉四 ,4,; p; 40 p=p); ; i; i=0;60) /*若總分高于 160*/ 總分高于 160 分 n 姓名: %sn 學(xué)號: %dn 成績 1: %fn 成績 2: %fn, if( 運行結(jié)果: 出的結(jié)果為: 3,3 4. 數(shù)的功能是: 以升序形式將 入到頭指針為 鏈表的合適位置中。 41 數(shù)參數(shù):指向待插入數(shù)據(jù) 在節(jié)點的指針 插入的整型數(shù)據(jù) 數(shù)的功能是: 依次輸出鏈表中所有節(jié)點數(shù)據(jù)域的信息。 四、 1. #*數(shù)組 放非閏年和閏年各月份的天數(shù) */ 13=0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31; /*日期 構(gòu)體 */ *函數(shù)功能:求指定日期是該年的第幾天 函數(shù)參數(shù):年 數(shù)返回值:整數(shù)第幾天 i,*是閏年 ,非閏年 */ =0&00!=0|00=0); i=1;i # 4 /*學(xué)生的編號 */ 10; /*學(xué)生的姓名 */ /*學(xué)生的語文成績 */ /*學(xué)生的數(shù)學(xué)成績 */ *學(xué)生的英語成績 */ /*學(xué)生 3 門課的平均成績 */ ; /*函數(shù)功能:求各個學(xué)生 3 門課的平均成績 函數(shù)參數(shù):結(jié)構(gòu)體數(shù)組 生人數(shù) n 43 函數(shù)返回值:無 */ ,n) i; /*求各個學(xué)生 3 門課的平均成績,存放到結(jié)構(gòu)體的 員中 */ i=0;i /*定義時鐘結(jié)構(gòu)體 */ *時 */ /*分 */ /*秒 */ ; *函數(shù)功能:時、分、秒時間的更新 函數(shù)參數(shù):時鐘結(jié)構(gòu)體指針 數(shù)返回值:無 */ ; /*時鐘秒增 1*/ /*若 為 60,表示已過 1 分鐘,則 歸 0, 加 1*/ = 60) 0; ; /*若 為 60,表示已過 1 小時,則 歸 0, 加 1*/ = 60) 0; 45 ; /*若 為 24,則 值從 0 開始計時 */ = 24) 0; /*函數(shù)功能:時、分、秒時間的顯示 函數(shù)參數(shù):時鐘結(jié)構(gòu)體指針 數(shù)返回值:無 */ /*用回車符 r控制時、分、秒顯示的位置 */ %2d:%2d:%2dr, /*函數(shù)功能:模擬延遲 1 秒的時間 函數(shù)參數(shù):無 函數(shù)返回值:無 */ t; t = 0; t # /*數(shù)據(jù)域 *指針域 ; /*數(shù)功能:統(tǒng)計鏈表中節(jié)點的個數(shù)。 函數(shù)的參數(shù):鏈表的頭指針 47 函數(shù)的返回值:無 ;/*存放鏈 表中節(jié)點個數(shù)的變量置 0*/ p=p!= /*若不是表尾,則循環(huán)遍歷每一個節(jié)點 */ ; /*計數(shù)器加 1*/ p=p- /*讓 p 指向下一個節(jié)點 */ /*數(shù)功能:創(chuàng)建一個鏈表,當(dāng)輸入的數(shù)為 0 時,建立鏈表結(jié)束。 函數(shù)的參數(shù):無 函數(shù)的返回 值:創(chuàng)建鏈表的頭指針 /*頭指針, 尾指針, p 為指向當(dāng)前節(jié)點的指針 */ p; x; 請輸入一個整數(shù): ); %d,&x); /*輸入節(jié)點數(shù)據(jù) */ x!=0) /*當(dāng)輸入的數(shù)為 0 時,建立鏈表結(jié)束 */ 48 /*為新添加的節(jié)點申請內(nèi)存 */ p=(); if(p= /*若申請內(nèi)存失敗,打印錯誤信息,退出程序 */ 開辟內(nèi)存失敗 n); ); p-x; /*為新添加節(jié)點的數(shù)據(jù)域賦值 */ p- /*將新添加節(jié)點置為表尾 */ /*若原鏈表為空表,則將新 添加節(jié)點設(shè)為首節(jié)點 */ if(= p; /*若原鏈表為非空,則將新建節(jié)點添加到表尾 */ p; /*將新添加節(jié)點置為表尾 */ p; /*尾指針指向新添加節(jié)點 */ 請輸入一個整數(shù): ); %d,&x); /*返回鏈表的頭指針 */ /*數(shù)功能:釋放 向的鏈表中所有節(jié)點占用的內(nèi)存。 函數(shù)的參數(shù):鏈表的頭指針 函數(shù)的返回值:無 49 p=p!= /*若不是表尾,則釋放 節(jié)點占用的內(nèi)存 */ p; /*保存當(dāng)前節(jié)點指針 */ p=p- /*讓 p 指向下一個節(jié)點 */ /*釋放 向的當(dāng)前節(jié)點占用的內(nèi)存 */ ; /*創(chuàng)建鏈表 */ /*統(tǒng)計鏈表中節(jié)點個數(shù) */ 鏈表節(jié)點個數(shù)為: %dn, /*釋放鏈表節(jié)點信息 */ ; 運行結(jié)果: 5. /*程序 8 # 50 /*數(shù)據(jù)域 *指針域 ; /*數(shù)功能:將頭指針為 函數(shù)的參數(shù):第一個鏈表的頭指針 二個鏈表的頭指針 數(shù)的返回值:連接后的鏈表的頭指針 pA, p,*q; p=q=*找到頭指針為 (p!= q=p; /*將當(dāng)前 q*/ p=p- /*讓 /*將頭指針為 *返回連接后的鏈表的頭指針 /*數(shù)功能:創(chuàng)建一個鏈表,當(dāng)輸入的數(shù)為 0 時,建立鏈表結(jié)束。 函數(shù)的參數(shù):無 函數(shù)的返回值:創(chuàng)建鏈表的頭指針 51 /*p; x; 請輸入一個整數(shù): ); %d,&x); /*輸入節(jié)點數(shù)據(jù) */ x!=0) /*當(dāng)輸入的數(shù)為 0時,建立鏈表結(jié)束 */ /*為新添加的節(jié)點申請內(nèi)存 */ p=(); if(p= /*若申請內(nèi)存失敗,打印錯誤信息,退出程序 */ 開辟內(nèi)存失敗 n); ); p-x; /*為新添加節(jié)點的數(shù)據(jù)域賦值 */ p- /*將新添加節(jié)點置為表尾 */ /*若原鏈表為空表,則將新添加節(jié)點設(shè)為首節(jié)點 */ if(= p; /*若原鏈表為非空,則將新建節(jié)點添加到表尾 */ p; /*將新添加節(jié)點置為表尾 */ p; /*尾指針指向新添加節(jié)點 */ 請輸入一個整數(shù): ); 52 %d,&x); /*返回鏈表的頭指針 */ /*數(shù)功能:顯示所有已經(jīng)建立好的節(jié)點中數(shù)據(jù)項的內(nèi)容。 函數(shù)的參數(shù):鏈表的頭指針 函數(shù)的返回值:無 p=鏈表的所有節(jié)點數(shù)據(jù)為: n); p!= /*若不是表尾,則循環(huán)打印 */ %5d,p- /*打印節(jié)點的數(shù)據(jù) */ p=p- /*讓 p 指向下一個節(jié)點 */ n); /*數(shù)功能:釋放 向的鏈表中所有節(jié)點占用的內(nèi)存。 函數(shù)的參數(shù):鏈表的頭指針 函數(shù)的返回值:無 p=53 p!= /*若不是表尾,則釋放節(jié)點占用的內(nèi)存 */ p; /*保存當(dāng)前節(jié)點指針 */ p=p- /*讓 ( /*釋放 pA=; /*創(chuàng)建頭指針為 鏈表 */ pB=; /*創(chuàng)建頭指針為 鏈表 */ pA, /*連接兩個鏈表 */ /*顯示連接后的鏈表節(jié)點 */ /*釋放鏈表節(jié)點信息 */ ; 運行結(jié)果: 54 上機(jī) 8 參考答案 三、 1. 算法設(shè)計: 以只讀方式打開文件 從文件 讀取 N 個字符存放到數(shù)組 。 輸出數(shù)組 的內(nèi)容,返回 。 關(guān)閉文件 【指導(dǎo)】 數(shù)是從文件指針?biāo)赶虻奈募凶x入一個長度不超過 字符的字符串,所以如果希望每次從 讀取 N 個字符, 數(shù)的第二個參數(shù)應(yīng)該為 N+1,同時,存放著 N 個字符的數(shù)組的大小應(yīng)設(shè)置為 N+1,以確??臻g足夠。 程序如下: # 5 +1; *以只讀方式打開文件 r) = 文件 開失??! ); ); +1,=*從文件讀取 N 個字母到 ,讀取 成功或還沒讀到文件尾部, 55 則繼續(xù)循環(huán) */ %sn, ; 運行結(jié)果: 2. 解題思路: 因為本題讀寫的都是二進(jìn)制文件,所以文件以讀方式打開采用“ 式,文件以寫方式打開采用“ 式。 數(shù)分別表示從文件讀一個數(shù)據(jù)塊,向文件寫一個數(shù)據(jù)塊,并且在讀寫時是以二進(jìn)制形式進(jìn)行的,所以本題可選用這兩個函數(shù)完成數(shù)據(jù)的讀寫操作。 【指導(dǎo)】此題可參看教材中程序 9仿完成。 程序如下: # 3 0; /*姓名 */ /*數(shù)學(xué)成績 */ *英語成績 */ ; 5

溫馨提示

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

最新文檔

評論

0/150

提交評論