東北大學c語言上機考試題全答案
⑴ 幫忙給個《C語言程序設計》 練習題 答案 這次考試題就在其中。。。。
1A(B 中第四個選項首行是數字,D選型有關鍵字) 2D 3A 4A 5C(我在TC上運行的) 6A 7D 8D(0147是8進制轉換成十進制即103即『g』) 9D(屬自動類型轉換) 10 D 11C 12A(條件運算符運算方式是從右向左的) 13B(算術運算符-的優先順序高於關系運算符<=,最後是邏輯判斷 為真1,假0)14C
15 D(考察逗號運算符) 16D
⑵ 2015年東北大學計算機專升本考試題及答案
計算機基礎知識綜合
《數據結構》
嚴蔚敏
清華版社
《C語言程序設計》第3版
譚浩強
清華版社
C語言程序設計與數據結構
《標准C語言程序設計》
金名等譯
清華版社
《數據結構》(用面向象與C++語言描述)(第2版)
殷昆
清華版社
⑶ C語言考試題
我來回答下把:
1.1
2.9
解釋:t = (a>b)?a:b等價於t = ((a>b)?a:b),這下應該知道了把
3.96 `(和~鍵是同一個鍵)
解釋:a=96;96是那個字元的ACSII碼值的十進製表示,它的十六進製表示的ASCII碼值為60,你可以對96進行除16取余法得到60,然後你去查看下字元的ASCII碼 16進製表示的那個表就會發現,它對應的是這個字元,所以就是他了,別和單引號混淆就好,單引號的ASCII碼十六進製表示為27
4.a[0] a[1] a[2]
5.1600
6.文本文件 二進制文件 [這個拿的不是很准]
7.fopen fclose fseek
下面:
1.C
解釋:a+=a-=a*=a,首先要知道+=,-=,*=的優先順序是相同的,但是他們的結合性是由右向左的,所以,他相當於a+=a-=(a=a*a),你還要知道,這是在同一條語句中多次修改同一個變數的值,這里有結合性,可以保證,但是有的時候並不可以,因為語言中明確規定,求值順序未定義,一般盡可能不要在同一條語句里多次修改同一個變數的值,有的時候還和編譯器有關的,a+=a-=(a=a*a)相當於a+=(a=a-(a=a*a)),在a=(a+(a=a-(a=a*a))),所以為0
2.B
3.D
解釋:你定義一個帶參數的宏#define ADD(x) (x)+(x)
你要知道,宏替換是機械化的替換,不會很智能化的,也就是說
在這里,替換的時候是替換成了這樣d=(a+b)+(a+b)*c;所以最後就是80了
4. A
解釋:這樣理解把, char a[5]; char *p=a;這個是把數組的首地址賦給指針p來初始化指針,你後面再加一句p="abcd";不就是對指針的賦值嗎,使指針不再指向數組的首地址,而是指向了字元串的首地址了.相信char *p="abcd";很常見把,呵呵...
5.C
解釋:因為k=2,然後執行關系表達式k==0,結果顯然判斷結果為假,所以不執行循環體
6.C
7.A
指針是不能相加的
8.D
解釋:這個應該好好解釋下,這個題還好了
struct st{ int n;struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,『\0』},*p; p=&a[0];
A p++->n B p->n++ C (*p).n++ D ++p->n
分析:首先你要知道,這是定義了一個結構體數組,這個static struct st a[3]={5,&a[1],7,&a[2],9,『\0』}寫的易讀一點就是static struct st a[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},是不是明了了好多.
你做這個題目之前還需要明白一點,即箭頭操作符的優先順序高於++運算符,然後分析選項
選項A.p++是後綴加,所以執行(p++)->n(即p++->n) 相當於執行p->n,即得到的值是5
選項B. p->n++相當於(p->n)++,由於是後綴加,所以得到的值也是5
選項C.(*p).n++ 就是相當於((*p).n)++,更相當於(p->n)++,所以和上面的是一樣的,也是5,為什麼它相當於它呢,這就要你看看箭頭操作符的由來了,箭頭操作符的由來就是為了結合解引用操作符*和點操作符.於一起的.來簡化書寫,增加可讀性
選項D.++p->n 相當於++(p->n),由於是前綴加,所以得到的值為6了
9.C,選擇W會格式化
10. B ,數組名其實就相當於一個指針,這里對指針做運算,加1使指針下移
寫出運行結果:
1.
10623-9003
2.
6 7 8
填空題:
1.
#include <stdio.h>
#include <math.h>
2. 2
3.break;
4.k+1
編程題:
1.代碼如下:
#include<stdio.h>
int main()
{
int i,n;
long s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
s*=i;
printf("%ld",s);
return 0;
}
2.代碼如下
#include<stdio.h>
int main()
{
int i,s=0;
for(i=1;i<=100;i++)
s+=i;
printf("%d",s);
return 0;
}
應該沒錯把,樓主有什麼問題可以發消息給我
⑷ 急求全國計算機二級考試C語言上機題庫(10年9月份考的),要有題帶答案的
LZ郵箱我就不發了,告訴你網站
http://www.shangxueba.com/share/s23.html
自己去裡面下載吧!
記得加分哦。。。呵呵
⑸ 跪求近幾年全國計算機等級考試二級C語言筆試和上級真題及答案解析,謝謝!!
推薦資料:
北京郵電大學出版社出版的最好。
考點復習:《全國計算機等級考試考眼分析與樣卷解析——二級C語言》
上機復習:《全國計算機等級考試上機考試與題庫解析——二級C語言》
真題復習:《全國計算機等級考試歷年真題必練(含關鍵考點點評)——二級C語言》
沖刺模擬:《全國計算機等級考試6日達標——二級C語言》
不錯,很便宜,過關率高,值得使用。
⑹ 求一份2012c語言上機題庫100套題,帶答案,要word版的,謝謝,收到追加分,好人一生平安~~
還要嗎 [http://wenku..com/view/785e871f964bcf84b9d57b1f.html]連接一下自己下 希望對你有用!!
⑺ 2007年計算機等級考試二級C語言上機試題(1-8套) 有 答案 嗎急用,謝謝!
http://www.isud.com.cn/down.asp?cat_id=13&class_id=53
本分類共有96個文件
『計算機』2007年計算機二級C語言上機考試試題(1-8套..
·2007年計算機二級C語言上機考試試題(1-8套)
軟體大小:未知 授權方式:免費下載 下載:5118 推薦程度:
『計算機』全國計算機等級考試一級試題及答案
·1. 微型計算機硬體系統中最核心的部件是( ).B A,主板 B,CPU C,內存儲器 D,I/O設備 2. 下列術語中,屬於顯示器性能指標的是( ).C A,速度 B,可靠性 C......
軟體大小:未知 授權方式:免費下載 下載:5208 推薦程度:
『計算機等級題』全國計算機等級考試一級試題庫
·全國計算機等級考試一級試題庫(答案在題號前面) D(1)引導型病毒程序被存放在 A)最後1個扇區中 B)第2物理扇區中 C)數據扇區中 D)引導扇區中 C(2)文件被感染上病......
軟體大小:未知 授權方式:免費下載 下載:2638 推薦程度:
『計算機等級題』全國計算機等級考試一級試題及答案
·全國計算機等級考試一級試題及答案 1. 微型計算機硬體系統中最核心的部件是( ).B A,主板 B,CPU C,內存儲器 D,I/O設備 2. 下列術語中,屬於顯示器性能指標......
軟體大小:未知 授權方式:免費下載 下載:2091 推薦程度:
『計算機等級題』2004年9月全國計算機等級考試二級C筆試試題..
·2004年9月全國計算機等級考試二級C筆試試題 11.用C語言編寫的代碼程序 A)可立即執行 B)是一個源程序 C)經過編譯即可執行 D)經過編譯解釋才能執行 12.......
軟體大小:未知 授權方式:免費下載 下載:588 推薦程度:
『計算機等級題』全國計算機等級考試一級B模擬試題五
·全國計算機等級考試一級B模擬試題五 (1)我國第一台電子計算機誕生於哪一年 A)1948年 B)1958年 C)1966年 D)1968年【答案】:B 【解析】:我國自......
軟體大小:未知 授權方式:免費下載 下載:550 推薦程度:
『計算機等級題』2004年4月全國計算機等級考試二級C語言筆試..
·2004年4月全國計算機等級考試二級C語言筆試試題基礎知識和C語言程序設計一, 選擇題((1)~(40)每題1分,(41)~(50)每題2分,共60分) 1, 1MB等於......
軟體大小:未知 授權方式:免費下載 下載:481 推薦程度:
『計算機等級題』06年計算機等級考試一級B考試試題及試題分析..
·06年計算機等級考試一級B考試試題及試題分析 1.計算機根據運算速度,存儲能力,功能強弱,配套設備等因素可劃分為(). A)台式計算機,攜帶型計算機,膝上型計算機 B)電......
軟體大小:未知 授權方式:免費下載 下載:888 推薦程度:
『計算機等級題』廣東省計算機等級考試(一級)模擬試題(F)
·廣東省計算機等級考試(一級)模擬試題(F) (考試時間:100分鍾) 系 班 級 學 號 姓 名 說明:(1)請考生在D盤根目錄下建立以自己學號命名文件夾(考生......
軟體大小:未知 授權方式:免費下載 下載:664 推薦程度:
『計算機等級題』計算機等級考試三級網路試題
·計算機等級考試三級網路試題 04年9月 教育部考試中心 版權所有一,選擇題(每小題1分,共60分) 下列各題A,B,C,D四個選項中,只有一個選項是正確的.請將正確選項塗寫......
軟體大小:未知 授權方式:免費下載 下載:634 推薦程度:
『計算機等級題』全國計算機等級考試四級筆試試題
·一,選擇題:((1)-(90))題,分為1分題和2分題,滿分120分.除標注2分題外,其它均為1分題.) 下列各題A),B),C),D)四個選項中,只有一個是正確的,請將正確選項......
軟體大小:未知 授權方式:免費下載 下載:298 推薦程度:
『計算機等級題』計算機等級考試上機模擬試題匯總
·計算機等級考試上機模擬試題匯總模擬試題(一) 1.填空題請補充函數fun(),該函數的功能是:把從主函數中輸入的字元串str2接在字元串str1的後面. 例如:str1......
軟體大小:未知 授權方式:免費下載 下載:778 推薦程度:
『計算機等級題』計算機等級考試二級模擬試題4基礎知識與FOX..
·計算機等級考試二級模擬試題4 基礎知識與FOXBASE程序設計 (考試時間120分鍾,滿分100分) 一,選擇題((1)-(40)每個選項1分,(41)-(50)每個選項......
軟體大小:未知 授權方式:免費下載 下載:330 推薦程度:
『計算機等級題』2005年4月全國計算機等級考試二級筆試試題A..
·2005年4月全國計算機等級考試二級筆試試題 Access 資料庫程序設計 一,選擇題(每小題 2 分,共 70 分) 下列各題 A),B),C),D)四個選項中,只有一......
軟體大小:未知 授權方式:免費下載 下載:420 推薦程度:
『計算機等級題』2006年4月全國計算機等級考試二級VFP試題及..
·2006年4月全國計算機等級考試二級VFP試題及答案 (考試時間90分鍾,滿分100分) 一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一......
軟體大小:未知 授權方式:免費下載 下載:583 推薦程度:
『計算機等級題』計算機等級考試二級VFp筆試試題
·計算機等級考試二級VFp筆試試題 一,選擇題((1)~(35)每小題2分,共70分)下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在大題卡 相......
軟體大小:未知 授權方式:免費下載 下載:297 推薦程度:
『計算機等級題』全國計算機等級考試二級VFp筆試試題(含答案..
·全國計算機等級考試二級VFp筆試試題(含答案) 一,選擇題((1)~(35)每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將......
軟體大小:未知 授權方式:免費下載 下載:356 推薦程度:
『計算機等級題』全國計算機等級考試二級VB上機試題
·全國計算機等級考試二級VB上機試題 (考試時間90分鍾,滿分100分) 1. 基本操作(2小題,每小題15分,共計30分) 注意:下面出現的"考生文件夾"均為%USER% ......
軟體大小:未知 授權方式:免費下載 下載:461 推薦程度:
『計算機等級題』全國計算機等級考試二級C筆試試題
·9月全國計算機等級考試二級C筆試試題 1.與十進制數200等值的十六進制數為 A) A8 B)A4 C)C8 D)C4 2.DOS文件系統的組織結構屬於 A)星......
軟體大小:未知 授權方式:免費下載 下載:213 推薦程度:
『計算機等級題』計算機等級考試試卷二級VFP試題及答案
·計算機等級考試試卷二級VFP試題及答案一,選擇題((1)~(35)每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答......
軟體大小:未知 授權方式:免費下載 下載:286 推薦程度:
『計算機等級題』全國計算機等級三級C語言上機試題解析
·全國計算機等級三級C語言上機試題解析三級網路技術和三級資料庫技術的C語言上機試題難度較大,題型多樣,因此頗難掌握,今將這些試題分類解析,希望能幫大家順利通過上機考試. 三級......
軟體大小:未知 授權方式:免費下載 下載:231 推薦程度:
『計算機等級題』計算機等級二級C語言模擬試題
·計算機等級二級C語言模擬試題一,選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,......
軟體大小:未知 授權方式:免費下載 下載:215 推薦程度:
『計算機等級題』計算機等級考試二級VB全真模擬試題含答案(2..
·計算機等級考試二級VB全真模擬試題含答案(2) 一,選擇題 (1)—(35)題每題2分,共70分. 下列各題A),B),C),D)四個先項中,只有一個選擇是正確的,請將正......
軟體大小:未知 授權方式:免費下載 下載:308 推薦程度:
『計算機等級題』2007年9月計算機等級考試二級VB標准模擬試題..
·2007年9月計算機等級考試二級VB標准模擬試題 ,選擇題1~20每小題2分,21~30每小題3分,共70分 1.在窗體中添加一個命令按鈕,並編寫如下程序: Private ......
軟體大小:未知 授權方式:免費下載 下載:461 推薦程度:
『計算機等級題』2006年4月全國計算機等級考試二級VB程序設計..
·2006年4月全國計算機等級考試二級VB程序設計試題及答案一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的.請將正確選項填塗......
軟體大小:未知 授權方式:免費下載 下載:237 推薦程度:
『計算機等級題』湖南省非計算機專業等級考試試題(FOXPRO一級..
·湖南省非計算機專業等級考試試題(FOXPRO一級選擇題) 1, 要求一個資料庫文件的數值型欄位具有5位小數,那麼該欄位的寬度最少應當定為( ) A,5位 B,6位 C,7位 D......
軟體大小:未知 授權方式:免費下載 下載:1649 推薦程度:
『計算機等級題』全國計算機等級考試一級考試最新模擬試題
·1,設Windows處於系統默認狀態,在Word 97編輯狀態下,移動滑鼠至文檔行首空白處(文本選定區)連擊左鍵三下,結果會選擇文檔的______. A:一句話 B:一行 ......
軟體大小:未知 授權方式:免費下載 下載:195 推薦程度:
『計算機等級題』雲南省計算機等級考試(二級C)模擬試卷試題五..
·雲南省計算機等級考試(二級C)模擬試卷試題五第一卷第一部分:綜合基礎知識(共30分,每項1分) 1. 在下列設備中,不能作為微型計算機的輸出設備的是____. A.列印......
軟體大小:未知 授權方式:免費下載 下載:232 推薦程度:
『計算機等級題』計算機等級考試模擬題(第一套)
·計算機等級考試模擬題(第一套) 判斷正誤題目前常用的國產品牌機是聯想,金長城等.(√ ) 第一部內存儲程序計算機是用匯編語言來設計程序.(×) 二進制數01100101轉......
軟體大小:未知 授權方式:免費下載 下載:379 推薦程度:
『計算機等級題』江蘇省計算機軟體項目開發水平等級考試模擬..
·江蘇省計算機軟體項目開發水平等級考試模擬試題《程序設計》(Java開發員) 考試說明:卷面分100分;時間2小時考生務必將自己的數據文件存放在D盤上,並以自己的考號命名文......
軟體大小:未知 授權方式:免費下載 下載:171 推薦程度:
http://www.zhaoshiti.com.cn/Soft/List.asp?cat_id=53
2007-09-21 2007年9月計算機等級考試二級VB標准模擬試題
2007年9月計算機等級考試二級VB標准模擬試題 ,選擇題1~20每小題2分,21~30每小題3分,共70分 1.在窗體中添加一個命令按鈕,並編寫如下程序: Private Sub Command1Click() X=1:Y=2:Z=3 X=Y:Y=Z:Z=X Print Z End Sub 程序執行後,輸出的結果是()(本題分值:1分) A.3 B.0 C.2 D.1 【正確答案】C 2.下列敘述不正..
推薦程度:授權方式:免費軟體軟體大小:未知下載:82
2007-12-20 微型計算機介面技術復習資料
匯流排 • 匯流排是一組公共的信號傳輸線,用於連接計算機各個部件。 • 位於晶元內部的匯流排稱為內部匯流排。 • 連接微處理器與存儲器、輸入輸出介面,用以構成完整的微型計算機的匯流排稱為系統匯流排(有時也稱為外部匯流排)。 • 微型計算機的系統匯流排分為數據匯流排、地址匯流排和控制匯流排三組。 ……
推薦程度:授權方式:免費軟體軟體大小:未知下載:8
2007-09-21 江蘇省計算機軟體項目開發水平等級考試模擬試題
江蘇省計算機軟體項目開發水平等級考試模擬試題《實際項目開發》(Delphi開發師) 考試時間: 8小時,卷面分:100分項目名稱:招評標管理及決策信息系統要求:根據《招評標管理及決策信息系統需求分析說明書》設計和開發系統,所有文檔必須齊全,格式見文檔模板. (說明:由於時間要求,考試通常分成如下A,B兩類,本試題屬於B類...
推薦程度:授權方式:免費軟體軟體大小:未知下載:17
2007-09-21 江蘇省計算機軟體項目開發水平等級考試模擬試題
江蘇省計算機軟體項目開發水平等級考試模擬試題《程序設計》(Java開發員) 考試說明:卷面分100分;時間2小時考生務必將自己的數據文件存放在D盤上,並以自己的考號命名文件夾. 開發員程序設計題: (1) 試用遞歸演算法求出Fibonacci數列:1,1,2,3,5,8,……的第40個數,即 F1 = 1 (n=1) F2 = 1 (n=2) Fn = Fn-1 +Fn-2 (n>=3..
推薦程度:授權方式:免費軟體軟體大小:未知下載:13
2007-09-21 計算機等級考試模擬題(第一套)
計算機等級考試模擬題(第一套) 判斷正誤題目前常用的國產品牌機是聯想,金長城等.(√ ) 第一部內存儲程序計算機是用匯編語言來設計程序.(×) 二進制數01100101轉換成十六進制數是65.(√) 第二代計算機是電子管為主要邏輯元件,體積大電路復雜且易出故障.(×) 十進制數120轉換成二進制數是1111000.(√) 微處理器就是微..
推薦程度:授權方式:免費軟體軟體大小:未知下載:21
2007-09-21 雲南省計算機等級考試(二級C)模擬試卷試題五
雲南省計算機等級考試(二級C)模擬試卷試題五第一卷第一部分:綜合基礎知識(共30分,每項1分) 1. 在下列設備中,不能作為微型計算機的輸出設備的是____. A.列印機 B.顯示器 C.繪圖儀 D.鍵盤 2. 二進制數101110轉換為等值的八進制數是____. A.45 B.56 C.67 D.78 3. 微型計算機中,普遍使用的字元編碼是____. A.補..
推薦程度:授權方式:免費軟體軟體大小:未知下載:15
2007-09-21 全國計算機等級考試一級考試最新模擬試題
1,設Windows處於系統默認狀態,在Word 97編輯狀態下,移動滑鼠至文檔行首空白處(文本選定區)連擊左鍵三下,結果會選擇文檔的______. A:一句話 B:一行 C:一段 D:全文 2,如果你的計算機已接入Internet,用戶名為Zhs,而連接的服務商主機域名為Public.tpt.cn,則你的E-mail地址應該是_______. 3,在Word編輯狀態下,若想將..
推薦程度:授權方式:免費軟體軟體大小:未知下載:22
2007-09-21 湖南省非計算機專業等級考試試題(FOXPRO一級選擇題)
湖南省非計算機專業等級考試試題(FOXPRO一級選擇題) 1, 要求一個資料庫文件的數值型欄位具有5位小數,那麼該欄位的寬度最少應當定為( ) A,5位 B,6位 C,7位 D,8位 2,某數值型欄位的寬度定為6,小數位為2,該欄位所能存放的最小數值是( ) A,0 B,-999.99 C,-99.99 D,-9999.99 3,可以使用5種不同的數據類型描述資料庫文件中的..
推薦程度:授權方式:免費軟體軟體大小:未知下載:21
2007-09-21 2006年4月全國計算機等級考試二級VB程序設計試題及答案
2006年4月全國計算機等級考試二級VB程序設計試題及答案一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的.請將正確選項填塗在答題卡相應位置上,答在試卷上不得分. (1)下列選項中不屬於結構化程序設計方法的是. A) 自頂向下B) 逐步求精 C) 模塊化D) 可復用 (2)兩個或兩個以上模塊之間..
推薦程度:授權方式:免費軟體軟體大小:未知下載:18
2007-09-21 計算機等級考試二級VB全真模擬試題含答案(2)
計算機等級考試二級VB全真模擬試題含答案(2) 一,選擇題 (1)—(35)題每題2分,共70分. 下列各題A),B),C),D)四個先項中,只有一個選擇是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分. (1) 下列不能打開屬性窗口的操作是 . A) 執行"視圖"菜單中的"屬性窗口"命令 B) 按F4鍵 C) 按Ctrl+T D) 單擊工..
推薦程度:授權方式:免費軟體軟體大小:未知下載:25
首頁 上一頁 1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
⑻ 2010計算機二級c語言上機題庫 要原題的 急急急 在線等
一、改錯題
【分析】:改錯題的錯誤一般可分為兩類,一類是語法錯誤,這類錯誤可通過調試程序改正,較容易;另一類是邏輯錯誤,這類錯誤程序能運行,但結果不正確,這類錯誤相對較難,修改前必須要看懂和理解程序。
#include"stdio.h"
#define n 4 #define m 3 /*語法錯,#define m 3需另起一行*/
int a[n][m],s[m];
p(int j)/*此函數的功能為:找出a數組中第j列的最小元素的值及行號,函數成功運行後,i中即為j列的最小元素的行號,s[j]中即為j列的最小元素的值*/
{int k,i,x;
x=a[0][j];i=0; /*邏輯錯,從函數的功能可知,a[0][j]也應賦值給s[j],所以x=a[0][j]應改為s[j]=x=a[0][j]*/
for(k=1;k<N;K++)< p>
if(a[k][j]<X)< p>
{i=k;s[j]=x=a[k][j];}
return i;
}
main()
{int index[m],i,j,k;
for(i=0;i<N;I++)< p>
for(j=0;j<M;J++)< p>
scanf("%d",a[i][j]);/*語法錯,但編譯時不會報錯,scanf語句的一般形式為scanf(格式控制,地址表列),所以a[i][j]應改為&a[i][j])*/
for(j=0,j<M;J++)< p>
{index[j]=p[j];
printf("a[%d,%d]=%d\n",index[j],j,s[j]);
}
i=s[1];k=0; /*邏輯錯,數組s中存放的是a數組中每一列的最小值,比較時應從數組的第0個元素開始,而下面的for循環是從第1個元素開始的,所以i=s[1]應改為i=s[0]*/
for(j=1;j<>
if(s[j]<I)< p>
{i=s[j];k=j;}
printf("min=a[%d,%d]=%d",index[k],k,i); }
二、編程題
【分析】:本題的主要功能是建立一個3行8列的二維數組,並給其元素賦值,其中第1、2行的值可通過遞推公式xi+1=(25*xi+357)%1024得到,第三行的值取前兩行同列元素的最大公約數,所以編程時可用一個函數來實現求公約數的演算法。
#include
#include
#define n 8
/*函數gcd實現求最大公約數的演算法*/
gcd(int a,int b)
{int c;
while(b!=0)
{c=a%b;a=b;b=c;}
return a;
}
main()
{int i,j,x,a[3][n];
FILE *f;
if((f=fopen("d:\\temp\\1\\myf2.out","w"))= =NULL)
{printf("Create File myf2.out Failed!\n");exit(0);}
x=26;
/*下面二重for循環實現給第1、2行數組元素賦值的功能*/
for(i=0;i<2;i++)
for(j=0;j<N;J++)< p>
{a[i][j]=x;x=(25*x+357)%1024;}
/*下面for循環通過調用gcd函數實現給第3行數組元素賦值的功能*/
for(j=0;j<N;J++)< p>
a[2][j]=gcd(a[0][j],a[1][j]);
/*下面for循環實現按題目所給格式輸出二維數組的功能*/
for(i=0;i<3;i++)
{for(j=0;j<>
fprintf(f,"\n");
}
fclose(f); }
2010年計算機等級考試二級C語言上機習題(2)
一、改錯題
【知識點】整數數位處理、數字字元與相應數字的轉換、程序調式
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
使用putchar函數必須在程序開頭加上文件包含#include "stdio.h";scanf語句中必須是地址序列,故scanf("num=%d",num);應改為scanf("num=%d",&num);,且調式時注意將「num=」原樣輸入;某數字若轉換為相應數字字元,應加上字元'0'或48(字元'0'的ASCII碼值),故digit[n++]=m%10;應改為digit[n++]=m%10+'0';;最後輸出時,n已在前面多加了一次,故而輸出時應先減1,故for(;n>=0;n--)中第一個表達式應加上n--或--n或n=n-1。
【答案】①在程序開頭加上#include "stdio.h"
②將原第五行的scanf("num=%d",num);改為scanf("num=%d",&num);
③將原第十一行的digit[n++]=m%10;改為digit[n++]=m%10+'0';
④將原第十六行的for(;n>=0;n--)改為for(n--;n>=0;n--)
二、編程題
【知識點】字元串應用、數據文件的使用
【解析】注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int compress(char s[])
{int n,k=0,count=0;
if(s[0]!=NULL) n=k+1;
while(s[n]!=NULL)
{if(s[k]= =s[n]){n++;count++;}
else {s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("A:\\myf2.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp); }
運行結果如下:
@ I wil sucesful & and you to ! #
2010年計算機等級考試二級C語言上機習題(3)
一、改錯題
【知識點】選擇法排序、指針與字元串、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
本題要求「從鍵盤上接受一個含有空格的字元串」,scanf是做不到的,它遇到第一個空格即認為讀入完畢,故應替換成gets函數;程序中使用了strcpy函數,就必須在程序開頭加上文件包含#include "string.h";根據選擇法升序排序要領,每次找到一個「更小的字元」由r指著,直到指向最小的為止,而不是修改r所指字元的值,故if(*r>*q)*r=*q;應改為if(*r>*q) r=q;;當r與p所指不同時,交換二者所指字元的值,即使得p所指字元為每次的最小,故應將if(r/=p)改為if(r!=p)。
【答案】①在程序開頭加上文件包含#include "string.h"
②將原第五行的scanf("%s",str);改為gets(str);
③將原第八行的*r=*q; 改為r=q;
④將原第九行的if(r/=p)改為if(r!=p)
二、編程題
【知識點】二維數組的應用、數據文件的使用
【解析】 關於「二維數組應用」的題目,一般都要仔細觀察,找出規律後再編程。本題中原數組的任意一個元素a[i][j]旋轉後,位置處於b中第3-j行i列。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int rotate(int a[4][4],int b[4][4]);
main()
{FILE *fp;
int i,j,x[4][4],y[4][4],s;
fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't create file myf2.out!");
exit(1);}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&x[i][j]);
s=rotate(x,y);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
fprintf(fp,"%d ",y[i][j]);
fprintf(fp,"\n");
}
fprintf(fp,"sum=%d\n",s);
fclose(fp);
}
int rotate(int a[4][4],int b[4][4])
{int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++) s+=b[i][i];
return s; }
2010年計算機等級考試二級C語言上機習題(4)
一、改錯題
含有錯誤的源程序如下:
void match(char *pat,char str) ①
{char *p=pat,*q=str;
int i=0; ②
while((*p!=NULL)&&(*q!=NULL))
if(*p= =*q||*p= ='?')p++,q++;
else if(*p= ='*')
{p++;
while(*q!=*p&&*q!=NULL)q++;
}
else i=0;break; ③
if(*p!=NULL||*q!=NULL)i=0;
return i;
}
}
【知識點】字元串處理、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報Success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
程序中用到系統預設的符號常量NULL,又未加「文件包含」處理,按F9後即編譯時系統會報錯,故應在最前面加上include 或將以下全部NULL改為0。函數match分明有返回值,故系統也會報錯,應將void改為int;變數i的作用是:當匹配時取值1,否則取值0,根據③處,易於發現i初值應取1,故②處應改為i=1,當發現不匹配時,立即置為0,並跳出循環,此兩句應是一個整體,應構成復合語句。②③均為邏輯錯誤。
【答案】(1)在最前面加上include 或將以下全部NULL改為0
(2)加下劃線的部分改為:
①int match(char *pat, char *str)
②i=1
③{ i=0;break;}
二、編程題
【知識點】窮舉法、數據文件的使用
【解析】將30~50之間的每一個數都進行判斷,就不會有遺漏。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include
int inv(int x)
{int y;
y=x/10+x%10*10; /*此句可將某兩位正整數的十位與個位數字換位*/
return y;
}
main()
{FILE *out;
int i,j;
if((out=fopen("A:\\myf2.out","w"))= =NULL)
{printf("Open file myf2.out failed!\n");exit(1);}
for(i=30;i<50;i++)
for(j=30;j<50;j++)
if((i/10!=i%10)&&(i*j= =inv(i)*inv(j))) /* i/10!=i%10確保十位與個位數字不同*/
fprintf(out,"%d*%d=%d*%d\n",i,j,inv(i),inv(j));
fclose(out); }
2010年計算機等級考試二級C語言上機習題(5)
一、改錯題
【分析】:對於改錯題的程序中的錯誤一般可分為兩類,一類是語法錯誤,程序中的語句不符合C語言的語法,拼寫錯誤,這類的錯誤可通過調試程序改正。另一類是邏輯錯誤,程序調試已通過,但運行結果不正確,這類錯誤的修改必須要看懂和理解程序。
#include
#define N 50
void sum(int n,int *pa)
/*屬第一類錯誤。若聲明為void類型,則該函數沒有返回值,但程序要求返回前n的和,所以類型聲明不正確,應改為: int 或去掉*/
{ int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<N)< p>
{ temp=*(pa-1)**pa;
if(temp<10)
{ total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count
/*屬第二類錯誤。若乘積為兩位數,已把其十位數字作為數列的後續項,但若數列的個數沒有超過n時,將該乘積個位數字作為數列的後續項。*++pa 與*pa++不同,此處應為: *++pa */
}
}
return total;
}
main()
{ int tol,n,i,num[n];
/*屬第一類錯誤。數組的聲明不正確,數組的下標必須為常量或常量標識符。應改為:num[N] 或 num[50] */
do
{ printf("Input n=?(2<N<50)");< p>
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(N,num);
/*屬第二類錯誤。本題要求生成數列的前n(n<50)項,而N是常量。應改為:sum(n,num) */
for(i=0;i<N;I++)< p>
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
2010年計算機等級考試二級C語言上機習題(6)
一、改錯題
含有錯誤的源程序:
#include
#include
#define N 5
struct student
{ char name[10];
int score;
} ―――――――――――①
void sort(struct student stud[],int n)
{ int i,j;
struct student p;
for(i=1;i<>
{ p=stud[i];
for(j=i-1;j>0 && p>stud[j];j--) ―――――――――――③
stud[j+1]=stud[j];
stud[j+1]=p;
}
}
void main()
{ struct student stud[N]={"aaa",60,"bbb",90,"ccc",85,"ddd",65,"yyy",77};
int i;
sort(stud,N);
printf("sorted data:\n");
for(i=0;i< printf(?%s\t%d\n?,stud[i]);>
}
【知識點】結構體、排序
【難點】 插入法排序
【解析】本題是將未排序的數組元素採用插入排序方法進行排序,其思想是:從第2個元素開始,最初與第一個元素進行比較,由大到小排列在適當位置,成為排好序的數組元素一員。再依次將待排序的元素與前面已排好序的元素從後向前進行比較,如果大於該元素,則該元素向後移一位,直到待排序的元素小於已排好序的某一元素,則直接插入到該元素之後。直到待排序的元素全部完成為止。本程序的sort函數中i表示待排序的元素下標,j表示已排好序的元素下標。
【答案】(1)標號①:} 改為 }; (2)標號②:for(i=1;i
(3)標號③:for(j=i-1;j>0 && p>stud[j];j--) 改為 j>=0 && p.score>stud[j].score;j--)
(4) 標號④:printf("%s\t%d\n",stud[i]); 改為printf("%s\t%d\n",stud[i].name,stud[i].score );
二、編程題
【知識點】字元串操作、函數、文件
【解析】仔細閱讀並分析【編程要求】。【編程要求1】已對函數Replace_string指定了函數名、函數類型、形參類型和個數,並詳細說明了其功能。在line指向的字元串中查找str1指向的字元子串的關鍵語句是當「str1[j]= =line[loc]&&str1[j]!='\0'」時繼續循環查找,當 因「str1[j]!='\0'」退出循環時,則找到str1指向的字元子串,此時用str2指向的字元串替換在line中的str1字元子串,返回。【編程要求2】編寫主函數主要功能要求是保存結果到數據文件、調用Replace_string函數、輸入測試數據。這部分是最常規和基本的要求,必須掌握。
【參考答案】
#include
#include
int Replace_string (char line[],char str1[],char str2[])
{ int i=0,j,loc;
char temp[80];
while(i<=strlen(line)-strlen(str2))
{ j=0;loc=i;
while(str1[j]= =line[loc]&&str1[j]!='\0')
{ loc++;j++;}
if(str1[j]= ='\0')
{strcpy(temp,&line[loc]);strcpy(&line[i],str2);
i+=strlen(str2);strcpy(&line[loc],temp);
return 1;
}
else i++;
}
return 0;
}
main()
{ FILE *fp;
char string[100]="My EXAM_number is 0112404321.";
char number[11]="0112404321",num[11];
fp=fopen("myf2.out","w");
fprintf(fp,"%s\n",string);
gets(num);
Replace_string (string,number,num);
fprintf(fp,"%s\n",string);
fprintf(fp,"\n my exam number is: %s\n","0112404321");
fclose(fp); }
2010年計算機等級考試二級C語言上機習題(7)
一、改錯題
含有錯誤的源程序如下:
#include
#include
struct T
{char name [20],num[20];
};
void sort(struct T items[],int low,int high)
{struct T temp;
int k,j;
for(k=low;k<HIGH;K++)< p>
for(j=low;j<>
if(items[j].name>items[j+1].name) ②
{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}
}
void main(void)
{struct T stu[4]={"Wang","6723","Cai","2106","Zhang", ③
"5129","Chang","4512","An","6868"};
int k;
sort(stu,0,4);
printf("The Sorted Array:\n");
for(k=0;k<5;k++)
printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num); ④
}
【知識點】冒泡排序、結構體數組、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
本題使用起泡法完成排序,①處j<HIGH-K-1等價與J<=HIGH-K-2,J最大取HIGH-K-2時,J+1才取到HIGH-K-1,例如,剛開始當K為0時,最後一個比較的元素下標為HIGH-1,而實際上根據實參(值已為4)傳遞而來的最後一個元素的下標應為HIGH,故①處應改為J<HIGH-K或J<=HIGH-K-1,此為邏輯錯誤。②③④處均屬於語法錯誤:字元串的比較不能使用關系運算符,要藉助STRCMP函數;所賦值有5個,數組維數就必須大於等於5;STU[K]不是指針,不能用指向成員符描述成員。< p>
【答案】加下劃線的部分改為:
①j<HIGH-K或J<=HIGH-K-1< p>
②if(strcmp(items[j].name, items[j+1].name)>0)
③stu[5]
④stu[k].name, stu[k].num
2010年計算機等級考試二級C語言上機習題(7)
二、編程題
【知識點】字元串處理、函數調用、數據文件的使用
【解析】編程題的結果一般都是客觀的,這樣便於老師主觀閱卷評分,雖然考生個人的准考證號是各異的,對評閱老師卻是可以通過所交磁碟標簽直接觀察到,故必須如實輸入,不能直接套用題中例子。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include
#include
#include
void count(char a[],char w[][10],int n,int b[])
{int i=0,j,k=0;char s[10];
for(i=0;a[i]!=0;i++)
{if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函數用於判斷字元是否為字母*/
/*此句將連續字母組成的一個單詞存放於s中,便於與二維數組中的某一行進行比較*/
else
{s[k]= '\0'; /*加上'\0'才能使s中存放的是字元串,才能使用strcmp函數進行比較*/
for(j=0;j<N;J++)< p>
if(strcmp(s,w[j])= =0){b[j]++;break;}
k=0; /*讓s重新存放另一個單詞*/
}
}
}
main()
{FILE *fp;
char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};
/*按要求初始化,用二維字元數組的一行存放一個單詞便於後面比較處理*/
int c[6]={0},m;
count(line,word,6,c);fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't open file");exit(1);}
for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);
fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意輸入實際准考證號*/
fclose(fp);
}
⑼ 求2010年9月計算機二級C語言筆試和上機考試題庫
模擬試題(一)
1.填空題
請補充函數fun(),該函數的功能是:把從主函數中輸入的字元串str2接在字元串str1的後面。
例如:str1=「How do」,str2=「 you do?」,結果輸出:How do you do?
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#define N 40
void fun(char *str1,char *str2)
{
int i=0;
char *p1=str1;
char *p2=str2;
while(【1】)
i++;
for( ;【2】;i++)
*(p1+i)=【3】;
*(p1+i)='\0';
}
main()
{
char str1[N],str2[N];
clrscr();
printf("*****Input the string str1 &
str2*****\n");
printf(" \nstr1:");
gets(str1);
printf(" \nstr2:");
gets(str2);
printf("**The string str1 & str2**\n");
puts(str1);
puts(str2);
fun(str1,str2);
printf("*****The new string *****\n");
puts(str1);
}
答案及評析:
【1】*(p1+i) 【2】*p2 【3】*p2++
【解析】填空1:變數i用來記錄字元串str1的長度,當指針指到字元串str1結束標志符『\0'時,while循環結束,變數i停止累加。填空2:指針p2指向字元串str2,通過for循環將字元串str2接在str1後面,循環結束的條件是指針p2所指的字元是字元串結束標志符『\0'。填空3:指針p2最初指向字元串str2的首字元,通過自加1,使指針p2依次向後移動,指向str2的各個字元,實現將字元串str2接在str1後面的功能。
2. 改錯題
下列給定程序中,函數fun()的作用是:將字元串tt中的小寫字母都改為對應的大寫字母,其他字元不變。例如,若輸入"edS,dAd",則輸出"EDS,DAD"。
請改正程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
/**********************found***********************/
char fun(char tt[])
{
int i;
for(i=0;tt[i];i++)
{
/**********************found***********************/
if((tt[i]>='A')&&(tt[i]<= 'Z'))
tt[i]-=32;
}
return(tt);
}
main()
{
int i;
char tt[81];
clrscr();
printf("\nPlease enter a string: ");
gets(tt);
printf("\nThe result string is: \n%s",fun(tt));
}
答案及評析:
(1)錯誤:char fun(char tt[])
正確:char *fun(char tt[])
(2)錯誤:if((tt[i]>='A')&&(tt[i]<= 'Z'))
正確:if((tt[i]>='a')&&(tt[i]<= 'z'))
【解析】錯誤1:函數的返回值是字元串的首地址,是指針類型,所以在函數名前要加'*'號。
錯誤2:題目要求將小寫字母改為大寫字母,所以if語句的判斷條件是小寫字母。
3. 編程題
請編寫函數fun(),該函數的功能是:移動一維數組中的內容,若數組中有n個整數,要求把下標從p到n-1(p≤n-1)的數組元素平移到數組的前面。
例如,一維數組中的原始內容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動後,一維數組中的內容應為7,8,9,10,10,11,12,13,14,15,1,2,3,4,5,6。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括弧中填入所編寫的若干語句。
試題程序:
#include <stdio.h>
#define N 80
void fun(int *w, int p, int n)
{
}
main()
{
int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i, p, n=15;
printf("The original data:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnter p: ");
scanf("%d",&p);
fun(a,p,n);
printf("\nThe data after moving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
答案及評析:
void fun(int *w, int p, int n)
{
int i,j,t;
for(i=p;i<=n-1;i++) /*循環右移n-p次*/
{t=w[n-1];
for(j=n-2;j>=0;j--) /*實現循環右移*/
w[j+1]=w[j];
w[0]=t;
}
}
【解析】本題採用"循環右移"的演算法。和我們在前面分析的稍有不同的是,一個是整型數組,一個是字元型數組。
⑽ C語言的題
計算級數和1/(1*3+2/(3*5)+3/(5*7)+…+n/(2*n-1)*(2*n+1)):
#include<stdio.h>
void main()
{
float sum=0;
int i,n;
printf("input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=(i*1.0)/((2*i-1)*(2*i+1));
}
printf("sum=%f",sum);
}
計算s=1+x+x^2/2!+x^3/3!+…直到某項的絕對值小於0.0005為止,x的值從鍵盤輸入
#include<stdio.h>
void main()
{
float sum=0,n;
int i,m,x,xx;
printf("input x:");
scanf("%d",&x);
for(i=1,xx=1,m=1,n=1;n>0.00005;i++)
{
n=(xx*1.0/m);
sum+=n;
xx*=x;
m*=i;
}
printf("sum=%f",sum);
}
計算s=1+2!+3!+4!+5!+6!+7!+8!的值。
#include<stdio.h>
void main()
{
float sum=0,n;
int i,m;
for(i=1,m=1;i<=8;i++)
{
m*=i;
n=1.0/m;
sum+=n;
}
printf("sum=%f",sum);
}
求滿足2+4+6+ … +n>1000時的最小n及s值.
#include<stdio.h>
void main()
{
int n=0,s=0;
while(s<1000)
{
n+=2;
s+=n;
}
printf("n=%d s=%d",n,s);
}
