C語言-理論考試資料.doc_第1頁
C語言-理論考試資料.doc_第2頁
C語言-理論考試資料.doc_第3頁
C語言-理論考試資料.doc_第4頁
C語言-理論考試資料.doc_第5頁
已閱讀5頁,還剩176頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

181目 錄第一部分 理論筆試題2第一章 程序填空題2第二章 程序閱讀題20第三章 程序設計題42第二部分 上機操作模擬題63第一章 程序調試模擬試題63第二章 程序設計模擬試題78第三章 程序設計模擬試題(附)99附錄I 歷年浙江省計算機等級考試試題(二級C)1171999年秋浙江省高校 計算機等級考試試卷(二級C)1172000年秋浙江省高校 計算機等級考試試卷(二級C)1202001年秋浙江省高校 計算機等級考試試卷(二級C)1232002年秋浙江省高校 計算機等級考試試卷(二級C)1282003年秋浙江省高校 計算機登記考試試卷(二級C)1332004年秋浙江省高校 計算機等級考試試卷(二級 C)1372005年秋浙江省高校 計算機等級考試試卷(二級 C)1422006年春浙江省高校 計算機等級考試試卷(二級 C)1482006年秋浙江省高校 計算機等級考試試卷(二級 C)1532007年春浙江省高校 計算機等級考試試卷(二級 C)1572008年春浙江省高校 計算機等級考試試卷(二級 C)162附錄 歷年浙江省計算機等級考試答案(二級C)1671999年秋浙江省高校 計算機等級考試參考答案(二級C)1672000年秋浙江省高校 計算機等級考試參考答案(二級C)1682001年秋浙江省高校 計算機等級考試參考答案(二級C)1692002年秋浙江省高校 計算機等級考試參考答案(二級C)1702003年秋浙江省高校 計算機等級考試參考答案(二級C)1712004年秋浙江省高校 計算機等級考試參考答案(二級C)1722005年秋浙江省高校 計算機等級考試參考答案(二級C)1732006年春浙江省高校 計算機等級考試參考答案(二級C)1742006年秋浙江省高校 計算機等級考試參考答案(二級C)1762007年春浙江省高校 計算機等級考試參考答案(二級C)1772008年春浙江省高校 計算機等級考試參考答案(二級C)177第一部分 理論筆試題第一章 程序填空題一程序填空題專項練習下列程序的輸出結果是16.00,請填空main ( ) int a=9,b=2 ; float x= , y=1.1 , z ; z= a/2+b*x/y+1/2 ;printf (“%5.2f n”,z);下面的程序求兩個數中的較小值,請填空int main (int x ,int y) int z ; z=xy? ;return ( z );# include main ( ) int a ,b ;printf (“%d”, );下面的程序輸出x,y,z三個數中的最小值,請填空# include int x=4 ,y=5 ,x=8 ;int u,v ;u=xy ? ;v=uz ? ;printf (“%d”,v) ;下面的程序從鍵盤輸入一組字符,分別統計大寫字母和小寫字母的個數,請填空# include main ( ) int m=0,n=0 ; char c ; while (!= n) if ( c=A c=Z) m+ ;if ( ) n+ ; 下面的程序是在輸入的一批正數中求最大值,輸入0結束循環,請填空# include main ( ) int a, max=0 ; scanf (“%d ”,&a); while ( ) if () max=a ; scanf (“%d”,&a ) ; printf (“%d”,&a) ;下面的程序計算1到200之間的奇數之和以及偶數之和,請天空# include main ( ) int k ,n , s1=0 , s2=0 ; for (k=1; ; k+ ) if ()s2=s2+k ; else s1=s1+k ;printf (“s1=%d , s2=%d n” , s1 ,s2 );一個整數與3的和是5的倍數,與3的差是6的倍數,下面的程序求符合條件的最小數,請填空# include main ( ) int n ; n=1; while (1) n=n+1; if () break ; printf (“n=%d” , n) ;下面的程序在輸入m后求n使n!=m= (n+1)! (例如輸入726,應輸出n=6),請填空void main ( ) int ; scanf (); for ( n=2 ; jc=m ;n+) jc=jc*n ; printf (“n=%d n”,); 若a,b是親密數對,則a的因子和等于b,b的因子和等于a且a不等于b,下面的程序是輸出6至10000之間的親密數對,請填空# include viod main ( ) int a , b, c, i ; for (a=6; a=10000 ;a+) b=1;for (i=2; i=a/2 ;i+) if () b+= i ; for (i=2 ; i=b/2 ;i+) if (b%i=0) c+=i ;if(a!=b!) printf (“%d %d n”,a ,b) ; 下述程序用“碾轉相除法”計算兩個整數m和n的最大公約數。該方法的基本思想是計算m和n相除的余數,如果余數為0則結束,此時的被除數就是最大公約數。否則,將除數作為新的被除數,余數作為新的除數,繼續計算 m和n相除的余數,判斷是否為0,請填空。# include main ( )int m ,n , w ; scanf (“%d ,%d ”,&m ,%n ); while (n) w=; m=; n=;printf (“%d”,m) ;輸入個實數,輸出其中最大值,最小值,請填空# include void main ( )float num ,nmax ,nmin ;scanf (“%d”,&n) ;scanf (“%f”,&num) ;nmax=num ;for ( i=2;i nmax ) nmax=num;printf (“MAXf,MIN=%F n”, nmax ,xmin) ;下面程序的功能是輸入至100之間每位數的乘積大于每位數的和的數,例如23,其各位數乘積為2*3=6 .各位數之和為 2+3=5,故23滿足條件,請填空使程序完整.# include main ( ) int m ,n ,k=1 ,s=0 ;for(n=1;n,=100;n+)k=1;s=0;while()k*m10;s+m10;if(ks)printf (“%d ,%d, %dn”,n ,k ,s ); 下面的程序計算并輸出方程X2+Y2+Z2=1989的所有整數解,請填空# include void main ( ) for (i1= -45;i1=45;i1+)for ()for (i3= -56;i3=45;i3+)if ()printf (,i1 ,i2 ,i3);下列函數輸出一行字符:先輸出k個空格,再輸出n個指定字符(由實參指定),請填空# include void print ( ) int i; for ( i=1;ik;i+) for ()printf (“%c”,zf);main ( ) int m=3 ,n=5 ; char ch=#; print ( m , n , ch);下面的程序是求出數組a的兩條對角線上的元素之和,請填空# include main ( )int a33=1,3,5,7,9,11,13,15,17;int i ,j ,sum1=0 ,sum2=0;for (i=0;i3;i+) for (j=0;j3;j+) if (i=j) ;for (i=0;i3;i+) for (;j-) if(i+j = =2) sum2=sum2+aij;printf (“sum1=%d,sum2=%d n”,sum1,sum2);下面的程序是輸入10個數,輸出其中與平均值之差的絕對值為最小的數,請填空# include void main ( ) float a10 , s, d, x;int i ;for (i=0;i10;i+) ;for (i=0;i10;i+) s+ =a i;s/=100;d=fabs(a0-s); ;for (i=1;i10;i+) if (fabs (ai-s)d) d=;x=ai; printf (“%f”, x ) ;下面的程序將十進制整數number轉換成n進制,請填空# include main ( ) int i=0,number , n ,j , num20; scanf (“%d”,&number ); scanf (“%d”,&n);do numi =; base = ; i + +; while (number ! =0);for ()printf (“%d”,numj ) ;下面程序的功能是輸入10個數,找出最大值和最小值所在的位置,并把兩者對調,然后輸出調整后的10個數,請填空# include main ( ) int a10 ,max ,min ,i , j , k , t ; for (i=0;i10;i + +)scanf (“%d”,&ai);max =a0;min=a0;for ( i=0;i10;i + +) if (aimax ) max=ai;for (i=0;i10;i + +) printf (“%d”,ai);下面的程序將二維數組a的行和列元素呼喚后存到另一個二維數組b中,請填空# include main ( ) int a23 = 1,2,3,4,5,6; int i ,j b32; printf (“arraya: n”);for (i=0;i2;i + + ) for ( j=0;j + +) printf (“%5d”,aij);printf (“n”);printf(“array b:n”);for (i =0;i + +) for (j=0;j=1;j + +) printf (“%5d”,aij )下面程序的功能是輸入若干字符,分別統計數字字符個數,英文字母個數,輸入換行符時輸出統計結果,請填空# include void main ( )char ch; while ( ( )! = n ) if (ch=0& ch=a& ch=z) s2+ + ; 下面的程序是對鍵盤輸入的兩個字符串進行比較,然后輸出其中第一個不同字符的ASCI I碼之差,例如:若輸入兩個字符串分別為abcdefg和abceef,則第一個不同字符為d和e,輸出為-,請填空# include main ( ) char strl 100,str2100,c;int i = 0 , s ; printf (“Enter String 1:”);gets ( str1); printf (“Enter String 2:”);gets ( str2); while ( (strli = =str2i&(1) ) )i + +; s =; printf (“%d n”,s );下面程序的功能是:從鍵盤上輸入若干學生的成績,統計并輸出最高成績和最低成績,當輸入負數時結束輸入,請填空# include main ( )float x , amax ,amin ; scanf (“%f”,&x); amax =x ;amin = x; while () if (xamax ) amax=x; if () amin =x ; scanf (“%f”,&x);printf (“namax =%f namin=%f n”, amax ,amin );設數組a包括10個整型元素,下面程序的功能是求出a中各相鄰兩個元素的和,并將這些和存在數組b中,按每行個元素的形式輸出,請填空# include main ( ) int a10, b10 ,i ; for (i=0;i10;i + +) scanf (“%d”,); for (i=1;i10;i + +) for (i=1;i10;i + +) printf (“%3d”,bi ); if (0)printf (“ n ”); 下面程序的功能是在三個字符串中找出最小的,請天空# include # include main ( ) char s20 , str320 ; int i ; for (i=0 ;i=3 ;i + +) gets(stri ) ; strcpy(s , ) ; if (strcmp(str2 , s) 0) strcpy(s , str2 ) ; printf (“%s n”, ) ;下面程序的功能是在任意的字符串a中將與字符c相等的所有元素的下標值分別存放在整型數組b中,請填空# include # include main ( ) char a80;int i , b80, k=0;gets(a);for (i=0;ai!=0;i + +) if () bk = i;for (i=0;ik;i + +) printf (“%3d”,bi);輸入一個字符串(不超過60),將串中連續的空格符保留1個,例如若輸入字符串為Happy new year!,則輸出字符串為Happy new year!,請填空# include # include void main ( ) char b61;int i ;gets(b);for (i = 1;i + + ) if (bi-1 = =&bi = =) ( b+i-1 , b+i );i - - ; /提示:此處填入正確的函數名 下面的函數fun的功能是將形參x的值轉換成二進制數,所得二進制數的每一位放在一維數組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請填空# include void fun ( int x , int b )int k=0 , r , i ;do r= bk + + = r; while (x);for (i=k-1;i=0;i - -)printf (“%d”,bi);main ( )int a = 10 , b10;fun(a,b);函數expand( char s,char t )在將字符串s復制到字符串t時,將其中的換行符和制表符轉換為可見的轉義字符,即用”n”,表示換行符,用”t ”表示制表符,請填空expand (char s,char t ) int i , j;for (i = j =0;si!=0;i + +)switch ( si ) casen:(1) =;tj + +=n;caset:t;tj + +=t;break;default:t = si;break ; tj =;下面的程序輸出如下形式的二項式系數表要求表的行數在運行時輸入,若小于1或大于10則重新輸入,請填空1 1 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1# include void main ( ) int a10100,i ,j ,n; while (,n10); for (i=0;i2;i + +) ai0 = 1;for( i=2;in;i + +) ai0 = 1;for (j=1;j=i;j + +) aij=ai-1j +; for (i=0;in;i + +) for (j=0;j=i;j + +) printf (“%4d”,aij); 折半查找法的思路是:先確定待查元素的范圍,將其分成兩半,然后測試于中間點元素的值如果該該待查元素的值大于中間點元素,就縮小待查范圍,只測試中間點之后的元素;反之,測試中間點之前的元素,測試方法同前函數binary的作用是應用折半查找法從存有10個整數的a數組中對關鍵字m進行查找,若找到,返回其下標值;反之,返回1,請填空binary ( int a10 , int m)int low = 0,high = 9,mid; while (low = high ) mid = (low +high)/2; if (mamid ) else return (mid);return (-1);.下面的函數invert的功能是將一個字符串的內容顛倒過來,請填空。void invert (char str)int i,j,k;for( (1) ;ij;i+,j-)k=stri; (2) ;strj+k;下面程序的功能是計算函數 F(x,y,z) = (x+y)/(x-y) + (z+y)/(z-y)的值,請選擇填空# include #include float f(float ,float );main ( )float x, y, z ,sum;scanf (“%f,%f,%f”,&x, &y, &z); sum = f ()+(); printf(“sum = %f n”,sum);float f( float a, float b)float value ;value = a/b;return (value);(1) A. x-y , x+y (2) A. x-y , x+yB. x+y , x-y B. x+y , x-y C. z+y , z-y C. z+y , z-y D. z-y , z+y D. z-y , z+y 下面程序的功能是根據輸入的“Y”(“y”)與“N”(“n”),在屏幕上分別顯示出“This is Yes”與“This is NO”,請填空。#include void YesNO(char ch) switch (ch) case y:case Y:printf (“ n This is Yes .n”);case n:case N: printf (“n This is No .n”);main ( ) char ch ; printf (“n Enter a char : y(Y)or n(N) ”); ch = ; printf (“ch : %c”,ch) ; YesNo (ch) ;下面函數pi的功能是:根據以下公式,返回滿足精度(0.0005)要求的值,請填空/2=1+1/3+(1/3)*(2/5)+(1/3)*(2/5)*(3/7)+ (1/3)*(2/5)*(3/7)*(4/9)+# include # include double pi (double ep) double s, t ; int n ; for (;tep;n + +) s + = tt = n*t /(2*n+1) ;return () ;main ( ) double x , y ; printf (“n Please enter a precision:”) ; scanf (“%f”,&x) ; y = pi(x) ; printf (“n ep = %f , ” =%f , x , pi(x) ) ;下面的程序是輸入若干個正整數,判斷每個數從高位到低位各位數是否按值從小到大排列,請填空# include void main ( ) int n ; while (scanf (“%d”,&n) , n0 ) if (fun1(n) ) printf (“%d 中各位數字按從小到大排列 n ”,n); else printf (“%d 各位數字未按從小到大排列n”,n ) ;int fun1 () int k ; while (m)if (m/10%10k) return 0 ; else ;k = m%10 ; return 1 ;帶參數的宏定義程序如下,請填空#define ABS(x) ( (x)0? (x): -(x) )#define MAX(x,y) ( (x)(y)? (x):(y) )void main ( )int a = -3 ;a = ABS(a + 4) ;printf (“max = %d n” , MAX(a,6) ) ;則預編器處理后的新源程序為void main ( ) int a = -3 ; a= ; printf (“max = %d n”,) ;下面程序的功能是:從鍵盤上輸入一行字符存入一個字符數組串,然后輸出該字符串,請填空# include main ( ) char str81, * pstr ;int i ;for (i=0 ; i80 ; i + +) stri = getchar ( ) ; if (stri = = n) break ; stri = ; pstr = str ; while (* pstr) putchar (* pstr ) ;下面程序的功能是將兩字符串中奇數位上的數字組合輸出,如該題應輸出63 85 , 請填空# include main ( )char ch25 = “693” , “825”,* p2 ; int i , j ,s = 0 ; for ( i=0 ; i2 ; i + +) for (i=0 ; i= 0& pij= 9 ; j + =2)printf (“%d” , s ) ;下面程序的功能是調用find函數求實參數組中最大值,再調用find函數求實參數組中最小值,請填空# include void main ( ) float s ,a7 = 3,13,24,46,15,36,27 ; float find (float * , int ,int ) ; s = find(a, 7,1) ; printf (“%f n ”,s) ;float find(float * p, int n , int flag ) int i ; float t , fh ; if (flag=0) fh = 1 ;else fh = -1 ; for (i = 1 ; i t*fh ) t = * (p+i) ;下面程序的功能是對數組按值從大到小排序后輸出,請填空# include main ( ) float a7 = 6,46,13,8,3,25,9 ; void sort (float * ,int ) ; for (int i = 0 ; i7 ; i + +) printf(“%f”, ai ) ; printf (“ n ”) ;void sort () int i , j , k ; float t ; for (i=0 ; in-1 ;i + + ) k = i ;for (j = i+1 ;jn ; j + + ) if() k = j ;* (p+i) = * (p+k) ; *(p+k)=t ;下面的程序是讀入六個字符串,排序后輸出,請填空# include void sort(char * a , int n ) int i , j , l ; char * temp ; for (i=0 ; in-1 ; i + + ) l=i ;for (j=i+1 ; jn ; j + + ) if(strcmp(aj , al ) 0 ) l=j ;if (l!=i) temp = ai ; ai = al ; al = temp ;void main ( )char * name 6 , ch630 ; int k ; for (k=0 ; k6 ; k + +) for (k=0 ; k6 ; k + +) gets(name k ) ; for (k=0 ; k6 ; k + +) puts(name k ) ;下面程序的功能是對具有個元素的char類型數組,保持前四個元素中的內容不變,從下標為4 元素開始,全部設置為 * ,請填空# include # define M 10# define B 4void star( char * ,int ) ;main ( )int i ;char a10 ;for (i=0 ; i10 ; i + +) scanf (“%c” , &ai) ;star ()for (i=0 ; i10 ; i + +)printf (“%c”,ai ) ;void star( char * a , int n) int i ; for (i=0 ; ;i + +).下列程序中,函數find-data在已從小到大排好序的數組中尋找指定數data,采用二分查找算法,找到則返回該元素地址,找不到返回NULL,請填空# include find-data (float * a ,int n , float data ) ;low = 0 ; high = n-1 ;while (low data ) high = mid 1 ;else if (amid data ) low = mid +1 ; else ; ;void main ( ) float b10 , * p , data ; int i ;for (i=0 ; i 10 ; i + + ) scanf (“%f”, b+i ) ;scanf(“%f”, &data )p=find-data(b , 10 , data) ;if (p) printf(“%f n” , * p) ;else printf (“查找不到%f n”, data ) ;下面程序的功能是:計算學生五門課的平均成績,要求將五門課和平均成績定義在一個結構體中,請填空# include struct stu float grade5 ; float average ; ;void main ( ) int i ; struct stu any ; printf (“Input the grades of five course : n”) ;for (i = 0 ; i 5 ; i + +) ; any . average = 0 ; for ( i =0 ; i5 ; i + +) ; any . average / = 5 ; printf (“The average is %5.2f n ”,any .average ) ;下面的程序讀入時間并加1 秒后輸出,格式為hh:mm:ss ,當小時等于24小時置為0,請填空# include struct int hour , minute , second ; time ;void main (void)scanf (“%d:%d:%d”,) ;time . second + + ;if ( = =60) time . second = 0 ;if (time . minute = = 60) time . hour + + ; time . minute = 0 ; if() time . hour = 0 ;printf (“%d : %d : %d n” , time .hour ,time. minute , time . second ) ;下面的函數用于將鏈表中的各節點的數據依次輸出,請填空void print(struct student * head ) p = head ;if(head! = NULL)do printf(“%d n”, p - data ) ; while () ;已建立學生某門課成績鏈表(成績存于score域中),下面的函數用于計算平均成績并輸出,請填空void print (struct student * head ) struct student * p ; float num ; ; ; if (head ! = NULL) for (num = 0 ; p! = NULL ; , i + +) num+ = p - score ;num = num / i ;printf (“%8.1f n” , num ) ;已建立學生某門課成績鏈表(成績存于score域中,學號存于num域中),下面的函數用于輸出待補考學生的學號,成績及補考學生人數,請填空void require (struct student * head ) struct student * p ; ;if (head ! =NULL)while (P! = NULL)if ( ) printf (“%7d %6.1f n”, p - num , p - score ) ; x + + ; p = p - next ;printf (“%d n”, x ) ;下面的程序是輸入若干個學生的姓名,學號,數學,英語,計算機成績到文件student .dat中,請填空# include void main ( ) char name8 , numb8 ; scanf (“%d” , &n) ; for (i = 0 ; i = n ; i + +) scanf(“%s %s %d %d %d”, name , numb , &m , &e , &c) ; fprintf (fp, “%s %s %d %d %d n”, name , numb , m , e , c) ; ; 文本文件a.dat 、b.dat中每行存放一個數且按從小到大存放下面的程序將這兩文件中的數據合并到c.dat中且數據也要從小到大存放,假設文件a.dat數據為1,6,9,18,27,35,文件b.dat數據為10,23,25,39,61,則c.dat中的數據應為1,6,9,10,18,23,25,27,35,39,61請填空# include #include void main ( )FILE * f1 , * f2 , *f3 ; int x , y ;if ( (f1=fopen (“a.dat”, “r”) = =NULL

溫馨提示

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

評論

0/150

提交評論