第一套上機試題
一、改錯題
【分析】:改錯題的錯誤一般可分為兩類,一類是語法錯誤,這類錯誤可通過調試程序改正,較容易;另一類是邏輯錯誤,這類錯誤程序能運行,但結果不正確,這類錯誤相對較難,修改前必須要看懂和理解程序。
#include"stdio.h"
#define n 4 #define m 3 /*語法錯,#define m 3需另起一行*/
int a[n][m],s[m];
p(int j)/*此函數(shù)的功能為:找出a數(shù)組中第j列的最小元素的值及行號,函數(shù)成功運行后,i中即為j列的最小元素的行號,s[j]中即為j列的最小元素的值*/
{int k,i,x;
x=a[0][j];i=0; /*邏輯錯,從函數(shù)的功能可知,a[0][j]也應賦值給s[j],所以x=a[0][j]應改為s[j]=x=a[0][j]*/
for(k=1;k if(a[k][j] {i=k;s[j]=x=a[k][j];} return i; } main() {int index[m],i,j,k; for(i=0;i for(j=0;j scanf("%d",a[i][j]);/*語法錯,但編譯時不會報錯,scanf語句的一般形式為scanf(格式控制,地址表列),所以a[i][j]應改為&a[i][j])*/ for(j=0,j {index[j]=p[j]; printf("a[%d,%d]=%d\n",index[j],j,s[j]); } i=s[1];k=0; /*邏輯錯,數(shù)組s中存放的是a數(shù)組中每一列的最小值,比較時應從數(shù)組的第0個元素開始,而下面的for循環(huán)是從第1個元素開始的,所以i=s[1]應改為i=s[0]*/ for(j=1;j if(s[j]
{i=s[j];k=j;} printf("min=a[%d,%d]=%d",index[k],k,i); } 二、編程題 【分析】:本題的主要功能是建立一個3行8列的二維數(shù)組,并給其元素賦值,其中第1、2行的值可通過遞推公式xi+1=(25*xi+357)%1024得到,第三行的值取前兩行同列元素的最大公約數(shù),所以編程時可用一個函數(shù)來實現(xiàn)求公約數(shù)的算法。 #include #include #define n 8 /*函數(shù)gcd實現(xiàn)求最大公約數(shù)的算法*/ 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循環(huán)實現(xiàn)給第1、2行數(shù)組元素賦值的功能*/ for(i=0;i<2;i++) for(j=0;j {a[i][j]=x;x=(25*x+357)%1024;} /*下面for循環(huán)通過調用gcd函數(shù)實現(xiàn)給第3行數(shù)組元素賦值的功能*/ for(j=0;j a[2][j]=gcd(a[0][j],a[1][j]); /*下面for循環(huán)實現(xiàn)按題目所給格式輸出二維數(shù)組的功能*/ for(i=0;i<3;i++) {for(j=0;j fprintf(f,"\n"); } fclose(f); }
2010全國計算機等考二級C語言考前密卷匯總
2010年計算機等級考試二級C語言常見知識點
計算機等級考試二級C語言題型分析與應試技巧
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |