2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年云南省麗江市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回值0,否則返回值1,請?zhí)羁铡?/p>

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

2.若a是int型變量,則表達式(a=2*3,a*2),a+6的值為______。

3.將經(jīng)過確認測試的軟件與外設(shè)、網(wǎng)絡(luò)等連接在一次運行的測試叫【】

4.設(shè)有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結(jié)果為【】。

5.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

6.數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為【】。

7.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

8.以下程序運行后的輸出結(jié)果是______。

#include<strlng.h>

main()

{

charch[]="abc",x[3][4];inti;

for(i=0;i<3;i++)strcpy(x[i],ch);

for(i=0;i<3;i++)printf("%s",&x[i][i]);

printf("\n");

9.若a是int型變量,則下列表達式的值為______。

(a=2*3,a*2),a+4

10.以下程序運行后的輸出結(jié)果是()。

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<C)t=a;a=c;c=t;

if(a<c&&b<C)t=b;b=a;a=t;

printf("%d%d%d\n",a,b,A);

}

二、單選題(10題)11.

12.在下列幾種排序方法中,空間復(fù)雜度最高的是()

A.歸并排序B.快速排序C.插入排序D.選擇排序

13.

14.設(shè)有6個結(jié)點的無向圖,該圖至少應(yīng)有()條邊才能確保是一個連通圖。

A.7B.5C.8D.6

15.對n個關(guān)鍵字的序列進行快速排序,平均情況下的空間復(fù)雜度為_______

A.O(1)B.O(logn)C.O(n)D.O(nlogn)

16.下面程序的運行結(jié)果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負數(shù)C.正數(shù)D.無確定值

17.

18.數(shù)據(jù)結(jié)構(gòu)通常是研究數(shù)據(jù)的及它們之間的聯(lián)系______。A.存儲和邏輯結(jié)構(gòu)B.存儲和抽象C.理想和抽象D.理想與邏輯

19.

20.

三、程序設(shè)計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=0;printf(“Thematrix:\n”);for(i=0;i<3;i++){for(j=0;j<4;j++)printf(“%3d”,w[i][j]);printf(“\n”);}fun(w,a,&n,3,4);printf(“TheAarray:\n”);for(i=0;i<n;i++)<p=""></n;i++)<>printf(“%3d”,a[i]);}

22.編寫函數(shù)如n,其功能是:刪除一個字符串中指定下標的字符。其中,a指向原字符串,刪除指定字符后的字符串存放在b所指的數(shù)組中,n放指定的下標。例:輸入一個字符串“world”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為“word”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)丘m的花括號中填入你編寫的若干語句。試題程序:

23.規(guī)定輸入的字符串中只包含字母和。號。請編寫函數(shù)fun,其功能是:將字符串尾部的。號全部刪除,前面和中間的*號不動。

24.學(xué)生記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組中,請編寫函數(shù)fun,其功能是:把分數(shù)最低的學(xué)生數(shù)據(jù)放入b所指的數(shù)組中,注意:分數(shù)最低的學(xué)生可能不止一個,函數(shù)返回分數(shù)最低的學(xué)生人數(shù):

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)flm的花括號中填入你編寫的若干語句。

25.下列程序定義了MM的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)proc(inta[][M]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如,a數(shù)組中的值為:

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,刪除后,字符串中的內(nèi)容應(yīng)當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){ chars[81]; printf(“Enterastring:\n”); gets(s); fun(s); printf(“Thestringafterdeleted:\n”); puts(s);}

27.三個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的一個數(shù)。

28.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的百位和個位上,b中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上。例如,當a=45,b=12,調(diào)用該函數(shù)后c=1425。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#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);}

29.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}

四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[1]中的數(shù)對調(diào)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineN20

voidfun(int*a,intn)

{

inti,m,t,k;

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

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

{

m==i;

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

if(a[k]<a[m])

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

k=m;

t=a[i];

a[i]=a[m];

a[m]=t;

}

}

main()

{

intx,b[N]={11,5,12,0,3,6,9,7,10,8},

n=10,i;

clrscr();

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

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

printf("\n");

fun(b,n);

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

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

printf("\n");

}

32.給定程序MODll.C中函數(shù)fun的功能是:計算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計算該值的個位、十位、百位上數(shù)字之和作為函數(shù)值返回。

例如,7的5次方是16807,其低3位數(shù)的和值是15。

請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。

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

33.下列給定程序中,函數(shù)fun()的功能是:通過某種方式實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量a中的值原為8,b中的值原為3,程序運行后a中的值為3,b中的值為8。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*x,inty)

{

intt;

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

t=x;x=y;

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

return(y);

}

main()

{inta=3,b=8;

clrscr();

printf("%d%d\n",a,b);

b=fun(&a,b);

printf("%d%d\n",a,b);

}

34.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且緊隨m的素數(shù),并作為函數(shù)值返回。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{inti,k;

for(i=m+1;;i++)

{for(k=2;k<i;k++)

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

if(i%k!=0)

break;

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

if(k<i)

return(i);

}

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

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

}

35.給定程序MODll.C中fun函數(shù)的功能是:分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。

例如,給字符串s輸入:AAaaBBb123CCccccd,則應(yīng)輸出結(jié)果:upper=6,lower=8。

請改正程序中的錯誤,使它能計算出正確的結(jié)果。

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

36.下列給定程序中函數(shù)fun()的功能是;從低位開始取出長整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當s中的數(shù)為4576235時,t中的數(shù)為4725。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

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

intfun(longS,long*t)

{

longs1=l0;

*tiS%10;

while(s>0)

{

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

s=s%100;

*t=S%10*S1+*t;

s1=s1*10;

}

}

main()

{

longS,t;

clrscr();

printf("\nPIeaseenterS:");

scanf(“%ld”,&s);

fun(S,&t);

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

}

37.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。

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

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

試題程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if(i+1%5==0)

{w[k]=sum/5;Sum=0;k++;}

}

returnk;

}

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

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

{

if(i%5==0)printf("\n");

printf("%4.0f"/a[i]);

}

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

for(i=0;i<k;i++)printf("%6.2f",b[i]);

printf("\n\n");

}

38.給定程序MODll.C中函數(shù)fun的功能是:從n(形參)個學(xué)生的成績中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。

例如,若輸入8名學(xué)生的成績:80.5607290.59851.58864則低于平均分的學(xué)生人數(shù)為:4(平均分為:75.5625)。

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

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

39.下列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:

例如,2的平方根為1.414214。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

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

fun(doublea,doublex0)

{doublexl,y;

xl=(x0+a/x0)/2.0;

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

if(fabs(xl-x0)>0.00001)

y=fun(a,xl);

elsey=x1;

returny;

}

main()

{doublex;

printf("Enterx:");scanf("%1f",&x);

printf("Thesquarerootof%1fis%1f\n",

x,fun(x,l.O));

}

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

例如,若n=10,則應(yīng)輸出:0.617977。

請改正程序中的語法錯誤,使它能得出正確的結(jié)果。

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

五、程序改錯題(2題)41.下列給定程序的功能是:讀入一個整數(shù)n(2<=n<=5000),打印它的所有為素數(shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,617。

請修改程序中的錯誤,使程序能得出正確的結(jié)果。

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

試題程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

{

intj,P;

p=1;

//****found****

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

if!(m%j)

{

p=0;

break;

}

return(p);inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

for(i=2;i<n;i4+)

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

}

42.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的n個元素按從大到小的順序進行排序。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.下列程序段的運行結(jié)果是______。

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

44.請編寫一個函數(shù)fun(),它的功能是:比較兩個字符串的長度,(不得調(diào)用C語言提供的求字符串長度的函數(shù)),函數(shù)返回較短的字符串。若兩個字符串長度相等,則返回第1個字符串。

例如,輸入nanjing<CR>nanchang<CR>(<CR>為回車鍵),函數(shù)將返回nanjing。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

char*fun(char*S,char*t)

{

}

main()

{

chara[20],b[10],*p,*q;

inti;

printf("Inputlthstring:");

gets(a);

printf("Input2thstring:");

gets(b);

printf(“%s”,fun(a,b));

}

參考答案

1.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'

2.1212解析:本題考查逗號表達式的運算規(guī)則。逗號表達式的基本格式為:“表達式1,表達式2,…”,其整個表達式的結(jié)果取最后一個子表達式的值。本題中首先計算逗號表達式中的第1個表達式a=2*3=6,然后計算第2個表達式a*2,這時整個表達式的值為12,但要注意,因為第2個表達式并沒有給a賦值,因此a的值不變;接下來執(zhí)行最后一個表達式a+6=12,所以整個表達式最后的值為12。

3.系統(tǒng)測試系統(tǒng)測試

4.89218921解析:本題的程序的功能是將輸入的整數(shù)反向輸出。

5.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨茖傩耘c操作的一組對象。

6.物理獨立性物理獨立性解析:數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結(jié)構(gòu)改變時,其邏輯結(jié)構(gòu)可以不變,因此,基于邏輯結(jié)構(gòu)的應(yīng)用程序不必修改,稱為物理獨立性。

7.ar=6ar=6ar=13ar=6ar=6ar=13解析:通過*p=a+5將指針P指向a[5],第1次循環(huán),i=3時,switch(3),執(zhí)行case3,*(-p)-a[4]=6,所以輸出ar=6;第2次循環(huán),j=2時,switch(2),執(zhí)行case2,(*p++)是先引用a[4]的值6,輸出ar=6,再將指針P移位指向a[5];第3次循環(huán),j=1時,switch(1),執(zhí)行case1,case1后沒有break語句,接著執(zhí)行case2,(*p++)是先引用a[5]的值13,輸出ar=13,再將指針P移位指向a[6]。

8.abcbccabcbcc解析:strcpy()函數(shù)有兩個字符指針參數(shù),功能是將第2個參數(shù)所指的字符串(包括字符串結(jié)束標志\'\\0\')復(fù)制到第1個參數(shù)所指的內(nèi)存地址中.題目程序中使用?兩個for循環(huán),都是讓i從0遞增到2循環(huán)3次。第1個循環(huán)將字符數(shù)組ch中的字符串'abe'復(fù)制到;維數(shù)組x[3][4]的每1行,笫2個for循環(huán)每次輸出x[i][j]中的字符串,即三次分別輸出從x[0][0]、x[1][1]、x[2][2]開始的字符串的內(nèi)容。故三次分別輸出abc、bc、c,結(jié)果為abcbcc。

9.1010解析:此題考查逗號表達式。逗號表達式的值是最后一個表達式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。

10.45994599解析:a、b、c的初值為3、4、5,t的初值為99,if語句的條件“b<a&&b<c”為假,不執(zhí)行“t=a;”,但緊隨其后的“a=c;c=t;”與此if語句無關(guān),仍被執(zhí)行。此時a的值為5,b的值仍是4,c的值為99。再執(zhí)行第二個if語句,由于此時“a<c&&b<c”為真,執(zhí)行“t=b;”,緊隨其后的“b=a;a=t;”與此if語句無關(guān),也被執(zhí)行。此時a的值為4,b的值是5,c的值為99。因此輸出結(jié)果是:4599。

11.D

12.A

13.C

14.B

15.D

16.C

17.D

18.A

19.D

20.D

21.voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次存入一維數(shù)組中*/for(i=0;i<=""p="">{b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個數(shù)*/}}題目要求實現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語句來控制二維數(shù)組元素的下標,同時使用指針變量配合操作。可以用兩個循環(huán)來處理問題,由于是按列的順序取出,因此第1個循環(huán)用于控制列下標,第2個循環(huán)用于控制行下標。

22.23.

voidfun(char*a){

while(*a!=’、0。)

a++:

a一一;/*指針a指向字符串的尾部*/while(}a==’*。)

a一一;/·指針a指向最后一個字母*/

*(a+1)=’、0’;/*在字符串最后加上結(jié)束標志符·/

【考點分析】

本題考查:刪除字符串尾部*號;刪除的主要思想是把不刪除的字符保留起來。

【解題思路】

對于一個字符串要刪除其尾部的*號,只需要在最后一個不是*號的字符后面加上結(jié)束符號‘、0’。具體操作為:首先找到字符串的結(jié)尾,然后從最后一個字符開始往前逐個判斷是否為*號,直到找到非·號字符為止。最后在該字符后面加上結(jié)束符號’\0。24.

【考點分析】

本題考查:查找結(jié)構(gòu)體數(shù)組中的最小數(shù)據(jù),需要通過for循環(huán)語句和if條件語句來完成。

【解題思路】

本題中第一個循環(huán)語句的作用是遍歷數(shù)組求出最低分數(shù),第二個循環(huán)語句的作用是將數(shù)組中的元素與最低分比較,查找是否存在與最低分相等的成績。

25.

【解析】要使數(shù)組左下半三角元素中的值全部置成0,先要找出數(shù)組的下半三角元素,再將其值全部賦值為0。二維數(shù)組中下半三角元素的特點為,其列下標小于其行下標。根據(jù)這個特點,將二維數(shù)組的下半三角元素都賦值為0。

26.voidfun(char*a){ inti,j=0; for(i=0;a[i]!=‘\0’;i++) if(a[i]!=‘\*’) a[j++]=a[i];/*若不是要刪除的字符‘*’則保留*/ a[j]=‘\0’;/*最后加上字符串結(jié)束標志‘\0’*/}該題考核的是刪除字符串中所有*,需用循環(huán)語句遍歷字符串,用判斷語句判斷字符是否為*,由此可以決定該程序應(yīng)使用循環(huán)判斷結(jié)構(gòu)。用循環(huán)操作從字符串開始向后逐個進行比較,若不是要刪除的字符(用if(a[i]!=‘*’)來控制)則保留。變量i和j用來表示原字符串的下標和刪除*后新字符串的下標。注意,下標變量j要從0開始,最后還要加上字符串結(jié)束標志‘\\0’。27.\n\tmain

\n{inta,b,c;

\nprintf(“請輸入三個整數(shù):”);

\nscanf(“%d,%d,%d”,&a,&b,&c);

\nif(aif(belseprintf(“max=%d\\n”,b);

\nelseif(aelseprintf(“max=%d\\n”,a);}

\n28.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}本題主要考核如何取出變量a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于變量a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用變量c時要進行指針運算。

29.

【解析】題目中要求將字符串中的前導(dǎo)*號全部刪除,首先將指針p移動到第一個不是*的字符,將指針p之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。

30.intfun(inta[][m]){inti,j,max=a[0][0];/*對二維數(shù)組進行遍歷*/for(i=0;i<2;i++)for(j=0;j<=""p="">if(max<a[i][j])<p=""></a[i][j])<>/*將最大值保存在max中*/max=a[i][j];returnmax;}因為數(shù)組是二維數(shù)組,所以應(yīng)使用兩層for循環(huán)嵌套。使用for循環(huán)語句時需注意循環(huán)變量的取值范圍。此類求最大值或最小值的問題,可以采用逐個比較的方式。遍歷數(shù)組中所有元素,從中找出數(shù)組的最大值或最小值。首先定義變量max來存放數(shù)組的第1個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元素,并與變量max比較。如果元素值大于max,則將該值賦給max。循環(huán)結(jié)束后max的值即為數(shù)組最大值。最后將該值返回。該類題目考查較多,需要掌握逐個比較的方法。對于m*n二維數(shù)組,采用逐個查找的方法,代碼實現(xiàn)如下:for(i=0;i<=""p="">for(j=0;j<=""p="">…

31.(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)(2)錯誤:k=m;正確:m=k;(1)錯誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)\r\n(2)錯誤:k=m;正確:m=k;解析:錯誤1:由于題目要求將最小數(shù)和次最小數(shù)分別與a[0]和a[1]中的數(shù)對調(diào),因此這層循環(huán)只需循環(huán)兩次。錯誤2:賦值語句的執(zhí)行方向是從右向左,即把右邊的值賦給左邊的變量。

32.(1)d=1;s=0;(2)d=d/10;(1)d=1;s=0;(2)d=d/10;解析:本題中函數(shù)的功能是計算n的5次方的值(規(guī)定n的值大于2、小于8),通過形參指針傳回主函數(shù);并計算該值的個位、十位、百位上數(shù)字之和作為函數(shù)值返回。本題解題過程首先是求5次方,然后對結(jié)果進行截取以及求和。

33.(1)錯誤:t=x;x=y;正確:t=*X;*x=y;(2)錯誤;return(y);正確:return(t);(1)錯誤:t=x;x=y;正確:t=*X;*x=y;\r\n(2)錯誤;return(y);正確:return(t);解析:本題考查指針變量做函數(shù)參數(shù)。同樣,這里也涉及到一個“交換規(guī)則”,另外,根據(jù)題目主函數(shù)中fun()函數(shù)的調(diào)用方式說明fun()函數(shù)的參數(shù)應(yīng)當為指針類型。交換結(jié)束后返回變量t。

34.(1)錯誤:if(i%k!=0)正確:if(i%k=0)(2)錯誤:if(k<i)正確:if(k>=i)(1)錯誤:if(i%k!=0)正確:if(i%k=0)\r\n(2)錯誤:if(k<i)正確:if(k>=i)解析:也許剛接觸C語言的學(xué)習者對素數(shù)的概念不清楚,在這里說明一下,素數(shù)就是質(zhì)數(shù),本題的任務(wù)是隨便輸入一個整數(shù)m,然后在m的后面尋找緊跟m的一個質(zhì)數(shù),作為函數(shù)值返回。

for(i=m+1;;i++){

是從m后面的一位開始循環(huán),將m后面一位的值賦予i。然后;我們依次判斷m后面的一位是否為素數(shù)。

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

if(i%k==0)

是一個簡單的數(shù)學(xué)判斷問題,判斷i被賦予的值與k的余數(shù)是否為零。

35.(1)voidfun(char*sint*aint*b)(2)*a=*a+1;(3)*b=*b+1;(1)voidfun(char*s,int*a,int*b)\r\n(2)*a=*a+1;\r\n(3)*b=*b+1;解析:該程序功能是統(tǒng)計字符串中的大小寫字母的個數(shù)。從已給定源程序的main主函數(shù)開始入手,調(diào)用函數(shù)“fun(s,&uper,&lower);”,傳參數(shù)uper,lower的地址,對字符串s中的字符進行判斷,求得該字符串中大小寫字母的個數(shù)。

36.(1)錯誤:intfun(longslong*t正確:voidfun(longslong*t)(2)錯誤:s=s%100;正確:s=s/100;(1)錯誤:intfun(longs,long*t正確:voidfun(longs,long*t)\r\n(2)錯誤:s=s%100;正確:s=s/100;解析:錯誤1:函數(shù)由指針來完成參數(shù)的傳遞,所以沒有返回值,應(yīng)定義函數(shù)的類型為void。錯誤2:此處要注意特殊運算符號“%”——取余和“/”——整除的區(qū)別。將一個數(shù)整除100則可得到由其百位數(shù)以上的數(shù)組成的新數(shù)字,將一個數(shù)整除100取余則可得到由十位數(shù)和個位數(shù)組成的新數(shù)。

37.錯誤:if(i+1%5==0)正確:if((i+1)%5==0)錯誤:if(i+1%5==0)正確:if((i+1)%5==0)解析:本題除了考查循環(huán)語句以外,其實就是一道簡單的數(shù)學(xué)題,循環(huán)條件if(i+1%5==0)是一個標準的語法錯誤,這跟題目考查的知識點毫無關(guān)系,也就是說,做這樣的題,只要讀懂了題干意思,問題便可迎刃而解。

38.(1)t+=s[k];(2)*aver=ave;(1)t+=s[k];(2)*aver=ave;解析:該程序功能是統(tǒng)計出低于平均分的學(xué)生人數(shù),首先求得平均分,然后再求得低于平均分的人數(shù)。從已給定源程序的main.主函數(shù)開始入手,printf語句中的fun(s,m,&aver)l調(diào)用函數(shù)實現(xiàn)題目中的要求。

39.(1)錯誤:fun(doubleadoublex0)正確:doublefun

溫馨提示

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

評論

0/150

提交評論