當前位置:首頁 » 編程語言 » 計算機c語言期中試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

計算機c語言期中試題

發布時間: 2022-08-12 13:08:41

① 北京工業大學計算機專業近幾年c語言期末考試題

北京工業大學實驗學院2012―2013學年第 一 學期
《計算機導論》(A)卷課程試卷
適用專業:計算機科學與技術 考試方式:機考 考試時間 :2012 年12 月
班級學號 12570219 姓名: 李志偉 成績
得分登記(由閱卷教師填寫)
題號 一 二 三 四
分數
考生須知:
提交考試結果:
編程題,將程序源代碼粘貼到試卷相應題目下端,以學號姓名命名文件。

選擇或填空題(每小題2分共20分)
1.完整的計算機系統應包括( B )。
A.主機和外部設備 B.硬體系統和軟體系統
C.操作系統和應用軟體系統 D.輸入設備和輸出設備
2.以下敘述正確的是 。
A.do-while語句構成的循環不能用其它語句構成的循環來代替。
B.do-while語句構成的循環只能用break語句退出。
C.用do-while語句構成的循環,在while後的表達式為非零時結束循環。
D.用do-while語句構成的循環,在while後的表達式為零時結束循環。
3. C語言中運算對象必須是整型的運算符是 。
A. %=
B. / C. =
D. *
4.將高級語言編寫的程序翻譯成機器語言程序,採用的兩種翻譯方式是
A. 編譯和解釋 B. 編譯和匯編
C. 編譯和鏈接 D. 解釋和匯編
5. 微型計算機系統的中央處理器是由 組成的
A. 內存儲器和控制器 B. 主存儲器和運算器
C. 控制器和運算器 D. 內存儲器.控制器和運算器
6.以下符號在C語言中 不能用作用戶標識符。
A. _256
B. 3char C.
abc D. ds3
7. 計算機能直接執行的程序設計語言是 。
A. C B. BASIC
C. 機器語言 D.匯編語言
8. 下列能正確表示a≥10或a≤0的關系表達式是_______。
A. a>=10or a<=0 B. a>=10 | a<=0
C. a>=10 || a<=0 D. a>=10 && a<=0

9.C語言中用 1 表示邏輯值「真」,用 0 表示邏輯值「假」。

10. 微機中1個位元組表示的二進制位數是 8 位數 。

二. 完成下列各題

1. 下面這個程序用於讀入5個整數,當程序讀入的數據n為正整數時,則顯示該數,請補充程序。(5分)
#include <stdio.h>
void main()
{ int i, n;
for (i=1; i<=5;i++)
{
printf("Pleaseenter n:");
scanf( 「%d」,&n );
if (n > 0)printf(「該整數為:%d」,n );
}
printf("Programis over!\n");
}

2. 改寫下段程序,實現從控制台輸入任意字元如果是大寫轉換成小寫,如果是小寫轉換成大寫,其它字元原樣輸出。(10分)

#include<stdio.h>
void main()
{ char c1,c2;
c1=』A』;
c2=c1+32;
printf("%c\n",c2);
}

答案代碼:
#include <stdio.h>
void main()
{ char c1,c2;
printf("請輸入一個字元:");
scanf("%c",&c1);
if (c1<='z' && c1>='a')
{c2=c1-32;
printf("大寫字母為:%c\n\n",c2);}
else if (c1<='Z' && c1>='A')
{c2=c1+32;
printf("小寫字母為:%c\n\n",c2);
}
else
printf("原字元為:%c\n\n",c1);
}

3. 下列程序有何錯誤?請改正。(10分)
#include<stdio.h>
void main()
{ short x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

答案代碼:
#include<stdio.h>
void main()
{ int x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

4. 閱讀程序,補充程序的功能。(10分)
從鍵盤任意輸入一個年號(year),判斷它是否是閏年。若是閏年,輸出「它是閏年」,否則輸出「它不是閏年」。已知符合下列條件之一者是閏年:能被4整除,但不能被100整除。能被400整除。
#include <stdio.h>
void main()
{ int year, flag;
printf("Enteryear:");
scanf("%d",&year );
if((year%4=0&&year%100!=0)||year%400=0)

{ flag =1;
}
else
{ flag = 0;
}
if ( flag=1 )
{
printf("它是閏年\n");
}
else
{
printf("它不是閏年\n");
}
}

三、編寫程序,並調試程序正確運行。
1. 編寫一個程序,從鍵盤輸入某計算機的價格,再輸出該價格打7折後的價格。(15分)

答案代碼:
#include <stdio.h>
#include <windows.h>
int main()
{
float a,b;
printf("輸入一台計算機的價格:");
scanf("%f",&a);
b=0.7*a;
printf("打7折後的價格為:%.1f\n\n",b);
system ("pause");
return 0;
}

2. 從鍵盤輸入一個三位數,求各位數字之和。例如:輸入的三位數是385,輸出結果為3+8+5=16;(15分)
答案代碼:
#include <stdio.h>
#include <windows.h>
#include <string.h>
int main()
{
char a[3];
intb,c,d,e;
printf("請輸入一個三位數:");
scanf("%s",a);
b=a[2]-'0';
c=a[1]-'0';
d=a[0]-'0';
e=b+c+d;
printf("各位數字之和為:%d\n\n",e);
system("pause");
return0;
}

3. 日本一位中學生發現一個奇妙的「定理」,請角古教授證明,而角古教授無能為力,於是產生角古猜想,猜想的內容是:任意自然數,若為偶數除以2,若為奇數則乘以3加1,得到一個新的自然數,按照上面的法則繼續演算,若干次後結果必然為1,請編程驗證。(15分)

答案代碼:
#include <stdio.h>
void main()
{ int a;
printf("輸入一個自然數:");
scanf("%d",&a);
if(a%2==1)
a=a*3+1;
while(a!=1)
{
a=a/2;
}
printf("所得結果為:%d\n",a);
}

我是實驗學院的,這是我們2012大一期末的,希望有幫助,裡面的答案是自己寫的,可忽略

② 國家計算機二級C語言考試題

一 、選擇題
(1)下列數據結構中,按先進後出原則組織數據的是
A)線性鏈表
B)棧
C)循環鏈表
D)順序表
正確答案: B

(2)具有3個結點的二叉樹有
A)2種形態
B)4種形態
C)7種形態
D)5種形態
正確答案: D

(3)設有下列二叉樹:
對此二叉樹前序遍歷的結果為
A)ZBTYCPXA
B)ATBZXCYP
C)ZBTACYXP
D)ATBZXCPY
正確答案: B

(4)結構化程序設計主要強調的是
A)程序的規模
B)程序的效率
C)程序設計語言的先進性
D)程序易讀性
正確答案: D

(5)程序的3種基本控制結構是
A)過程、子過程和分程序
B)順序、選擇和重復
C)遞歸、堆棧和隊列
D)調用、返回和轉移
正確答案: B

(6)下列敘述中,不屬於測試的特徵的是
A)測試的挑剔性
B)完全測試的不可能性
C)測試的可靠性
D)測試的經濟性
正確答案: C

(7)需求分析中開發人員要從用戶那裡了解
A)軟體做什麼
B)用戶使用界面
C)輸入的信息
D)軟體的規模
正確答案: A

(8)下列關系模型中,能使經運算後得到的新關系中屬性個數多於原來關系中屬性個數的是
A)選擇
B)連接
C)投影
D)並
正確答案: B

(9)下列敘述中,正確的是
A)用E-R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B)用E-R圖只能表示實體集之間一對一的聯系
C)用E-R圖只能表示實體集之間一對多的聯系
D)用E-R圖表示的概念數據模型只能轉換為關系數據模型
正確答案: C

(10)"年齡在18~25之間"這種約束是屬於資料庫當中的
A)原子性措施
B)一致性措施
C)完整性措施
D)安全性措施
正確答案: C
11)以下說法錯誤的是
A)高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式
B)計算機只能處理由0和1的代碼構成的二進制指令或數據
C)C語言源程序經過C語言編譯程序編譯之後生成一個後綴為.EXE的二進制文件
D)每一種高級語言都有它對應的編譯程序
正確答案: C

(12)演算法是指為解決某個特定問題而採取的確定且有限的步驟,下面不屬於演算法的五個特性的是
A)有零個輸入或多個輸入
B)高效性
C)有窮性
D)確定性
正確答案: B

(13)已知int a=6; 則執行a+=a-=a*a;語句後,a的值為
A)36
B)0
C)-24
D)-60
正確答案: D

(14)下面各選項中,均是C語言標識符的選項組是
A)forchinato
B)long_123short56_do
C)voinion_342
D)text.txt _023_3ew
正確答案: B

(15)下列表達式中,結果為5的是
A)6*5%6
B)5*-2+15
C)5+75%10
D)6+-2/3
正確答案: B

(16)下列常量中,為不合法的實型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
正確答案: D

(17)關於C語言的主函數描述正確的是
A)C程序可以有多個main函數
B)C程序必有一個而且只能有一個main函數
C)C程序可以沒有main函數
D)C程序的執行不一定在main函數開始執行
正確答案: B

(18)已知int a=1,b=-1;則語句printf("%d\n",(a--,++b));的輸出結果是
A)-1
B)0
C)1
D)語句錯誤
正確答案: B

(19)已知int a,b;double c;則以下語句中錯誤的函數調用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
正確答案: D

(20)已知x,y,z均為整型變數,且值均為1,則執行語句++x||++y&&++z;後,表達式x+y的值為
A)1
B)2
C)3
D)4
正確答案: C

③ 急!!歷年國家計算機二級c語言筆試真題答案。

2010年9月全國計算機二級C語言筆試試題:文字版
一、選擇題(每小題2分,共70分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的。請將正確選項填塗在答題卡相應位置上,答在試卷上不得分。

(1)下列敘述中正確的是
A)線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B)線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構
C)線性表的鏈式存儲結構所需要的存儲空間一般要少於順序存儲結構
D)上述三種說法都不對

(2)下列敘述中正確的是
A)在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態變化
B)在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態變化
C)在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態變化
D)上述三種說法都不對

(3)軟體測試的目的是
A)評估軟體可靠性
B)發現並改正程序中的錯誤
C)改正程序中的錯誤
D)發現程序中的錯誤

(4)下面描述中,不屬於軟體危機表現的是
A)軟體過程不規范
B)軟體開發生產率低
C)軟體質量難以控制
D)軟體成本不斷提高

(5)軟體生命周期是指
A)軟體產品從提出、實現、使用維護到停止使用退役的過程
B)軟體從需求分析、設計、實現到測試完成的過程
C)軟體的開發過程
D)軟體的運行維護過程
(6)面向對象方法中,繼承是指
A)一組對象所具有的相似性質
B)一個對象具有另一個對象的性質
C)各對象之間的共同性質
D)類之間共享屬性和操作的機制

(7)層次型、網狀型和關系型資料庫劃分原則是
A)記錄長度
B)文件的大小
C)聯系的復雜程度
D)數據之間的聯系方式

(8)一個工作人員可以使用多台計算機,而一台計算機可被多個人使用,則實體工作人員、與實體計算機之間的聯系是
A)一對一
B)一對多
C)多對多
D)多對一

(9)資料庫設計中反映用戶對數據要求的模式是
A)內模式
B)概念模式
C)外模式
D)設計模式

(10)有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是
A)自然連接
B)交
C)投影
D)並
(11)以下關於結構化程序設計的敘述中正確的是
A)一個結構化程序必須同時由順序、分支、循環三種結構組成
B)結構化程序使用goto語句會很便捷
C)在C語言中,程序的模塊化是利用函數實現的
D)由三種基本結構構成的程序只能解決小規模的問題

(12)以下關於簡單程序設計的步驟和順序的說法中正確的是
A)確定演算法後,整理並寫出文檔,最後進行編碼和上機調試
B)首先確定數據結構,然後確定演算法,再編碼,並上機調試,最後整理文檔
C)先編碼和上機調試,在編碼過程中確定演算法和數據結構,最後整理文檔
D)先寫好文檔,再根據文檔進行編碼和上機調試,最後確定演算法和數據結構

(13)以下敘述中錯誤的是
A) C程序在運行過程中所有計算都以二進制方式進行
B)C程序在運行過程中所有計算都以十進制方式進行
C)所有C程序都需要編譯鏈接無誤後才能運行
D)C程序中整型變數只能存放整數,實型變數只能存放浮點數

(14)有以下定義:int a; long b; double x,y;則以下選項中正確的表達式是
A)a%(int)(x-y)
B)a=x!=y;
C)(a*y)%b
D)y=x+y=x

(15)以下選項中能表示合法常量的是
A)整數:1,200
B)實數:1.5E2.0
C )字元斜杠:『\』
D)字元串:"\007"
(16)表達式a+=a-=a=9的值是
A)9
B)_9
C)18
D)0

(17)若變數已正確定義,在if (W)printf(「%d\n,k」);中,以下不可替代W的是
A)a<>b+c
B)ch=getchar()
C)a==b+c
D)a++

(18)有以下程序
#include<stdio.h>
main()
{int a=1,b=0;
if(!a) b++;
else if(a==0)if(a)b+=2;
else b+=3;
printf(」%d\n」,b);

程序運行後的輸出結果是
A)0
B)1
C)2
D)3

(19)若有定義語句int a, b;double x;則下列選項中沒有錯誤的是
A)switch(x%2) B)switch((int)x/2.0
{case 0: a++; break; {case 0: a++; break;
case 1: b++; break; case 1: b++; break;
default : a++; b++; default : a++; b++;
} }
C)switch((int)x%2) D)switch((int)(x)%2)
{case 0: a++; break; {case 0.0: a++; break;
case 1: b++; break; case 1.0: b++; break;
default : a++; b++; default : a++; b++;
} }
(20)有以下程序
#include <stdio.h>
main()
{int a=1,b=2;
while(a<6){b+=a;a+=2;b%二10;}
printf(」%d,%d\n」,a,b);

程序運行後的輸出結果是
A)5,11
B)7,1
C)7,11
D)6,1

(21)有以下程序
#include<stdio.h>
main()
{int y=10;
while(y--);
printf(」Y=%d\n」,Y);

程序執行後的輸出結果是
A)y=0
B)y= -1
C)y=1
D)while構成無限循環
(22)有以下程序
#include<stdio .h>
main()
{char s〔」=」rstuv";
printf(」%c\n」,*s+2);

程序運行後的輸出結果是
A)tuv
B)字元t的ASCII碼值
C)t
D)出錯
(23)有以下程序
#include<stdio.h>
#include<string.h>
main()
{char x〔〕=」STRING」;
x〔0」=0;x〔1〕=』\0』;x〔2」=』0』;
printf(」%d %d\n」,sizeof(x),strlen(x));

程序運行後的輸出結果是
A)6 1
B)7 0
C)6 3
D)7 1

(24)有以下程序
#include<stdio.h>
Int f(int x);
main()
{int n=1,m;
m=f(f(f(n)));printf(」%d\n」,m);

int f(int x)
{return x*2;}
程序運行後的輸出結果是
A)1
B)2
C)4
D)8

(25)以下程序段完全正確的是
A)int *p; scanf("%d",&p);
B)int *p; scanf(「%d」,p);
C)int k, *p=&k; scanf("%d",p);
D)int k, *p:; *p= &k; scanf(「%d」,p);
(26)有定義語句:int *p[4];以下選項中與此語句等價的是
A)int p[4];
B)int **p;
C)int *(p「4」);
D)int (*p)「4」;

(27)下列定義數組的語句中,正確的是
A)int N=10; B)#define N 10
int x[N]; int x[N];
C)int x[0..10〕; D)int x〔〕;

(28)若要定義一個具有5個元素的整型數組,以下錯誤的定義語句是
A)int a[5]={0};
B)int b[]={0,0,0,0,0};
C)int c[2+3];
D)int i=5,d[i];

(29)有以下程序
#include<stdio.h>
void f(int *p);
main()
{int a〔5〕={1,2,3,4,5},*r=a;
f(r);printf(」%d\n」;*r);

void f(int *p)
{p=p+3;printf(」%d,」,*p);}
程序運行後的輸出結果是
A)1,4
B)4,4
C)3,1
D)4,1
(30)有以下程序(函數fun只對下標為偶數的元素進行操作)
# include<stdio.h>
void fun(int*a;int n)
{int i、j、k、t;
for (i=0;i<n一1;1+=2)
{k=i;『
for(j=i;j<n;j+=2)if(a〔j〕>a〔k])k=j;
t=a〔i];a〔i]=a〔k];a〔k]=t;


main()
{int aa「10」={1、2、3、4、5、6、7},i;
fun(aa、7);
for(i=0,i<7; i++)printf(」%d,」,aa〔i〕));
printf(」\n」);

程序運行後的輸出結果是
A)7,2,5,4,3,6,1
B)1,6,3,4,5,2,7
C)7,6,5,4,3,2,1
D)1,7,3,5,6;2,1

(31)下列選項中,能夠滿足「若字元串s1等於字元串s2,則執行ST"要求的是
A)if(strcmp(s2,s1)==0)ST;
B)if(sl==s2)ST;
C)if(strcpy(s l ,s2)==1)ST;
D)if(sl-s2==0)ST;

(32)以下不能將s所指字元串正確復制到t所指存儲空間的是
A)while(*t=*s){t++;s++;}
B)for(i=0;t[i]=s[i〕;i++);
C)do{*t++=*s++;}while(*s);
D)for(i=0,j=0;t[i++]=s[j++];);
(33)有以下程序( strcat函數用以連接兩個字元串)
#include<stdio.h>
#include<string .h>
main()
{char a〔20〕=」ABCD\OEFG\0」,b〔〕=」IJK」;
strcat(a,b);printf(」%s\n」,a);

程序運行後的輸出結果是
A)ABCDE\OFG\OIJK
B)ABCDIJK
C)IJK
D)EFGIJK

(34)有以下程序,程序中庫函數islower (ch)用以判斷ch中的字母是否為小寫字母
#include<stdio.h>
#include<ctype.h>
void fun(char*p)
{int i=0;
while (p[i〕)
{if(p[i]==』 』&& islower(p「i-1」))p[i-1]=p[i-1]-『a』+『A』;
i++;


main()
{char s1〔100〕=」ab cd EFG!」;
fun(s1); printf(」%s\n」,s1);

程序運行後的輸出結果是
A)ab cd EFG!
B)Ab Cd EFg!
C)aB cD EFG!
D)ab cd EFg!
(35)有以下程序
#include<stdio.h>
void fun(int x)
{if(x/2>1)fun(x/2);
printf(」%d」,x);

main()
{fun(7);printf(」\n」);}
程序運行後的輸出結果是
A)1 3 7
B)7 3 1
C)7 3
D)3 7

(36)有以下程序
#include<stdio.h>
int fun()
{static int x=1;
x+=1;return x;

main()
{int i;s=1;
for(i=1;i<=5;i++)s+=fun();
printf(」%d\n」,s);

程序運行後的輸出結果是
A)11
B)21
C)6
D)120
(37)有以下程序
#inctude<stdio.h>
#include<stdlib.h>
Main()
{int *a,*b,*c;
a=b=c=(int*)malloc(sizeof(int));
*a=1;*b=2,*c=3;
a=b;
printf(「%d,%d,%d\n」,*a,*b,*c);

程序運行後的輸出結果是
A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3

(38)有以下程序
#include<stdio.h>
main()
{int s,t,A=10;double B=6;
s=sizeof(A);t=sizeof(B);
printf(「%d,%d\n」,s,t);

在VC6平台上編譯運行,程序運行後的輸出結果是
A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下語句
Typedef struct S
{int g; char h;}T;
以下敘述中正確的是
A)可用S定義結構體變數
B)可用T定義結構體變數
C)S是struct類型的變數
D)T是struct S類型的變數

(40)有以下程序
#include<stdio.h>
main()
{short c=124;
c=c_______;
printf(「%d\n」、C);

若要使程序的運行結果為248,應在下劃線處填入的是
A)>>2 B)|248 C)&0248 D)<<I
二、填空題(每空2分,共30分)
請將每空的正確答案寫在答題卡【1】至【15】序號的橫線上,答在試卷上不得分。
(1)一個棧的初始狀態為空。首先將元素5,4,3,2,1依次入棧,然後退棧一次,再將元素 A,B,C,D依次入棧,之後將所有元素全部退棧,則所有元素退棧(包括中間退棧的元素)的順序為【1】

(2)在長度為n的線性表中,尋找最大項至少需要比較【2】次。

(3)一棵二叉樹有10個度為1的結點,7個度為2的結點,則該二叉樹共有【3】個結點。

(4)僅由順序、選擇(分支)和重復(循環)結構構成的程序是【4】程序。

(5)資料庫設計的四個階段是:需求分析,概念設計,邏輯設計【5】。

(6)以下程序運行後的輸出結果是【6】。
#include<stdio.h>
main()
{int a=200,b=010;
printf(」%d%d\n」,a,b);


(7)有以下程序
#include<stdio.h>
main()
{int x,Y;
scanf(」%2d%ld」,&x,&y);printf(」%d\n」,x+y);

程序運行時輸入:1234567程序的運行結果是【7】。

(8)在C語言中,當表達式值為0時表示邏輯值「假」,當表達式值為【8】時表示邏輯值「真」。
(9)有以下程序
#include<stdio.h>
main()
{int i,n[]={0,0,0,0,0};
for (i=1;i<=4;i++)
{n[i]=n[i-1]*3+1; printf(」%d ",n[i]);}
}
程序運行後的輸出結果是【9】。

(10)以下fun函數的功能是:找出具有N個元素的一維數組中的最小值,並作為函數值返回。請填空。(設N已定義)
int fun(int x〔N〕)
{int i,k=0;
for(i=0;i<N;I++)
if(x〔i〕
return x〔k〕;
}

(11)有以下程序
#include<stdio.h>
int*f(int *p,int*q);
main()
{int m=1,n=2,*r=&m;
r=f(r,&n);printf(」%d\n」,*r);

int*f(int *p,int*q)
{return(*p>*q)?p:q;}
程序運行後的輸出結果是【11】

(12)以下fun函數的功能是在N行M列的整形二維數組中,選出一個最大值作為函數值返回,請填空。(設M,. N已定義)
int fun(int a〔N〕[M))
{int i,j,row=0,col=0;
for(i=0;i<N;I++)
for(j=0;j
if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}
return(【12】):
}
(13)有以下程序
#include<stdio.h>
main()
{int n[2],i,j;
for(i=0;i<2;i++)n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n〔j〕=n「i」+1;
printf(」%d\n」,n[1]);

程序運行後的輸出結果是【13】

(14)以下程序的功能是:藉助指針變數找出數組元素中最大值所在的位置並輸出該最大值。請在輸出語句中填寫代表最大值的輸出項。
#include<stdio.h>
main()
{int a〔10〕,*p,*s;
for(p=a;p-a<10;p++)scanf(」%d」,p);
for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;
printf("max=%d\n」,【14】);


(15)以下程序打開新文件f.txt,並調用字元輸出函數將a數組中的字元寫入其中,請填空。
#include<stdio.h>
main()
{【15】*fp;
char a〔5〕={』1』,』2』,』3』,』4』,』5』},i;
fp=fopen(」f .txt」,」w」);
for(i=0;i<5;i++)fputc(a[i],fp);
fclose(fp);

④ 自考計算機專業—C語言試題答案

2008年10月全國計算機等級考試二級筆試試卷
C語言程序設計
(考試時間90分鍾,滿分100分)
(參考答案)
一、選擇題
1-10 BDCAD BABCD
11-20 CDACD ADCBA
21-30 CABAB CDDAB
31-40 CACDB CDDCB
二、填空題
【1】 DBXEAYFZC
【2】 單元
【3】 過程
【4】 邏輯設計
【5】 分量
【6】 a=a-(a+b)
【7】 a=%d\nb=%d
【8】 1
【9】 9911
【10】 3
【11】 15
【12】 i--
【13】 n
【14】 func()
【15】 m++

2009年3月全國計算機等級考試二級筆試試卷C語言程序設計

(考試時間90分鍾,滿分100分)

2009年4月二級C參考答案

選擇題:
1~10: DACDC ABABC
11~20:CBDDA CDBCB
21~30:CDABA BACBC
31~40:ADBCC CBDAC

填空題:
(1)19
(2)白盒
(3)順序結構
(4)資料庫管理系統(DBMS)
(5)菱形
(6)4
(7)"x/y=%d"
(8)能
(9)s=0
(10)1AbCeDf2dF
(11)7777654321
(12)max(int a,int b)
(13)NULL
(14)1001,ChangRong,1098.0
(15)p=p—>next

⑤ 全國計算機二級c語言的100套試題

哦,隨便哪個c語言資料上基本都有經典100例子的,就是哪個了.

⑥ 2009年上半年全國計算機等級考試二級C語言筆試試題及答案

一、選擇題(每題2分,共計70分)
1.(1)下列敘述中正確的是
A)棧是先進先出的線性表
B)隊列是"先進後出"的線性表
C)循環隊列是非線性結構
D)有序線性表即可以採用順序存儲結構,也可以採用鏈式存儲結構

2.
(2)支持子程序調用的數據結構是
A)棧
B)樹
C)隊列
D)二叉樹

3.
(3)某二叉樹有5個讀為2的結點,則該二叉樹中的葉子結點數是
A)10
B)8
C)6
D)4

4.
(4)下列排序方法中,最壞情況下比較次數最少的是
A)冒泡排序
B)簡單選擇排序
C)直接插入排序
D)堆排序

(5)軟體按功能可以分為:應用軟體、系統軟體和支撐軟體(或工具軟體)。下列
屬於應用軟體的是
A)編譯程序
B)操作系統
C)教務管理系統
D)匯編程序

6.
(6)下面敘述中錯誤的是
A)軟體測試的目的是發現錯誤並改正錯誤
B)對被調試程序進行"錯誤定位"是程序調試的必要步驟
C)程序調試也成為Debug
D)軟體測試應嚴格執行測試計劃,排除測試的隨意性

7.
(7)耦合性和內聚性是對模塊獨立性度量的兩個標准。下列敘述中正確的是
A)提高耦合性降低內聚性有利於提高模塊的獨立性
B)降低耦合性提高內聚性有利於提高模塊的獨立性
C)耦合性是指一個模塊內部各個元素間彼此結合的緊密程度
D)內聚性是指模塊間互相連接的緊密程度

8.
(8)資料庫應用系統中的核心問題是
A)資料庫設計
B)資料庫系統設計
C)資料庫維護
D)資料庫管理員培訓

9.
(9)有兩個關系R,S如下:

由關系R通過運算得到關系S,則所使用的運算為
A)選擇
B)投影
C)插入
D)連接

10.
(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為
A)屬性
B)鍵
C)關系
D)域

11.(11)一下選項中合法的標識符是
A)1_1
B)1-1
C)_11
D)1_ _

12.
(12)若函數中有定義語句:int k;,則
A)系統將自動給k賦初值0
B)這是k中的值無定義
C)系統將自動給k賦初值-1
D)這時k中無任何值

13.
(13)一下選項中,能用作數據常量的是
A)o115
B)0118
C)1.5e1.5
D)115L

14.
(14)設有定義:int x=2;,一下表達式中,值不為6的是
A)x*=x+1
B)X++,2*x
C)x*=(1+x)
D)2*x,x+=2

15.
(15)程序段:int x=12; double y=3.141593;printf("%d%8.6f",x,y);的輸出結果是
A)123.141593
B)12 3.141593
C)12,3.141593
D)123.1415930

16.
(16)若有定義語句:double x,y,*px,*py;執行了px=&x;py=&y;之後,正確的輸入語句是
A)scanf("%f%f",x,y);
B)scanf("%f%f" &x,&y);
C)scanf("%lf%le",px,py);
D)scanf("%lf%lf",x,y);

17.
(17)一下是if語句的基本形式:
if(表達式) 語句
其中"表達式"
A)必須是邏輯表達式
B)必須是關系表達式
C)必須是邏輯表達式或關系表達式
D)可以是任意合法的表達式

18.
(18)有以下程序
#include <stdio.h>
main()
{ int x;
scanf("%d",&x);
if(x<=3) ; else
if(x!=10) printf("%d\n",x);
}
程序運行時,輸入的值在哪個范圍才會有輸出結果
A)不等於10的整數
B)大於3且不等於10的整數
C)大於3或等於10的整數
D)小於3的整數

19.
(19)有以下程序
#include <stdio.h>
main()
{ int a=1,b=2,c=3,d=0;
if (a==1 && b++==2)
if (b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
else printf("%d,%d,%d\n",a,b,c);
}
程序運行後輸出結果是
A)1,2,3
B)1,3,2
C)1,3,3
D)3,2,1

20.
(20)一下程序段中的變數已正確定義
for(i=0;i<4;i++,j++)
for(k=1;k<3;k++); printf("*");
程序段的輸出結果是
A)********
B)****
C)**
D)*

21.(21)有以下程序
#include <stdio.h>
main()
{ char *s={"ABC"};
do
{ printf("%d",*s%10);s++;
}
while (*s);
}
注意:字母A的ASCII碼值為65。程序運行後的輸出結果是
A)5670
B)656667
C)567
D)ABC

22.
(22)設變數已正確定義,以下不能統計出一行中輸入字元個數(不包含回車符)的程序段是
A)n=0;while((ch=getchar())!=~\n~)n++;
B)n=0;while(getchar()!=~\n~)n++;
C)for(n=0;getchar()!=~\n~;n++);
D)n=0;for(ch=getchar();ch!=~\n~;n++);

23.
(23)有以下程序
#include <stdio.h>
main()
{ int a1,a2; char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("%d,%c,%d,%c",a1,c1,a2,c2);
}
若通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字元a,c2的值為字元b,
程序輸出結果是:12,a,34,b 則正確的輸入格式是(以下_代表空格,<CR>代表回車)
A)12a34b<CR>
B)12_a_34_b<CR>
C)12,a,34,b<CR>
D)12_a34_b<CR>

24.
(24)有以下程序
#include <stdio.h>
int f(int x,int y)
{ return ((y-x)*x);}
main()
{ int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n",d);
}
程序運行後的輸出結果是
A)10
B)9
C)8
D)7

25.
(25)有以下程序
#include <stdio.h>
void fun(char *s)
{ while(*s)
{ if (*s%2==0) printf("%c",*s);
s++;
}
}
main()
{ char a[]={"good"};
fun(a); printf("\n");
}
注意:字母a的ASCII碼值為97,程序運行後的輸出結果是
A)d
B)go
C)god
D)good

26.
(26)有以下程序
#include <stdio.h>
void fun(int *a,int *b)
{ int *c;
c=a;a=b;b=c;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
fun(p,q); printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
程序運行後輸出的結果是
A)3,5,5,3
B)3,5,3,5
C)5,3,3,5
D)5,3,5,3

27.
(27)有以下程序
#include <stdio.h>
void f(int *p,int *q);
main()
{ int m=1,n=2,*r=&m;
f(r,&n); printf("%d,%d",m,n);
}
void f(int *p,int *q)
{p=p+1;*q=*q+1;}
程序運行後的輸出結果是
A)1,3
B)2,3
C)1,4
D)1,2

28.
(28)以下函數按每行8個輸出數組中的數據
#include <stdio.h>
void fun(int *w,int n)
{ int i;
for(i=0;i<n;i++)
{ ____________
printf("%d ",w[i]);
}
printf("\n");

}
下劃線出應填入的語句是
A)if(i/8==0) printf("\n");
B)if(i/8==0) continue;
C)if(i%8==0) printf("\n");
D)if(i%8==0) continue;

29.
(29)若有以下定義
int x[10],*pt=x;
則對數組元素的正確引用是
A)*&x[10]
B)*(x+3)
C)*(pt+10)
D)pt+3

30.
(30)設有定義:char s[81];int i=0;,以下不能將一行(不超過80個字元)帶有空格
的字元串正確讀入的語句或語句組是
A)gets(s);
B)while((s[i++]=getchar())!=~\n~);s[i]=~\0~;
C)scanf("%s",s);
D)do{scanf("%c",&s[i]);}while(s[i++]!=~\n~);s[i]=~\0~;

31.
(31)有以下程序
#include <stdio.h>
main()
{ char *a[]={"abcd","ef","gh","ijk"};int i;
for(i=0;i<4;i++) printf("%c",*a[i]);
}
程序運行後的輸出結果是
A)aegi
B)dfhk
C)dfhk
D)abcdefghijk

32.
(32)以下選項中正確的語句組是
A)char s[];s="BOOK!";
B)char *s;s={"BOOK!"};
C)char s[10];s="BOOK!";
D)char *s;s="BOOK!";

33.
(33)有以下程序
#include <stdio.h>
int fun(int x,int y)
{ if(x==y) return (x);
else return((x+y)/2);
}
main()
{ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運行後的輸出結果是
A)3
B)6
C)8
D)12

34.
(34)設函數中有整型變數n,為保證其在未賦初值的情況下初值為0,應該選擇的存儲類別是
A)auto
B)register
C)static
D)auto 或register

35.
(35)有以下程序
#include <stdio.h>
int b=2;
int fun(int *k)
{ b=*k+b;return (b);}
main()
{ int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++) {b=fun(&a[i])+b; printf("%d ",b);}
printf("\n");
}
程序運行後的輸出結果是
A)10 12
B)8 10
C)10 28
D)10 16

36.
(36)有以下程序
#include <stdio.h>
#define PT 3.5 ;
#define S(x) PT*x*x ;

main()
{ int a=1,b=2 ; printf("%4.1f\n",S(a+b));}
程序運行後的輸出結果是
A)14.0
B)31.5
C)7.5
D)程序有錯無輸出結果

37.
(37) 有以下程序
#include <stdio.h>
struct ord
{ int x,y; } dt[2]={1,2,3,4};
main()
{ struct ord *p=dt;
printf("%d,",++p->x); printf("%d\n",++p->y);
}
程序的運行結果是
A)1,2
B)2,3
C)3,4
D)4,1

38.
(38)設有宏定義:#define IsDIV(k,n) ((k%n==1)?1:0)且變數m已正確定義並賦值,
則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是
A)判斷m是否能被5或者7整除
B)判斷m是否能被5和7整除
C)判斷m被5或者7整除是否餘1
D)判斷m被5和7整除是否都餘1

39.
(39)有以下程序
#include <stdio.h>
main()
{ int a=5,b=1,t;
t=(a<<2)|b; printf("%d\n",t);
}
程序運行後的輸出結果是
A)21
B)11
C)6
D)1

40.
(40)有以下程序
#include <stdio.h>
main()
{ FILE *f;
f=fopen("filea.txt","w");
fprintf(f,"abc");
fclose(f);
}
若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt的內容為
A)helloabc
B)abclo
C)abc
D)abchello

2009年3月二級C語言程序設答案
選擇題:
1-10: DACDC ABABC
11-20:CBDDA CDBCB
21-30:CDABA BACBC
31-40:ADBCC CBDAC
填空題:
(1)19
(2)白盒
(3)順序結構
(4)資料庫管理系統(DBMS)
(5)菱形
(6)4
(7)"x/y=%d"
(8)能
(9)s=0
(10)1AbCeDf2dF
(11)7777654321
(12)max(int a,int b)
(13)NULL
(14)1001,ChangRong,1098.0
(15)p=p—>next

⑦ 求計算機二級考試c語言機試題庫

這是部分,其餘的可以私下給你,我的QQ:916356609,我傳給你
一、程序填空題
1、給定程序中,函數fun的功能是:在任意給定的9個正整數中找出按升序排列時處於中間的數,將原數據序列中比該中間數小的數用該中間數替換,位置不變,在主函數中輸出處理後的數據序列,並將中間數作為函數值返回。
例如,有9個正整數:1 5 7 23 87 5 8 21 45
按升序排列時的中間數為:8
處理後主函數中輸出的數列為:8 8 8 23 87 8 8 21 45
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 9
int fun(int x[])
{ int i,j,k,t,mid,b[N];
for(i=0;i<N;i++) b[i]=x[i];
for(i=0;i<=N/2;i++)
{ k=i;
for(j=i+1;j<N;j++) if(b[k]>b[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i<N; i++)
/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
main()
{ int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
}

2、給定程序中,函數fun的功能是建立一個N×N的矩陣。 矩陣元素的構成規律是:最外層元素的值全部為1;從外向內第2層元素的值全部為2;第3層元素的值全部為3,…依次類推。例如,若N=5,生成的矩陣為:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
請在程序的下劃線處填入正確的內容並把下劃線刪除, 使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 7
/**********found**********/
void fun(int (*a) __1__)
{ int i,j,k,m;
if(N%2==0) m=N/2 ;
else m=N/2+1;
for(i=0; i<m; i++) {
/**********found**********/
for(j= __2__ ; j<N-i; j++)
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k<N-i; k++)
/**********found**********/
a[k][i]=a[k][N-i-1]= __3__;
}
}
main()
{ int x[N][N]={0},i,j;
fun(x);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%3d",x[i][j]);
printf("\n");
}
}

3、給定程序中,函數fun的功能是: 將s所指字元串中的所有數字字元移到所有非數字字元之後,並保持數字字元串和非數字字元串原有的先後次序。例如,形參s所指的字元串為:def35adh3kjsdf7。執行結果為:defadhkjsdf3537。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
void fun(char *s)
{ int i, j=0, k=0; char t1[80], t2[80];
for(i=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
{
/**********found**********/
t2[j]=s[i]; ___1___;
}
else t1[k++]=s[i];
t2[j]=0; t1[k]=0;
/**********found**********/
for(i=0; i<k; i++) ___2___;
/**********found**********/
for(i=0; i<___3___; i++) s[k+i]=t2[i];
}
main()
{ char s[80]="def35adh3kjsdf7";
printf("\nThe original string is : %s\n",s);
fun(s);
printf("\nThe result is : %s\n",s);
}

4、給定程序中,函數fun的功能是:有N×N矩陣,以主對角線為對稱線,對稱元素相加並將結果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:
1 2 3
4 5 6
7 8 9計算結果為
1 0 0
6 5 0
10 14 9
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!

#include <stdio.h>
#define N 4
/**********found**********/
void fun(int (*t)___1___ )
{ int i, j;
for(i=1; i<N; i++)
{ for(j=0; j<i; j++)
{
/**********found**********/
___2___ =t[i][j]+t[j][i];
/**********found**********/
___3___ =0;
}
}
}
main()
{ int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("\nThe original array:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%2d ",t[i][j]);
printf("\n");
}
}

5、給定程序中,函數fun的功能是:對形參s所指字元串中下標為奇數的字元按ASCII碼大小遞增排序,並將排序後下標為奇數的字元取出,存入形參p所指字元數組中,形成一個新串。
例如,形參s所指的字元串為:baawrskjghzlicda,執行後p所指字元數組中的字元串應為:aachjlsw。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
void fun(char *s, char *p)
{ int i, j, n, x, t;
n=0;
for(i=0; s[i]!='\0'; i++) n++;
for(i=1; i<n-2; i=i+2) {
/**********found**********/
___1___;
/**********found**********/
for(j=___2___+2 ; j<n; j=j+2)
if(s[t]>s[j]) t=j;
if(t!=i)
{ x=s[i]; s[i]=s[t]; s[t]=x; }
}
for(i=1,j=0; i<n; i=i+2, j++) p[j]=s[i];
/**********found**********/
p[j]=___3___;
}
main()
{ char s[80]="baawrskjghzlicda", p[50];
printf("\nThe original string is : %s\n",s);
fun(s,p);
printf("\nThe result is : %s\n",p);
}

6、程序通過定義並賦初值的方式,利用結構體變數存儲了一名學生的信息。函數fun的功能是輸出這位學生的信息。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
/**********found**********/
void show(STU ___1___)
{ int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
/**********found**********/
printf("%5.1f", ___2___);
printf("\n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("\nA student data:\n");
/**********found**********/
show(___3___);
}

7、給定程序中,函數fun的功能是:計算N×N矩陣的主對角線元素和反向對角線元素之和,並作為函數值返回。注意:要求先累加主對角線元素中的值,然後累加反向對角線元素中的值。例如,若N=3,有下列矩陣:
1 2 3
4 5 6
7 8 9fun函數首先累加1、5、9,然後累加3、5、7,函數的返回值為30。
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdio.h>
#define N 4
fun(int t[][N], int n)
{ int i, sum;
/**********found**********/
___1___;
for(i=0; i<n; i++)
/**********found**********/
sum+=___2___ ;
for(i=0; i<n; i++)
/**********found**********/
sum+= t[i][n-i-___3___] ;
return sum;
}
main()
{ int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++) printf("%4d",t[i][j]);
printf("\n");
}
printf("The result is: %d",fun(t,N));
}

8、給定程序中,函數fun的功能是:計算形參x所指數組中N個數的平均值(規定所有數均為正數),作為函數值返回;並將大於平均值的數放在形參y所指數組中,在主函數中輸出。
例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:30.500000
主函數中輸出:46 32 40 45 48
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!

#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[],double *y)
{ int i,j; double av;
/**********found**********/
av=__1__;
/**********found**********/
for(i=0; i<N; i++) av = av + __2__;
for(i=j=0; i<N; i++)
/**********found**********/
if(x[i]>av) y[__3__]= x[i];
y[j]=-1;
return av;
}
main()
{ int i; double x[N] = {46,30,32,40,6,17,45,15,48,26};
double y[N];
for(i=0; i<N; i++) printf("%4.0f ",x[i]);
printf("\n");
printf("\nThe average is: %f\n",fun(x,y));
for(i=0; y[i]>=0; i++) printf("%5.0f ",y[i]);
printf("\n");
}

9、給定程序中,函數fun的功能是:計算形參x所指數組中N個數的平均值(規定所有數均為正數),將所指數組中小於平均值的數據移至數組的前部,大於等於平均值的數據移至x所指數組的後部,平均值作為函數值返回,在主函數中輸出平均值和移動後的數據。
例如,有10個正數:46 30 32 40 6 17 45 15 48 26,平均值為:30.500000
移動後的輸出為:30 6 17 15 26 46 32 40 45 48
請在程序的下劃線處填入正確的內容並把下劃線刪除,使程序得出正確的結果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結構!
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i<N; i++) av +=__1__;

⑧ 急求!!!浙江省歷屆二級計算機考試c語言試卷以及答案

2006年春浙江省高等學校
計算機等級考試試卷(二級C)
說明:⑴ 考生應將所有試題的答案填寫在答卷上。其中試題1~試題6,請在答卷上各小題正確選項的對應位置處填「√」;
⑵ 請將你的准考證號的後五位填寫在答卷右下角的指定位置內;
⑶ 考試時間為90分鍾;
試題1(每小題3分,共12分)
閱讀下列程序說明和程序,在每小題提供的若干可選答案中,挑選一個正確答案。
【程序說明】
求 1 + 2/3 + 3/5 + 4/7 + 5/9 + … 的前20項之和。
運行示例:
sum = 11.239837
【程序】
#include <stdio.h>
void main( )
{
int i, b = 1;
double s;
(1) ;
for(i = 1; i <= 20; i++){
s = s + (2) ;
(3)
}
printf( (4) , s);
}
【供選擇的答案】
(1) A、s = 0 B、s = 1
C、s = -1 D、s = 2
(2) A、i/b B、double(i)/double(b)
C、i/2*i-1 D、(double)i/(double)b
(3) A、; B、b = 2 * i – 1;
C、b = 1.0 * b; D、b = b + 2;
(4) A、"sum = %d\n" B、"s = %c\n"
C、"sum = %f\n" D、"s = %s\n"
試題2(每小題3分,共12分)
閱讀下列程序說明和程序,在每小題提供的若干可選答案中,挑選一個正確答案。
【程序說明】
輸入10個整數,將它們從大到小排序後輸出。
運行示例:
Enter 10 integers: 1 4 -9 99 100 87 0 6 5 34
After sorted: 100 99 87 34 6 5 4 1 0 -9
【程序】
#include <stdio.h>
void main( )
{ int i, j, t, a[10];
printf("Enter 10 integers: ");
for(i = 0; i < 10; i++)
scanf( (5) );
for(i = 1; i < 10; i++)
for( (6) ; (7) ; j++)
if( (8) ){
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
printf("After sorted: ");
for(i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
}
【供選擇的答案】
(5) A、"%f", a[i] B、"%lf", &a[i]
C、"%s", a D、"%d", &a[i]
(6) A、j = 0 B、j = 1
C、j = i D、j = i - 1
(7) A、j > i B、j < 9 - i
C、j < 10 - i D、j > i - 1
(8) A、a[i-1] < a[i] B、a[j+1] < a[j+2]
C、a[j] < a[j+1] D、a[i] < a[j]
試題3(每小題3分,共12分)
閱讀下列程序說明和程序,在每小題提供的若干可選答案中,挑選一個正確答案。
【程序說明】
輸入一個字元串和一個正整數m,將該字元串中的前m個字元復制到另一個字元串中,再輸出後一個字元串。
運行示例1:
Enter a string: 103+895=?
Enter an integer: 6
The new string is 103+89
運行示例2:
Enter a string: 103+895=?
Enter an integer: 60
The new string is 103+895=?
運行示例3:
Enter a string: 103+895=?
Enter an integer: 0
The new string is
【程序】
#include <stdio.h>
#include < (9) >
void main( )
{ char s[80], t[80], i, m;
printf("Enter a string:");
gets(s);
printf("Enter an integer:");
scanf("%d", &m);
for(i = 0; (10) ; i++)
(11) ;
(12)
printf("The new string is ");
puts(t);
}
【供選擇的答案】
(9) A、ctype.h B、math.h
C、stdio.h D、string.h
(10) A、i < m B、s[i]!= '\0'
C、s[i]!= '\0' && i < m D、s[i]!= '\0' || i < m
(11) A、*s++ = *t++ B、t[i] = s[i]
C、*t++ = *s++ D、s[i] = t[i]
(12) A、t[i] = '\0'; B、;
C、*++s = '\0'; D、*++t = '\0';

試題4(每小題3分,共12分)
閱讀下列程序並回答問題,在每小題提供的若干可選答案中,挑選一個正確答案。
【程序】
#include <stdio.h>
void main( )
{ int s, x1, y1, z1, x2, y2, z2;
printf("Enter 6 integers:");
scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2);
s = f(x2, y2, z2) - f(x1, y1, z1);
printf("%d\n", s);
}
f(int x, int y, int z)
{ int k, n;
int tab[2][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}
};
n = (x % 4 == 0 && x % 100 != 0 || x % 400 == 0);
for(k = 1; k < y; k++)
z = z + tab[n][k];
return z;
}
(13) 程序運行時,輸入1 0 0 0 0 0,輸出 (13) 。
A、29 B、28 C、0 D、-1
(14) 程序運行時,輸入0 0 1 0 0 0,輸出 (14) 。
A、29 B、28 C、0 D、-1
(15) 程序運行時,輸入2000 2 1 2000 3 1,輸出 (15) 。
A、29 B、28 C、0 D、-1
(16) 程序運行時,輸入1981 2 1 1981 3 1,輸出 (16) 。
A、29 B、28 C、0 D、-1
試題5(每小題3分,共12分)
閱讀下列程序並回答問題,在每小題提供的若干可選答案中,挑選一個正確答案。
【程序】
# include <stdio.h>
void main ( )
{ int a = -1, b = 1;
void f1(int x, int y), f2(int *x, int *y);
void f3(int *x, int *y), f4(int x, int y);
f1(a, b);
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f2(&a, &b);
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f3(&a, &b);
printf("(%d,%d)\n", a, b);
a = -1, b = 1;
f4(a, b);
printf("(%d,%d)\n", a, b);
}
void f1(int x, int y)
{ int t;
t = x; x = y; y = t;
}
void f2(int *x, int *y)
{ int t;
t = *x; *x = *y; *y = t;
}
void f3(int *x, int *y)
{ int *t;
t = x; x = y; y = t;
}
void f4(int x, int y)
{ int *t = malloc(sizeof(t));
*t = x; x = y; y = *t;
}
(17) 程序運行時,第1行輸出 (17) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1)
(18) 程序運行時,第2行輸出 (18) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1)
(19) 程序運行時,第3行輸出 (19) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1)
(20) 程序運行時,第4行輸出 (20) 。
A、(1, -1) B、(-1, 1) C、(-1, -1) D、(1,1)
試題6(每小題3分,共12分)
#include <stdio.h>
struct card{
char *face;
char *suit;
};
void filldeck(struct card *wdeck, char *wface[],char *wsuit[])
{ int i;
for (i = 0; i < 4; i++){
wdeck[i].face = wface[i%2];
wdeck[i].suit = wsuit[i/2];
}
}
void deal(struct card *wdeck)
{ int i;
for (i = 0; i < 4; i++)
printf("(%2s of %-6s)\n", wdeck[i].face, wdeck[i].suit);
}

void main()
{ struct card deck[4];
char *face[]={"K","Q"};
char *suit[]={"Heart","Club"};

filldeck(deck,face,suit);
deal(deck);
}
(21) 程序運行時,第1行輸出 (21) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club)
(22) 程序運行時,第2行輸出 (22) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club)
(23) 程序運行時,第3行輸出 (23) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club)
(24) 程序運行時,第3行輸出 (24) 。
A、(K of Heart) B、(Q of Heart)
C、(K of Club) D、(Q of Club)
試題7 (14分)
編寫程序,輸入一批學生的成績,遇0或負數則輸入結束,要求統計並輸出優秀(大於85)、通過(60~84)和不及格(小於60)的學生人數。
運行示例:
Enter scores: 88 71 68 70 59 81 91 42 66 77 83 0
>=85:2
60-84:7
<60 2
試題8 (14分)
編寫程序,輸入一個正整數n,求下列算式的值。要求定義和調用函數fact(k)計算k的階乘,函數返回值的類型是double。

運行示例:
Enter n: 5
sum = 1.71667

2006年春浙江省高等學校
計算機等級考試答案(二級C)

試題1~6 試題7 試題8 合計

試題1~6

A B C D A B C D
(1) √ (13) √
(2) √ (14) √
(3) √ (15) √
(4) √ (16) √
(5) √ (17) √
(6) √ (18) √
(7) √ (19) √
(8) √ (20) √
(9) √ (21) √
(10) √ (22) √
(11) √ (23) √
(12) √ (24) √

試題7
#include <stdio.h>
void main( )
{
int mark, a, p, f;
c = p = f = 0;
printf("Enter scores:");
scanf ("%d", &mark);
while (mark >= 0){
if(mark >= 85) a++;
else if (mark >= 60) p++;
else f++;
scanf ("%d", &mark);
}
printf(">=85:%d\n", a);
printf("60-84:%d\n", p);
printf("<60:%d\n", a);
}

試題8
#include <stdio.h>
void main( )
{ int i, n;
double x, sum;
double fact(int n);
scanf("%d", &n);
sum = 0;
for(i=1; i<=n; i++)
sum = sum + 1/fact(i);
printf("sum=%f\n", sum);
}
double fact(int n)
{ int i;
double res = 1;
for(i=1; i<=n; i++)
res = res*i;
return res;
}

⑨ C語言計算機等級考試試題 求解 急 !

。。唉加油吧,希望你能過