C語言考試題及答案(8)_第1頁
C語言考試題及答案(8)_第2頁
C語言考試題及答案(8)_第3頁
C語言考試題及答案(8)_第4頁
C語言考試題及答案(8)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、一、單項(xiàng)選擇題:(10分,每題2分)1char *p10;該語句聲明了一個(gè): 。A) 指向含有10個(gè)元素的一維字符型數(shù)組的指針變量pB) 指向長度不超過10的字符串的指針變量pC) 有10個(gè)元素的指針數(shù)組p,每個(gè)元素可以指向一個(gè)字符串D) 有10個(gè)元素的指針數(shù)組p,每個(gè)元素存放一個(gè)字符串2若int x;且有下面的程序片斷,則輸出結(jié)果為: 。for (x=3; x<6; x+) printf(x%2) ? "#%d" : "*%dn", x);A) #3 B) *3 C) *3 D) #3*4*4 #4 #4*5 #5#5 *5 3在while(!x

2、)語句中的!x與下面條件表達(dá)式等價(jià)的是: 。A) x!=0 B) x=1 C) x!=1 D) x=04已知struct pointint x;int y;struct rectstruct point pt1;struct point pt2;struct rect rt;struct rect *rp = &rt;則下面哪一種引用是不正確的_。A)rt.pt1.x B)(*rp).pt1.x C)rp->pt1.x D)rt->pt1.x5若二維數(shù)組a有m行n列,則下面能夠正確引用元素aij的為: 。A) *(a+j*n+i) B) *(a+i*n+j) C) *(*(

3、a+i)+j) D) *(*a+i)+jCDDDC二、分析程序并寫出運(yùn)行結(jié)果。(25分,每題5分)1#include <stdio.h>main()int n;static char *monthName="Illegal month", "January", "February","March", "April", "May", "June", "July", "August", "Septe

4、mber", "October", "November", "December"for (n=1; n<=12; n+)printf("%sn", monthNamen); 運(yùn)行結(jié)果是:JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember2#include<stdio.h>#define ARR_SIZE 7void YH(int aARR_SIZE, int n);void PrintYH(

5、int aARR_SIZE, int n);main()int aARR_SIZEARR_SIZE; YH(a, ARR_SIZE-1);PrintYH(a, ARR_SIZE-1);void YH(int aARR_SIZE, int n)int i, j;for (i=1; i<=n; i+) for (j=1; j<=i; j+) if (j=1 | i=j)aij = 1; else aij = ai-1j-1 + ai-1j; void PrintYH(int aARR_SIZE, int n)int i , j ; for (i=1; i<=n; i+)for (

6、j=1; j<=i; j+) printf("%4d", aij); printf("n"); 運(yùn)行結(jié)果是:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 13#include <stdio.h>main()int i, n;for (i=1; i<=5; i+)printf("Please enter n:");scanf("%d", &n);if (n <= 0) continue;printf("n = %dn", n);pr

7、intf("Program is over!n");程序運(yùn)行時(shí)輸入:1 -2 3 -4 5運(yùn)行結(jié)果是:n = 1Please enter n: Please enter n:n = 3Please enter n: Please enter n:n = 5Program is over!4#include <stdio.h>void Func(int n);main()int i;for (i = 0; i < 2; i+)Func(i);void Func(int n)static int t = 1;printf("t=%dn",

8、t+); 運(yùn)行結(jié)果是:t=1t=25#include <stdio.h>int Func(int i);main()int i;for (i=3; i<5; i+)printf(" %d", Func(i);printf("n");int Func(int i)static int k = 10;for (; i>0; i-)k+;return (k);運(yùn)行結(jié)果是: 13 17三、閱讀并完成程序,在標(biāo)有下劃線的空白處填入適當(dāng)?shù)谋磉_(dá)式或語句,使程序完整并符合題目要求。(20分,每空2分)1. 下面程序用于讀入10個(gè)字符串,然后找出最

9、大的字符串并打印。#include <stdio.h>#include <string.h>main() char str1080,maxstring80; int i;printf("Enter ten strings:n");for (i=0; i<10; i+) scanf("%s", stri );strcpy(maxstring, str0); for (i=1; i<10; i+) if (strcmp(maxstring, stri)<0)或strcmp(stri, maxstring)>0s

10、trcpy(maxstring, stri);printf("The max string is:%sn",maxstring);2. 下面這個(gè)程序用于交換兩個(gè)數(shù)組的對應(yīng)元素的值。#include <stdio.h>#define ARRAY_SIZE 10void Swap(int *x, int *y);void Exchange(int a, int b, int n);void InputArray(int a,int n);void PrintArray(int a,int n);main()int aARRAY_SIZE, bARRAY_SIZE,

11、n;printf("Input array lenth n<=10: ");scanf("%d", &n);printf("Input array a:n");InputArray(a, n);printf("Input array b:n");InputArray(b, n); Exchange(a,b,n); printf("After swap:n");printf("Array a:n");PrintArray(a, n);printf("Ar

12、ray b:n");PrintArray(b, n);void Swap(int *x, int *y) int temp; temp=*x ; *x=*y ; *y=temp ;void Exchange(int a, int b, int n) int i;for (i = 0; i < n; i+)Swap( &ai,&bi ); void InputArray(int a, int n)int i;for (i = 0; i < n; i+) scanf("%d ", &ai) ;void PrintArray(int

13、a, int n)int i;for (i = 0;i < n;i+)printf("%d ", ai);printf("n");3. 從鍵盤任意輸入一個(gè)年號(hào),判斷它是否是閏年。若是閏年,輸出"Yes",否則輸出"No"。已知符合下列條件之一者是閏年:能被4整除,但不能被100整除。能被400整除。#include <stdio.h>main() int year, flag;printf("Enter year:");scanf("%d",&yea

14、r );if ( year%4=0&&year%100!=0|year%400=0 ) flag = 1; else flag = 0; if ( flag ) printf("Yes!n"); else printf("No!n"); 四、在下面給出的4個(gè)程序中,共有15處錯(cuò)誤(包括語法錯(cuò)誤和邏輯錯(cuò)誤),請找出其中的錯(cuò)誤,并改正之。(在錯(cuò)誤的代碼下邊畫一根橫線,把正確的代碼寫在旁邊;漏掉的代碼正確插入合適的位置。30分,每找對1個(gè)錯(cuò)誤,加1分,每修改正確1個(gè)錯(cuò)誤,再加1分。)1編程計(jì)算矩陣相乘之積。 #include<stdio.

15、h>#define ROW 2#define COL 3/ void MultiplyMatrix(int aROWCOL,int bCOLROW, int cROWROW) ;main()int aROWCOL, bCOLROW, cROWROW, i, j; printf("Input array a:n");for (i=0; i<ROW; i+)for (j=0; j<COL; j+)scanf("d", &aij); / %dprintf("Input array b:n");for (i=0; i

16、<COL; i+)for (j=0; j<ROW; j+) scanf("d", &bij);MultiplyMatrix(a, b, c);printf("Results:n");for (i=0; i<ROW; i+)for (j=0; j<ROW; j+) printf("%6d", &cij);/ cijprintf("n");void MultiplyMatrix(int aROWCOL,int bCOLROW, int cROWROW) int i, j, k;f

17、or (i=0; i<ROW; i+)for (j=0; j<ROW; j+)for (k=0; k<COL; k+)/ cij = 0;cij = cij + aik * bjk;/ bkj 2編程輸入10個(gè)數(shù),找出其中的最大值及其所在的數(shù)組下標(biāo)位置。 #include <stdio.h>int FindMax(int num, int n, int *pMaxPos);main()int num10, maxValue, maxPos, minValue, minPos, i/;printf("Input 10 numbers:n ");f

18、or (i=0; i<10; i+)scanf("%d", numi); /& numi maxValue = FindMax(num, 10, *maxPos); / &maxPosprintf("Max=%d, Position=%dn",maxValue, maxPos);int FindMax(int num, int n, int *pMaxPos) int i, max;max = num0;for (i = 1, i < n, i+)/ i = 1; i < n;if (numi > max)max

19、= numi;*pMaxPos = i;return max;3韓信點(diǎn)兵。韓信有一隊(duì)兵,他想知道有多少人,便讓士兵排隊(duì)報(bào)數(shù):按從1至5報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為1;按從1至6報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為5;按從1至7報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為4;最后再按從1至11報(bào)數(shù),最末一個(gè)士兵報(bào)的數(shù)為10。你知道韓信至少有多少兵嗎?#include <stdio.h>main()int x;/x=0while (1)if (x%5=1 && x%6=5 && x%7=4 && x%11=10)/ x%5=1 && x%6=5 &am

20、p;& x%7=4 && x%11=10break;x+/x+;printf(" x = %dn", x);4下面函數(shù)Squeez()的功能是刪除字符串s中所出現(xiàn)的與變量c相同的字符。void Squeeze(char s, char c);/ void Squeeze(char s, char c)int i,j;/j=0;for (i=0; si!='0' i+) if (si != 'c') /c sj = si; j+; si='0'/ sj='0'或/ sj='0

21、9;五、編程(15分)從鍵盤任意輸入某班10個(gè)學(xué)生的成績,調(diào)用save函數(shù)把數(shù)據(jù)存入到以你的學(xué)號(hào)命名的磁盤文件中,然后打開該文件讀出數(shù)據(jù),對成績進(jìn)行由高到低的排序,并打印成績不及格的學(xué)生人數(shù)。最后再次調(diào)用save函數(shù)把數(shù)據(jù)存入到原磁盤文件中。要求按照如下給出的函數(shù)原型進(jìn)行編程:void save(float score,int n);void Sort(float score,int n); int Fail(float score,int n);要求用一維數(shù)組做函數(shù)參數(shù)編程實(shí)現(xiàn)成績排序和統(tǒng)計(jì)成績不及格的學(xué)生人數(shù),然后在主函數(shù)中打印這些結(jié)果,不能使用全局變量編程。參考程序如下:void load(float score,int n) /3分 FILE *fp; int i; if(fp=fopen(02406101","rb")=NULL) printf("cannot open infilen"); return; for(i=0;i<n;i+) if(fread(&scorei,sizeof(float),1,fp)!=1) if(feof(fp) fclose(fp); return; printf("file read errorn"); fclose (fp); void save(f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論