計算機二級考試C語言預測上機鞏固試題
距離2017年3月計算機等級考試越來越近了,本站小編為大家整理了2017年計算機二級考試C語言預測上機鞏固試題,希望對各位有所幫助!
一、程序填空題
請補充main()函數,該函數的功能是:如果數組arr的前一個元素比後一個元素小,則把它保存在數組bb中並輸出。
例如,若數組中的元素為:“40,68,62,33,35,52,48,95,66,73”,則輸出:“40,33.35,48,66”。
注意:部分源程序給出如下。
請勿改動函數()main和其他函數中的任何內容,僅在main()函數的橫線上填入所編寫的若干表達式或語句。
試題程序:
#include
#include
世define M 10
void main()
{
int i,n=0;
int arr[M]={40,68,62,33,35,52,48,95,66,73};
int bb[M];
system("CLS");
for(i=0;i<【1】 ;i++)
if(arr[i] 【2】 ;
printf("n***display bb***n"):
for(i=0;i printf("bb[%d]=%2d”,【3】);
}
二、程序改錯題
給定程序中,函數proc()的功能是:使數組中的元素的值縮小5倍。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include
#include
#include
float m[10];
//****found****
int proc(void)
{
int j;
printf(”In subfunc after callingn”);
for(j=0;j<10;j++)
{
//****found****
printf("%f",m[j]%5);
}
}
void main()
{
int i;
printf("In main before callingn");
for(i=0;i<10;i++)
{
m[i]=i+20:
printf("%f",m[i]);
}
proc();
printf("nln main after callingn");
for(i=0;i<10;i++)
printf("%f",m[i]/5);
}
三、程序設計題
學生的記錄由學號和成績組成,M名學生的數據已在主函數中放人結構體數組stu中,請編寫函數proc(),其功能是:按分數的高低排列學生的記錄,高分在前。
注意:部分源程序給出如下。
請勿改動main()函數和其他函數中的任何內容,僅在函數proc()的`花括號中填人所編寫的若干語句。
試題程序:
#include
#define M l6
typedef struct
{
char num[10];
int s;
}
STREC;
void proc(STREC a[])
{
int i,j;
STREC t:
for(i=1;i 排序*/
for(j=0;j if(a[j].s 的記錄,高分在
前*/
{t=a[j];a[j]=a[j+1];a[j+1]=t;)
)
void main()
{
STREC stu[M]={{"GA005",85),{"GA003",
76},
{"GA002",59),{"GA004",85},{"GA001",91),
{fIGA007”,72),{"GA008",64),("GA006",87),
{”GAOl5”,"t5},{"GA013",91),{"GA012",64},
{"GA014",91),{"GAO11",66},{"GA017",64),
{¨GA018",64),{¨GA016",72));
int i;
proc(stu);
printf("The data after sorted:n");
for(i一0;i {
if(i%4==O)
//每行輸出4個學生記錄
printf("n");
printf("%S%4d",stu[i],stu[i].s);
}
printf("n");
}
上機考試試題答案與解析
一、程序填空題
【1】M-1【2】bb[n++]=arr[i]【3】i,bb[i]
【解析】由整個for循環可知,變量i為數組art的下標,題目中要求取出前一個元素比後一個元素小的元素,所以只需要判斷前M-1個元素即可。因此,【1】處填“M-l”;如果第i個元素比第i+1個元素小,將第i個元素放入數組bb中,因此,【2】處填“bb[n++]=arr[i]”。最後,要輸出數組bb中的每一個元素。因此,【3】處填“i,bb[i]”。
二、程序改錯題
(1)錯誤:int proc(void)
正確:void proc(void)
(2)錯誤:printf("%f",m[j]%5);
正確:printf("%f",m[j]/5);
【解析】由主函數中的函數調用可知,函數proc()沒有返回值。因此,“int proc(void)”應改為“void proc(void)”。題目中要求使數組中元素的值縮小到1/5,而不是對5取餘。因此,“printf("%f",m[j]%5);”應改為“printf("%f",m[j]/5);”。
三、程序設計題
void proc(STREC a[])
{
int i,j;
STREC t:
for(i=1;i 排序
for(j=0;j if(a[j].s 的記錄,高分在前
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
【解析】要按分數的高低排列學生的記錄,可以使用冒泡排序法。將每一個學生的成績與其他學生的成績相比較,對不符合要求的記錄交換位置。
-
C語言中遞歸函數的教學方法
導語:函數遞歸基於分治法思想,將複雜的大規模問題轉化為小規模問題進行求解,在算法設計中具有重要的理論意義和實用價值,是C語言教學的難點。下面就由小編為大家介紹一下C語言中遞歸函數的教學方法,歡迎大家閲讀!1.引言C語言是一種語法簡潔緊湊、運算符豐富、可移植...
-
win8系統安裝c語言方法
在win8/win8.1中C語言VC無法運行,那麼win8系統安裝c語言方法又變成了什麼呢?而現在的'計算機都是預裝win8/8.1系統,對於比較原始的TurboC是無法運行的,現在應屆畢業生小編向大家告訴大家win8系統運行TurboC軟件的方法。win8系統安裝c語言方法:win8系統運行TurboC...
-
C語言新人常見問題與錯誤
不知不覺,學習C語言也快一年了。雖然有C語言課,但是老師完全讓我們自己看書,在自學的過程中,和周圍同學交流中,以及後來在CSDN,BCCN,百度知道看帖回帖中,也看到許多C語言新人常遇到的問題與常犯的錯誤。不妨看看吧。以下僅供參考!對於完整的修正後的程序都在code::block...
-
C語言插入排序算法及實例代碼
插入排序是排序算法的一種,下面小編為大家整理了C語言插入排序算法及實例代碼,希望能幫到大家!這裏以從小到大排序為例進行講解。基本思想及舉例説明插入排序的基本思想是,將元素逐個添加到已經排序好的數組中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好...