2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第1頁(yè)
2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第2頁(yè)
2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第3頁(yè)
2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第4頁(yè)
2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2021年內(nèi)蒙古自治區(qū)赤峰市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________

一、2.填空題(10題)1.fseek函數(shù)的正確調(diào)用形式是【】。

2.設(shè)有以下定義和語(yǔ)句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

3.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

4.以下程序中給指針p分配3個(gè)double型動(dòng)態(tài)內(nèi)存單元,請(qǐng)?zhí)羁铡?/p>

#include<stdio.h>

main()

{double*p;

p=(double*)malloc((【】);

p[0]=1.5;p[1]=2.5;p[2]=3.5;

printf("%f%f%f\n",p[0],p[1],p[2]);

}

5.x和y都是double型變量,x的初值為4.0,y的初值為2.0,則表達(dá)式pow(y,fabs(x))的值為______。

6.以下程序的輸出結(jié)果是【】。

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

printf("%d\n",t);

}

7.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對(duì)數(shù)據(jù)的操作運(yùn)算。

8.填空補(bǔ)充以下程序。

#define【】30

{【】;

total=numPRICE;

printf("total=%d,num=%d\n",【】);

}

9.結(jié)構(gòu)化程序設(shè)計(jì)的三種基本邏輯結(jié)構(gòu)為順序、選擇和【】。

10.以下程序的運(yùn)行結(jié)果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

printf("%d\n",MAX(i,j));

}

二、單選題(10題)11.有以下程序:#include<stdio.h>main(){intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<3;i++)for(j=1;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是()。A.1B.3C.4D.0

12.采用開放定址法處理散列表的沖突時(shí),其平均查找長(zhǎng)度()

A.高于二分查找B.高于鏈接法處理沖突C.低于二分查找D.低于鏈接法處理沖突

13.

14.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

15.

16.以下敘述中正確的是()。

A.C語(yǔ)言函數(shù)可以嵌套調(diào)用,例如:fim(fun(X))

B.C語(yǔ)言程序是由過(guò)程和函數(shù)組成的

C.C語(yǔ)言函數(shù)不可以單獨(dú)編譯

D.C語(yǔ)言中除了main函數(shù)外,其他函數(shù)不可作為單獨(dú)文件形式存在

17.若以下選項(xiàng)中的變量已正確定義,則正確的賦值語(yǔ)句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

18.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語(yǔ)句中錯(cuò)誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

19.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

20.若已知一個(gè)棧的進(jìn)棧序列是1,2,3…n,其輸出序列是P1,P2,P3,…PN,若P1=n,則Pi(1<i<p)為()。

A.IB.n-iC.n-i+1D.不確定

三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過(guò)調(diào)用隨機(jī)函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把0~9歲的人數(shù)存放在d[0]中,把10~19歲的人數(shù)存放在d[1]中,把20~29歲的人數(shù)存放在d[2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都存放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

22.請(qǐng)編寫函數(shù)proc(),對(duì)長(zhǎng)度為9個(gè)字符的字符串,除首、尾字符外,將其余7個(gè)字符按ASCⅡ碼值降序排列。例如,原來(lái)的字符串為HabcdefA,則排序后輸出為HfedcbaA。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入所編寫的若干語(yǔ)句。試題程序:

23.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個(gè)兩位正整數(shù)合并成一個(gè)新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個(gè)位數(shù)依次放在變量c的千位和十位上,b中的十位數(shù)和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。例如,當(dāng)a=45,b=12,調(diào)用該函數(shù)后c=4251。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的記錄已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是找出成績(jī)最高的學(xué)生記錄,通過(guò)形參將其返回主函數(shù)(規(guī)定只有一個(gè)最髙分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}

25.編寫一個(gè)函數(shù),輸入n個(gè)字符串,串與串之間以Enter鍵分隔,找出最短字符串中第一個(gè)字符串,傳回該串地址(用一個(gè)新串“*”作為結(jié)束輸入的標(biāo)志)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:

26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù)fun(),該函數(shù)的功能是使變量h的值保留兩位小數(shù),并對(duì)第3位進(jìn)行四舍五入(規(guī)定h的值為正數(shù))。若h的值為1234.567,則函數(shù)返回1234.570000;若h的值為1234.564,則函數(shù)返回1234.560000。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

27.輸出1900~2000年中所有的閏年。每輸出3個(gè)年號(hào)換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)

28.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績(jī)和平均分組成,學(xué)號(hào)和8門課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放人記錄的ave成員中。

例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROGl.C中。

請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語(yǔ)句。

29.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。程序中將m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、40。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:

30.使用VC++2010打開考生文件析下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中值最大的元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的元素已在主函數(shù)中給出。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineM3#defineN4voidfun(inttt[M][N],intpp[N]){}voidmain(){ intt[M][N]={{68,32,54,12},{14,24,88,58},{42,22,44,56}}; intp[N],i,j,k; ystem(“CLS”); printf(“Theoriginaldatais:\n”); for(i=0;i<=""p=""> { for(j=0;j<=""p=""> printf(“%6d”,t[i][j]); printf(“\n”n); } fun(t,p); printf(“\nTheresultis:\n”); for(k=0;k<n;k++)<p=""></n;k++)<> printf(“%4d”,p[k]); printf(“\n”);}

四、2.程序修改題(10題)31.下列給定程序中函數(shù)fun()的功能是:將長(zhǎng)整型數(shù)中每一位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在沖。高位仍在高位,低位仍在低位。例如當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。

請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longs1=1;

/*************found**************/

t=0;

while(s>0)

{d=s%10;

/*************found**************/

if(d%2==0)

{*t=d*s1+*t;

s1*=10;

}

s/=10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

32.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個(gè)3行3列的矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。

請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

intfun()

{

inta[3][3],sum;

inti,j;

/*************found**************/

sum=1;

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

/*************found**************/

scanf("%d",a[i][j]);

}

for(i=0;i<3;i++)

sum=sum+a[i][i];

printf("Sum=%d\n",sum);

}

main()

{

fun();

}

33.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,然后求兩條對(duì)角線上的各元素之和,返回此和數(shù)。

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM5

/**********************************/

ihtfun(intn,intxx[][])

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:\n",M,M);

for(i=0;i<M;i++)

{for(j=0;j<M;j++)

/**********************************/

printf("%4f",xx[i][j]);

printf("\n");

}

for(i=0;i<n;i++)

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

clrscr();

printf("\nThesumofallelementson2

diagnalsis%d",fun(M,aa));

}

34.數(shù)列中,第一項(xiàng)為3,后一項(xiàng)都比前一項(xiàng)的值增5。下列給定程序中,函數(shù)fun()的功能是:計(jì)算前n(4≤n≤50)項(xiàng)的累計(jì)和。在累加過(guò)程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)里。如,當(dāng)n的值為20時(shí),該數(shù)列為3,8,13,18,23,28,…,93,98。符合此條件的累加值應(yīng)為42,126,366,570,1010。

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#defineN20

intfun(ihtn,int*a)

/*************found*************/

{inti,j,k,sum;

sum=0;

for(k=3,i=0;i<n;i++,k+=5)

{sum=sum+k;

/************found***************/

if(sum%4=2)

a[j++]=sum;

}

/*************found**************/

returnj;

}

main()

{inta[N],d,n,i;

printf("\nEntern(4<=n<=50):");

scanf("%d",&n);

d=fun(n,a);

printf("\n\nTheresult:\n");

for(i=0;i<d;i++)printf("%6d",a[i]);

printf("\n\n");

}

35.給定程序MODll.C中函數(shù)fun的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,若輸入:edcba,則應(yīng)輸出:abcde。

請(qǐng)改正程序中的錯(cuò)誤,使它能統(tǒng)計(jì)出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

36.給定程序中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。

例如,若m中的值為5,則應(yīng)輸出:1.463611。

請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。

[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdi0.h>

doublefun(intm)

{

doubley=1.0;

inti;

/*************found*************/

for(i=2;i<m;i++)

/*************found*************/

y+=1/(i*i);

return(y);

}

main()

{

intn=5;

printf("\nTheresultis%1f\n",fun(n));

}

37.下列給定的程序中,fun()函數(shù)的功能是:將p所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。例如,若輸入:

Iamastudenttotaketheexamination

則應(yīng)輸出:IaMAstudenTtOtakethEexaminatioN

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注童:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<ctype.h>

#include<stdio.h>

voidfun(char*p)

{

intk=0;

for(;*p;p++)

if(k)

{

/*************found**************/

if(p=='')

{

k=0;

/*************found**************/

*p=toupper(*(p-1));

}

}

else

k=1;

}

main()

{charchrstr[64];

intd;

clrscr();

printf("\nPleaseenteranEnglishsentencewithin63letters:");

gets(chrstr);

d=strlen(chrstr);

chrstr[d=='';

chrstr[d+1]=0;

printf("\nBoforechanging:\n%s",chrstr);

fun(chrstr);

printf("\nAfterchanging:\n%s",chrstr);

}

38.下列給定程序中函數(shù)fun()的功能是:從低位開始取出長(zhǎng)整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為642。

請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

/*************found**************/

voidfun(longs,longt)

{longs1=10;

s/=10;

*t=s%10;

/*************found**************/

while(s<0)

{s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

39.給定程序MODll.C中函數(shù)fun的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:

例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。

請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。

注意:不要改動(dòng)smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

40.下列給定程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。

請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。

[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

#defineN20

voidfun(inta[],intn)

{

inti,j,t,p;

for(j=0;j<n-1;j++){

/***********found***********/

p=j

for(i=j;i<n;i++)

if(a[i]<a[p])

/***********found***********/

p=j;

t=a[P];

a[p]=a[j];

a[j]=t;

}

}

msin()

{

inta[N]=(9,6,8,3,-1),i,m=5;

printf("排序前的數(shù)據(jù):”);

for(i=0;i<m;i++)

printf("%d",a[i]);

printf("\n");

fun(a,m);

printf("排序后的數(shù)據(jù):");

for(i=0;i<m;i++)

printf("%d",a[i]);

printf("\n");

}

五、程序改錯(cuò)題(2題)41.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

42.下列給定程序中,函數(shù)fIm和funx的功能是:用二分法求方程的一個(gè)根,并要求絕對(duì)誤差不超過(guò)0.001。

.例如,若給m輸入一100,n輸入90,則函數(shù)求得的二個(gè)根為2.000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、操作題(2題)43.以下程序的功能是:輸出a、b、c三個(gè)變量中的最小值。

#include<stdio.h>

main()

{inta,b,c,t1,t2;

scanf("%d%d%d",&a,&b,&c);

t1=a<b?【】;

t2=c<t1?【】;

printf("%d\n",t2);

}

44.有以下語(yǔ)句段:

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式輸出n1和n2的值:

n1=10

n2=20

每個(gè)輸出行從第一列開始,請(qǐng)?zhí)羁铡?/p>

參考答案

1.fseek(文件指針位移量起始點(diǎn))fseek(文件指針,位移量,起始點(diǎn))解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點(diǎn))

“起始點(diǎn)”用0,1或2代替,其中,0代表“文件開始”;1為“當(dāng)前位置”;2為“文件末尾”?!拔灰屏俊敝敢浴捌鹗键c(diǎn)”為基點(diǎn),向前移動(dòng)的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當(dāng)文件的長(zhǎng)度大于64k時(shí)不致出現(xiàn)問(wèn)題。ANSIC標(biāo)準(zhǔn)規(guī)定在數(shù)字的末尾加一個(gè)字母L,就表示long型。

2.6060解析:程序中定義a是一個(gè)3行2列的二維數(shù)組,p是指向兩個(gè)元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

3.str[i]或str+iistr[i]或str+i\r\ni

4.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:該函數(shù)的調(diào)用格式是malloc(n),作用是申請(qǐng)n個(gè)字符的存儲(chǔ)單元,并返回該存儲(chǔ)區(qū)的首地址,實(shí)際調(diào)用的時(shí)候可在前面加上“(類型說(shuō)明符*)”,以轉(zhuǎn)換成需要的類型的地址。所以在此空白處應(yīng)該填寫3*sizeof(double)或size(double)*3或其他等價(jià)的表達(dá)式。

5.1616解析:函數(shù)運(yùn)算不改變數(shù)據(jù)類型,所以結(jié)果也是double型,fabs(x)是對(duì)x取絕對(duì)值,pow(y,fabs(x))是y的labs(x)次冪,即2.04。0=16.000000(注意;結(jié)果為double型)。

6.77解析:在C語(yǔ)言中,宏定義是直接替換的,所以在劉表達(dá)式MAX(a+b,c+d)*10進(jìn)行替換后,表達(dá)式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個(gè)條件表達(dá)式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個(gè)表達(dá)式的值(否則用(c+d)*10的值作為整個(gè)表達(dá)式的值),而(a+b)的值為7。所以整個(gè)表達(dá)式的值為7。

7.存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個(gè)方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)及對(duì)數(shù)據(jù)的操作運(yùn)算。

8.PRICEintnumtotaltotalnum

9.重復(fù)(或循環(huán))重復(fù)(或循環(huán))

10.99解析:本題考查宏定義與三目運(yùn)算符的綜合用法,宏定義是原樣替換,本題中,如果a>b成立,則a+1的值為整個(gè)表達(dá)式的值,否則為b+1的值為整個(gè)表達(dá)式的值,(應(yīng)注意后面的加1)。

11.C本題考查了兩層for循環(huán)。外層循環(huán)增量i的值作為內(nèi)層循環(huán)執(zhí)行次數(shù)的值使用。

12.B

13.A

14.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲(chǔ)區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時(shí),返回值為負(fù)數(shù);當(dāng)str1=str2時(shí),返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運(yùn)算符比較兩個(gè)字符串的大小)。

15.D

16.AC語(yǔ)言程序是由函數(shù)組成的,所以B選項(xiàng)錯(cuò)誤。C語(yǔ)言函數(shù)可以單獨(dú)進(jìn)行編譯,所以C選項(xiàng)錯(cuò)誤。每個(gè)C語(yǔ)言程序必須包含一個(gè)main函數(shù),但不是每個(gè)C語(yǔ)言程序文件都必須有一個(gè)main函數(shù),用戶單獨(dú)編寫的某個(gè)函數(shù)也可以存儲(chǔ)為一個(gè)C語(yǔ)言程序文件,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。

17.C解析:賦值的一般形式為:變量名:表達(dá)式;,賦值的方向?yàn)橛捎蚁蜃螅磳ⅲ河覀?cè)表達(dá)式的值賦給:左側(cè)的變量,執(zhí)行步驟是先計(jì)算再賦值。選項(xiàng)A中運(yùn)算符%的運(yùn)算對(duì)象必須為整數(shù),而選項(xiàng)A中26.8不為整數(shù),故選項(xiàng)A不正確;選項(xiàng)B將一個(gè)變量賦值給一個(gè)常量,這在C語(yǔ)言中是不允許的,故選項(xiàng)B不正確;選項(xiàng)D中也是將一個(gè)常量3賦值給一個(gè)常量,故選項(xiàng)D不正確;所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

18.AA選項(xiàng)中的語(yǔ)句可以在聲明變量的同時(shí)為data2賦值,賦值語(yǔ)句應(yīng)寫作“data2={2,6};”。故本題答案為A選項(xiàng)。

19.B第一個(gè)for循環(huán)的作用是讓p指向每行的首地址,第二個(gè)for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項(xiàng)。

20.C21.1voidfun(int*a,int*b)2{3inti,j;4for(j=0;j<M;j++)5b[j]==0;/*_且b初始化為0*/6for(i=0;i<N;i++)7if(a[i]>=100)8b[10]++;/*如果年齡大于等于100,b[lo]自增1*/9else10b[a[i]/10]++;/*如果年齡小于100,則將其分別統(tǒng)計(jì)到b[a[i]/10]中*/11}<m;j++)<n;i++)本題是一個(gè)分段函數(shù)的問(wèn)題,用兩個(gè)循環(huán)來(lái)完成。第1個(gè)循環(huán)的作用是使數(shù)組b中的所有元素值都為0。這個(gè)循環(huán)不能省略,因?yàn)槿粑磳?duì)數(shù)組b中的元素賦初值,則它們的值將是不可預(yù)測(cè)的。第2個(gè)循環(huán)的作用是分別統(tǒng)計(jì)數(shù)組a中各年齡段的人數(shù)。當(dāng)a[i]>100時(shí),按題意要將其統(tǒng)計(jì)到b[10]中。else的作用是如果年齡小于100,則將其分別統(tǒng)計(jì)到b[a[i]/10]中。由運(yùn)算優(yōu)先級(jí)可知先進(jìn)行a[i]/10的運(yùn)算,所得結(jié)果作為b的下標(biāo)。若a[i]為0~9,a[i]/10的值為0,且0?9歲的人數(shù)正好存入b[0]中。若a[i]為10~19,a[i]/10的值為1,且10~19歲的人數(shù)正好存入b[1]中,依此類推。</n;i++)</m;j++)

22.

【解析】按照題目中要求,求除首、尾字符外,將其余7個(gè)字符按ASCⅡ碼值降序排列。首先需要判斷除首、尾字符之外,其余7個(gè)字符ASCⅡ碼值的大小,將不符合順序要求的字符互換。

23.voidfun(inta,intb,long*c){/*b%10獲取b的個(gè)位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個(gè)位數(shù),b/10獲取b的十位數(shù)*/ *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;}本題主要考核如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對(duì)它們除以10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。將得到的數(shù)對(duì)應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個(gè)位數(shù)。注意使用c時(shí)要進(jìn)行指針運(yùn)算。24.fun(STUa[],STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*找出成績(jī)最高的學(xué)生記錄*/if(s->s<a[i].s)<p=""></a[i].s)<>*s=a[i];}先使指針變量S指向第1名學(xué)生。通過(guò)循環(huán)語(yǔ)句遍歷所有學(xué)生的成績(jī),利用條件語(yǔ)句判斷當(dāng)前學(xué)生成績(jī)是否最高。所以if條件表達(dá)式為s->ss”等價(jià)于“(*s).s”。

25.

【解析】首先指定第一個(gè)字符串為長(zhǎng)度最小的字符串,然后在循環(huán)過(guò)程中將其與其他的所有串的長(zhǎng)度進(jìn)行比較,求出最小的串。設(shè)置一個(gè)指針變量min,使它的初值為第一個(gè)字符串,再使其他的所有串的長(zhǎng)度與min的長(zhǎng)度進(jìn)行比較,若其他字符串的長(zhǎng)度小于min.則將其他字符串的首地址賦值給min。最后使用返回語(yǔ)句,返回最短長(zhǎng)度min的字符串的地址。

26.1floatfun(floath)2{3inttmp=(int)(h*1000+5)/10;/*單精度數(shù)h乘以1000后再加5,相當(dāng)于對(duì)h中的第3位小數(shù)進(jìn)行四舍五入,除以10后將其賦給一個(gè)長(zhǎng)整型數(shù)時(shí)就把第3位小數(shù)后的數(shù)全部截去*/4return(float)tmp/I00.0;/*除以100,保留2位小數(shù)*/5}注意:本題要求對(duì)變量h中的第3位小數(shù)進(jìn)行四舍五入運(yùn)算,而不是輸出,即不能用printf(“%7.2f”,h)輸出結(jié)果。四舍五入算法:如果要求精確到小數(shù)點(diǎn)后面的第n位,則需要對(duì)第n+1位進(jìn)行運(yùn)算。方法是將該小數(shù)乘以10的n+1次方后加5,然后除以10并強(qiáng)制轉(zhuǎn)換變量類型為整型,再將該數(shù)除以10的n次方,同時(shí)強(qiáng)制轉(zhuǎn)換類型為浮點(diǎn)型。代碼實(shí)現(xiàn)如下:intt;/*定義整型變量t*/t=(int)(h*10n+1+5)/10;/*對(duì)h進(jìn)行操作,得到浮點(diǎn)型值,t取值時(shí)取整數(shù)部分。10n+1為要擴(kuò)大的倍數(shù)*/h=(float)t/10n;/*將t縮小10n倍,并轉(zhuǎn)換成浮點(diǎn)型*/

27.\n#include”stdio.h”

\nmain

\n{intI,n;

\nfor(n=0,I=1900;I<=2000;I++)

\n{if(I%4==0I0!=0||I@0==0)

\n{printf(“%d”,I);n++;}

\nif(n%3==0)

\nprintf(“\\n”);}}}

\n28.

【考點(diǎn)分析】

本題考查:結(jié)構(gòu)體類型成員運(yùn)算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。

【解題思路】

本題考查自定義形參的相關(guān)知識(shí)點(diǎn),程序流程是這樣的:在fun函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*a,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即a一>ave和a一>s[i],當(dāng)然也可用(*a).a(chǎn)ve和(*a).s[i]。29.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中*/</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>10returnj;/*</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計(jì)算低于平均分的人數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過(guò)for循環(huán)語(yǔ)句和if條件語(yǔ)句找出低于平均值的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求出平均值av,第2個(gè)循環(huán)的作用是找出數(shù)組score中低于平均值的成績(jī)記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)</m;i++)30.voidfun(inttt[M][N],intpp[N]){ inti,j,max; for(j=0;j<=""p=""> { max=tt[0][j]; /*假設(shè)各列中的第1個(gè)元素值最大*/ for(i=0;i<=""p=""> if(tt[i][1]>max)/*如果各列中的其他元素值比最大值大,則將這個(gè)值更大的元素看作當(dāng)前該列中值最大的元素*/ max=tt[i][j]; pp[j]=max; /*將各列的最大值依次放入pp數(shù)組中*/ }}本題函數(shù)fun()的功能是求出二維數(shù)組中每列值最大的元素。首先,假設(shè)各列中的第1個(gè)元素值最大,然后利用行下標(biāo)的移動(dòng)來(lái)依次取得各列中其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這個(gè)值更大的元素看作當(dāng)前該列中值最大的元素,繼續(xù)與該列中的其他元素進(jìn)行比較。

31.(1)錯(cuò)誤:t=0;正確:*t=0;(2)錯(cuò)誤:if(d%2==0)正確:if(d%2!=0)(1)錯(cuò)誤:t=0;正確:*t=0;\r\n(2)錯(cuò)誤:if(d%2==0)正確:if(d%2!=0)解析:其實(shí),本題的重點(diǎn)在考查兩個(gè)問(wèn)題:第1個(gè)錯(cuò)誤中出現(xiàn)了一個(gè)t=0,那么請(qǐng)看一下,t是從哪兒來(lái)的,第1次出現(xiàn)t的地方在哪兒?對(duì),就這么簡(jiǎn)單。那我們?cè)賮?lái)思考一下用C語(yǔ)言表達(dá)一個(gè)奇數(shù)的話應(yīng)該怎么表達(dá)?用數(shù)學(xué)的方法呢?偶數(shù)是能被2整除的,奇數(shù)剛好相反,那么if(d%2==0)是想表示奇數(shù)呢還是偶數(shù),看題目就明白了!

32.(1)錯(cuò)誤:sun=1;正確:sum=0;(2)錯(cuò)誤:scanf("%d"a[i][j]);正確:scanf("%d"&a[i][j]);(1)錯(cuò)誤:sun=1;正確:sum=0;\r\n(2)錯(cuò)誤:scanf('%d',a[i][j]);正確:scanf('%d',&a[i][j]);解析:該題依然考查對(duì)循環(huán)語(yǔ)句的掌握和對(duì)數(shù)組概念的理解,根據(jù)題干主線,我們可以看清這樣的一個(gè)解題思路:先從鍵盤輸入一個(gè)3×3矩陣,然后再循環(huán)累加執(zhí)行循環(huán)語(yǔ)句中的sum=sum+a[i][i],所以sum=0。

33.(1)錯(cuò)誤:intfun(ihtnintxx[][])正確:intltm(ihtmintr.x[][M])(2)錯(cuò)誤:printf("%4ff'xx[i]fj]);正確:printf("%4d"xx[i][j]);(1)錯(cuò)誤:intfun(ihtn,intxx[][])正確:intltm(ihtmintr.x[][M])\r\n(2)錯(cuò)誤:printf('%4f,f\',xx[i]fj]);正確:printf('%4d',xx[i][j]);解析:該題錯(cuò)誤比較隱蔽,一般的C語(yǔ)言上機(jī)考試很少涉及printf順數(shù)中的錯(cuò)誤,在這里,我們只要明白“d”和“f”的區(qū)別就OK了。格式字符d表示:以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正整數(shù)不輸出符號(hào));格式字符f表示;以小數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)。

34.(1)錯(cuò)誤:intijksum;正確:intij=0ksum;(2)錯(cuò)誤:if(sum%4=2)正確:if(sum%4=2)(3)錯(cuò)誤:returnj;正確:returnj++;(1)錯(cuò)誤:inti,j,k,sum;正確:inti,j=0,k,sum;\r\n(2)錯(cuò)誤:if(sum%4=2)正確:if(sum%4=2)\r\n(3)錯(cuò)誤:returnj;正確:returnj++;解析:按照老辦法,我們先看數(shù)學(xué)思路,該題是一個(gè)公差為5的等差數(shù)列,簡(jiǎn)單吧,要是用數(shù)學(xué)的辦法解決也就是一個(gè)公式兩個(gè)符號(hào),迎刃而解,所以這樣很有規(guī)律的等差數(shù)列前n項(xiàng)和用C語(yǔ)言來(lái)求的話,也相當(dāng)簡(jiǎn)單,關(guān)鍵看細(xì)節(jié)!i,k,sum都分別定義了,那j呢?所以,正確的應(yīng)該是inti,j=0,k,sum;,再往下看,if(sum%4=2)是在說(shuō)明題干中“在累加過(guò)程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)”,那么“余2”的表示方法呢?不用看就知道應(yīng)該是if(sum%4==2),后面的返回錯(cuò)誤就不提了吧,看看a[j++]=sum;語(yǔ)句,難道還能返回給j嗎?

35.(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])(1)for(i=strlen(t)-1;i;i--)或for(i=

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論