三級C語言簡介
三級C語言程式設計是全國計算機等級考試(NCRE)三級網路技術,資料庫技術,信息管理技術上機考試考核內容。一般每次考試題庫由100道C語言程式設計題組成(俗稱“南開百題”)。上機考試時每個考生從百題題庫中隨機抽選一題,在規定的時間內完成其程式設計要求。
考試時間
2009年上半年考試時間定於3月28日至4月1日,下半年為9月19日至23日。一般上午考筆試,上機考試從筆試的當天下午開始,有時是第二天上午。具體見考試通知或考生准考證。
上機考試時間為60分鐘。
上機環境
Visual C++6.0
題型分類
求取給定範圍的多個素數
數位分解後按數位數字篩選統計並排序以待定字母分割字元串並重組
按結構體成員進行多關鍵字排序
字元串排序
數據相鄰數篩選統計並排序
字元替換
字元串搜尋
以遞推關係求數列值
用疊代法求方程的根
對給定範圍內的數進行篩選並統計
判斷迴文數
數值篩選與統計
數位分解並重組後再篩選統計並排序
計算方差
選票問題
SIX與NINE問題
特殊排序
出圈問題
結構體篩選並排序
字元串循環位移
例題參考
題目 已知數據檔案IN.DAT存有200個四位數,並以調用讀函式readDat()把這些數存入數組a中,請考生編制一函式jsVal(),其功能是:如果四位數 各位上的數字均是0或2或4或6或8,則統計出滿足此條件的個數CNT,並把這些四位數按從大到小的順序存入數組b中。最後main()函式調用寫函式writeDat()把結果cnt以及數組b中符合條件的四位數輸出到OUT.DAT中。
注意:部分程式已給出。
程式中已定義數組a[200],b[200];已定義變數:cnt。
請勿改動數據檔案IN.DAT中的任何數據及主函式main()、讀函式readDat和寫函式writeDat()的內容。
(因為此處沒有數據檔案IN.DAT,所以讀者拷貝該程式,編譯能通過,但執行不起來)
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
int m,j,k,gg,ss,bb,qq,data;
for(m=0;m<200;m++)
{qq=a[m]/1000;
bb=a[m]%1000/100;
ss=a[m]%100/10;
gg=a[m]%10;
if(qq%2==0&&bb%2==0&&ss%2==0&&gg%2==0)
b[cnt]=a[m];
cnt++;
}
m++;
}
for(j=0;j<cnt-1;j++)
for(k=j+1;k<cnt;k++)
if(b[j]<b[k])
{
data=b[k];
b[k]=b[j];
b[j]=data;
}
}
void readDat()
{
int i;
FILE *fp;
fp = fopen("IN.DAT", "r");
for (i=0; i<MAX; i++)
fscanf(fp, "%d,", &a[i]);
fclose(fp);
}
void writeDat()
{
FILE *fp;
int i;
fp = fopen("OUT.DAT", "w");
fprintf(fp, "%d\n", cnt);
for (i=0; i<cnt; i++)
fprintf(fp, "%d\n", b[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("滿足條件的數=%d\n", cnt);
for (i=0; i<cnt; i++)
printf("%d ", b[i]);
printf("\n");
writeDat();
}
以上運行的結果是:
滿足條件的數=4
6662 4602 2668 2264
正確答案應該如下:
滿足條件的數=6
6662 6604 4602 2842 2668 2664評分參考
(一般採用評分軟體評分)
本題共100分。
執行檔 已生成
輸出檔案 存在
第1行數據應為:6 結果不正確;
第2行數據應為:6662 結果正確;
第3行數據應為:6604 結果不正確;
第4行數據應為:4602 結果不正確;
第5行數據應為:2842 結果不正確;
第6行數據應為:2668 結果不正確;
第7行數據應為:2264 結果不正確;
本題共應輸出7行數據,1行結果正確,得14分。
如果所編程式編譯不成功,或者執行檔未生成,直接判0分。因此在上機考試成績中,0分和100分的分布比例比較大。
void jsVal()
{
int bb[4];
int i, j, k, flag;
for (i=0; i<200; i++)
{
bb[0] = a[i]/1000;
bb[1] = a[i]%1000/100;
bb[2] = a[i]%100/10;
bb[3] = a[i]%10;
for (j=0; j<4; j++)
{
if (bb[j]%2 == 0)
{
flag = 1;
}
else
{
flag = 0;
break;
}
}
if (flag == 1)
{
b[cnt] = a[i];
cnt++;
}
}
for (i=0; i<cnt-1; i++)
for (j=i+1; j<cnt; j++)
if (b[i] < b[j])
{
k = b[i];
b[i] = b[j];
b[j] = k;
}
}