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

下載本文檔

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

文檔簡介

2021年內(nèi)蒙古自治區(qū)呼倫貝爾市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.有以下程序段,且變量已正確定義和賦值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

請?zhí)羁?使下面程序段的功能與之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

2.若有定義:inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

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

main()

{inti,n[]={0,0,0,0,0};

for(i=1;i<=4;i++)

{n[i]=n[i-1]*2+1;

printf("%",n[i]);

}

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

5.在關(guān)系數(shù)據(jù)庫中把數(shù)據(jù)表示成二維表,每一個二維表稱為【】。

6.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。

7.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

8.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),循環(huán)隊列屬于______結(jié)構(gòu)。

9.下列程序的輸出結(jié)果是______。

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5;++)

PRINT(a+i);

printf("\n");

}

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

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

p=a;

二、單選題(10題)11.

12.以下敘述中正確的是()。A.A.break語句只能用在循環(huán)體內(nèi)和switch’語句體內(nèi)

B.continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

D.break語句只能用于switch語句體中

13.在決定選取何種存儲結(jié)構(gòu)時,一般不考慮()。

A.各結(jié)點的值如何B.結(jié)點個數(shù)的多少C.對數(shù)據(jù)有哪些運(yùn)算D.所用的編程語言實現(xiàn)這種結(jié)構(gòu)是否方便

14.結(jié)構(gòu)化程序所規(guī)定的三種最基本控制結(jié)構(gòu)是A.A.輸入、處理、輸出

B.樹形、網(wǎng)形、環(huán)形

C.順序、選擇、循環(huán)

D.主程序、子程序、函數(shù)

15.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.2,14,3,18,4,18

B.1,14,2,18,3,18

C.2,14,3,18,4,22

D.1,14,2,18,3,18,4,18

16.設(shè)x、y、z、t均為int型變量,則執(zhí)行以下語句后,t的值是()x=y(tǒng)=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

17.有以下程序:#include<stdio.h>voidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf(“%d,%d”,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序的運(yùn)行結(jié)果是()。A.2,3B.1,3C.1,4D.1,2

18.下列語句組中正確的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

19.在Windows環(huán)境下,單擊當(dāng)前應(yīng)用程序窗口中的“關(guān)閉”按鈕,其功能是A.將當(dāng)前應(yīng)用程序轉(zhuǎn)為后臺運(yùn)行

B.退出Windows后再關(guān)機(jī)

C.退出Windows后重新啟動計算機(jī)

D.終止當(dāng)前應(yīng)用程序的運(yùn)行

20.下面關(guān)于線性表的敘述中,錯誤的是()。

A.線性表采用順序存儲,必須占用一片連續(xù)的存儲單元

B.線性表采用順序存儲,便于進(jìn)行插入和刪除操作

C.線性表采用鏈接存儲,不必占用一片連續(xù)的存儲單元

D.線性表采用鏈接存儲,便于插入和刪除操作

三、程序設(shè)計題(10題)21.請編寫函數(shù)proc(),它的功能是計算:s=(1-1n(1)-1n(2)-1n(3)-…-1n(m))2s作為函數(shù)值返回。在C語言中可調(diào)用log(n)函數(shù)求1n(n)。log函數(shù)的引用說明是doublelog(doublex)。例如,若m的值為10,則proc()函數(shù)值為l98.934454。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

22.…請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)據(jù)為l23,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在PROGl.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所縮寫的若干語句。試題程序:

23.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,函數(shù)fmi()的功能是將a、b中的兩個正整數(shù)合并成一個新的整數(shù)存放在c中。合并的方式是將a中的十位和個位數(shù)依次放在變量c的十位和千位上,b中的十位和個位數(shù)依次放在變量c的個位和百位上。例如,a=45,b=12,調(diào)用該函數(shù)后,c=5241。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:24.假定輸人的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidproc(char*str){}voidmain{charstr[81];printf("Enterastring:kn");gets(str);proc(str);printf("Thestringafterdeleted:kn");puts(str);}

25.請編寫函數(shù)proc(),它的功能是計算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

26.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)proc(),它的功能是:函數(shù)返回指定學(xué)號的學(xué)生數(shù)據(jù),指定的序號在主函數(shù)中輸入。若沒找到指定的學(xué)號,在結(jié)構(gòu)體變量中給學(xué)號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

27.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信息,包括學(xué)號、性別、姓名和平均成績。

28.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素數(shù),若a是素數(shù),返回1;若不是素數(shù),返回0。A的值由主函數(shù)從鍵盤讀入。

29.請編寫函數(shù)proc(),其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入XX所指數(shù)組中,非素數(shù)的個數(shù)通過k傳回。例如,輸入20,則應(yīng)輸出4689101214151618。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

30.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4EFg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}voidmain(void){ chartt[51]; printf(“\nPleaseenterancharacterstringwithin50characters:\n”); gets(tt); printf(“\n\nAfterchanging,thestring\n%s”,tt); fun(tt); printf(“\nbecomes\n%s”,tt);}

四、2.程序修改題(10題)31.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。

例如,若字符串為abcd,則應(yīng)輸出:dcba。

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

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

32.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的數(shù)字字符,形成新的字符串,并取代原字符串。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*s)

{inti,j;

for(i=0,j=0;s[i]!='\0';i++)

if(s[i]>='0'&&s[i]<='9')

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

s[j]=s[i];

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

s[j]="\0";

}

main()

{charitem[80];

clrscr();

printf("\nEnterastring:");gets(item);

printf("\n\nThestringis:\%s\n",item);

fun(item);

printf("\n\nThestringofchangingis:

\%s\n",item);

}

33.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

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

if(*str==ch)

{str[0]=ch;

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

str[1]='0';

}

}

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

printf("\nTheresultis%s\n",s);

}

34.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量S中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為642。

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

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

[試題源程序]

#include<stdio.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;

}

}

msin()

{

longs,t;

printf("\nPleaseenters:");

scanf("%ld",&s);

fun(s,&t);

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

}

35.下列給定程序中,函數(shù)fun()的功能是找出100~n(n不大于1000)之間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s所指的數(shù)組中,個數(shù)作為函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN100

intfun(int*s,intn)

{

inti,j,k,a,b,c;

j=0;

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

{

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

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

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

s[j]=i;

}

returnj;

}

main()

{

inta[N],n,num=0,i;

do

{

printf("\nEntern(<=1000):”);

scanf("%d",&n);

}

while(n>1000);

num=fun(a,n);

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

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

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

printf("\n\n");

}

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

}

37.下列給定程序中,函數(shù)fun()的功能是:實現(xiàn)兩個整數(shù)的交換。例如給a和b分別輸入60和65,輸出為:a=65b=60

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

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

voidfun(inta,b)

{intt;

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

t=b;b=a;a=t;

}

main()

{inta,b;

clrscr();

printf("Entera,b:");scanf("%d%d",

&a,&b);

fun(&a,&b);

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

}

38.已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODll.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。

例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為:23.197745。

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

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

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

例如,a為2時,平方根值為:1.414214。

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

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

40.給定程序MODll.C中函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長的剩余字符接在c所指數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為“abcdefg”,b所指字符串中的內(nèi)容為“1234”1時,c所指數(shù)組中的內(nèi)容應(yīng)該為“a4b3e2dlefg”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串中的內(nèi)容為“abedefg”時,c所指數(shù)組中的內(nèi)容應(yīng)該為“l(fā)g2f3e4dcba”。

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

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

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:給定n個實數(shù),輸出平均值,并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。

例如,n=8時,輸入90.009,179.623,167.575,100.051,6.092,154.986,12.432,45.765,所得平均值為94.566635,在平均值以上的實數(shù)個數(shù)應(yīng)為4。

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

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

試題程序:

42.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當(dāng)是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把一個字符串中的字符(字母)按從小到大排序,并把這個全部由字母組成的字符串保存在原串中,函數(shù)返回這個字符串的長度。例如;輸入“cixbr2.3”,如果為bcirx,字符串長度為5。

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。

#include<stdio.h>

#defineN20

intfun(char*str)

{

inti=0,j=0,k=-0,m=0;

chart;

char*p=str;

while(*p)

{

if((*p>='A'&&*p<='Z')||(*p>='a'

&&*p<='z'))

【】

p++;

}

*(str+i)='\0';

【】;

while(*(p+j))

{

k=j;

【】;

while(*(p+k))

{

if(*(p+k)<*(str+m)

{

t=*(str+m);

*(str+m)=*(p+k);

*(p+k)=t;

}

k++;

}

j++;

}

returni;}

main()

{

charstr[81];

ihtn;

clrscr();

printf("Inputtheoriginalstring");

gets(str);

printf("***TheOriginalstring***In");

puts(str);

printf("***Thenwestring***\n");

n=fun(str);

puts(str);

printf("***Thelengthofnewstringis:

%d***\n",n);

}

44.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。

例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。

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

注意:m的值要大于2但不大于100。部分源程序給出如下。

試題程序:

#include<math.h>

#include<stdio.h>

doublefun(intm)

{}

voidmain

{

intm;

doubles;

FILE*out:

printf("\n\nInputm:");

scanf("%d",&m);

s=fun(m);

printf("\n\ns=%f\n\n",s);

ut=fopen("outfile.dat","w");

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

fprintf(out,"%f\n",fun(m+80));

felose(out);

}

參考答案

1.k<=nk++k<=n,k++解析:本題要求將一個for循環(huán)改成while循環(huán)。首先要保證循環(huán)條件相同,在for循環(huán)中,每次執(zhí)行循環(huán)之后,循環(huán)控制變量k都會加1,而while循環(huán)則沒有,故需在循環(huán)體中增加改變k數(shù)值的語句'k++;'\ue009。

2.88解析:二維數(shù)組可以看成是按矩陣形式排列的,題目中給二維數(shù)組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數(shù)組,其數(shù)組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數(shù)組都有4個元素,a[0]的元素為ap[0][0]、a[0][1]、a[0][2]、a[0][3]。

3.1371513715解析:本題中數(shù)組n有5個元素且初值為0,以下為for循環(huán)的執(zhí)行過程。

第1次循環(huán):循環(huán)前i=1,執(zhí)行循環(huán)語句n[1]=n[1-1)*2+1=n[0]*2+1=1,輸出1;

第2次循環(huán):循環(huán)前i=2,執(zhí)行循環(huán)語句n[2]=n[2-1)*2+1=n[1]*2+1=1*2+1=3,輸出3;

第3次循環(huán):循環(huán)前i=3,執(zhí)行循環(huán)語句n[3]=n[3-1]*2+1=n[2]*2+1=3*2+1=7,輸出7;

第4次循環(huán):循環(huán)前i=4,執(zhí)行循環(huán)語句n[4]=n[4-1)*2+1=n[3]*2+1=7*2+1=15,輸出15;

所以程序的運(yùn)行結(jié)果為:13715。

4.1616解析:在程序中首先將8賦值給變量a,然后再進(jìn)行復(fù)合賦值運(yùn)算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。

5.關(guān)系或一個關(guān)系關(guān)系或一個關(guān)系解析:在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個關(guān)系。

6.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。

7.1212解析:x=(表達(dá)式1,表達(dá)式2,…)的形式,結(jié)果為最后一個表達(dá)式的值:x=(a=4,6*2)=2*6=12。

8.存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)存儲或物理或存儲結(jié)構(gòu)或物理結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)(也稱數(shù)據(jù)的物理結(jié)構(gòu))。所謂循環(huán)隊列,就是將隊列存儲空間的最后一個位置繞到第一個位置,形成邏輯上的環(huán)狀空間。供隊列循環(huán)使用??芍h(huán)隊列應(yīng)當(dāng)是物理結(jié)構(gòu)。

9.1234theend1,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1次循環(huán),i=1時,調(diào)用PRINT(1),P(1)輸出1;第2次循環(huán),i=2時,調(diào)用PRINT(2),P(2)輸出2;第3次循環(huán),i=3時,調(diào)用PRINT(3),P(3)輸出3;第4次循環(huán),i=4時,調(diào)用PRINT(4),P(4)輸出4,theend。

10.6060解析:程序中定義a是一個3行2列的二維數(shù)組,p是指向兩個元素的一維數(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。

11.B

12.A本題主要考查的知識點是:break和IContinue語句。break語句可以用于swhitCh或循環(huán)體內(nèi),作用是跳/出switCh或循環(huán)體。Continue語句只能用于循環(huán)體內(nèi),作用是結(jié)束當(dāng)前循環(huán),進(jìn)入下次循環(huán)。故本題中只有選項A)是正確的。

13.A

14.C解析:結(jié)構(gòu)化程序設(shè)計方法采用順序、選擇和循環(huán)三種基本程序控制結(jié)構(gòu)編寫程序,從而使程序具有好的結(jié)構(gòu)。

15.A程序定義整型變量a和i,其中a的初值為7。for循環(huán)中,循環(huán)變量i的取值為1,2,3。循環(huán)體中判斷a的取值,當(dāng)a>14時,執(zhí)行break跳出循環(huán);當(dāng)a取值為奇數(shù)時,a%2==1,a自增3,執(zhí)行continue繼續(xù)執(zhí)行循環(huán)體;當(dāng)a取值為偶數(shù)時,a%2==0,a自增4,輸出i和a的值。i取值為1時,a取值為7,自增3后a的值為10,執(zhí)行下一個循環(huán)。i取值為2時,a取值為10,自增4后a的值為14,輸出2,14。i取值為3時,a取值為14,自增4后a的值為18,輸出3,18。i取值為4時,a取值為18,循環(huán)終止,輸出4,18。綜上,程序輸出:2,14,3,18,4,18。本題答案為A選項。

16.C

17.B在f(int*p,int*q)函數(shù)中,執(zhí)行“p=p+1;”是將p所對應(yīng)的地址加1,而“*q=*q+1;”是將q所指向n的地址所對應(yīng)的值加1,所以m的值沒有變,而n的值則變?yōu)?。故本題答案為B選項。

18.BA選項去掉花括號后,賦值正確;C選項和D選項應(yīng)在定義時賦初值,因為數(shù)組名相當(dāng)于常量,不能重新賦值。故本題答案為B選項。

19.D

20.B

21.

【解析】首先我們應(yīng)定義一個變量來表示其和,另一個來表示其項數(shù),然后通過循環(huán),求得其差值,最后把和的平方返回到主函數(shù)中。

22.

【考點分析】主要考察考生對循環(huán)跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過對指定的多位數(shù)每次除以10,去掉最后一位,直到為0結(jié)束,使用臨時變量來統(tǒng)計一個多位數(shù)的位數(shù)。23.1voidfun(inta,intb,long*c)2{3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);4}本題給出兩個兩位數(shù)的正整數(shù)。分別取出兩個數(shù)各位上的數(shù)字,再按條件組成一個新數(shù)。取整數(shù)a十位數(shù)的方法為a/10,取整數(shù)a個位數(shù)的方法為a%10。同理可取出整數(shù)b的個位數(shù)和十位數(shù)。24.voidproc(char*str){char*p=str;while(*p==*)p++;//通過p的移動來達(dá)到使p指向第一個不是*號的字符for(;*p!=\0;p++,str++)//把從第一個不是*號的字符放到a中*str=*P:*str=\0;//最后用\0作為字符串結(jié)束標(biāo)志}【解析】題目中要求將字符串中的前導(dǎo)*號全部刪除,首先將指針P移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。

25.

【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項表達(dá)式的和然后開平方??梢允紫韧ㄟ^m次循環(huán)求得m項表達(dá)式的和,然后將其和開平方并返回到主函數(shù)當(dāng)中。

26.

【解析】首先將一個STREC結(jié)構(gòu)的變量學(xué)號賦值為空,成績?yōu)?1。要返回指定學(xué)生的數(shù)據(jù),應(yīng)該將每一個學(xué)生的學(xué)號與給定的學(xué)生學(xué)號相比較。若有相同的,則把其數(shù)據(jù)返回給主函數(shù)。如果沒有該學(xué)號的學(xué)生,就將定義的學(xué)號為空,成績?yōu)?1的記錄返回給主函數(shù)。

27.\n#include'stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intI,j,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinformation:\\n',I+1);

\nscanf('%ld,%c,%s',&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I{sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuarr[I].a(chǎn)verage=sum/4.0;}

\nmax=stuarr[0].a(chǎn)verage;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].a(chǎn)verage>max)

\n{max=stuarr[I].a(chǎn)verage;

\nindex=I;}

\nprintf('總平均成績最高的學(xué)生信息是學(xué)號=%ld,性別=%c,姓名=%s,平均成績=%4.1f\\n',stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name,stuarr[index].a(chǎn)verage);

\n}\n

28.\n#include”stdio.h”

\nintfun(inta)

\n{intI;

\nif(a==2)return1;I=2;

\nwhile((a%I)!=0I<=sqrt((float)a))

\nI++;

\nif(a%I==0)

\n{printf(“%disnotaprime!”,a);

\nreturn0;}

\nprintf(“%disaprime!”,a);

\nreturn1;}

\nmain

\n{intx;

\nprintf(“\\npleaseenteranumber:”);

\nscanf(“%d”,&x);

\nprintf(“%d\\n”,fun(x));}

\n

29.

【解析】題目中要求將所有大于l小于整數(shù)m的非素數(shù)存入xx所指數(shù)組中,因此需要判斷所有大干1小于m的整數(shù)是否為素數(shù)。將所有大干1小于m的非素數(shù)放入數(shù)組xx中,并將非素數(shù)的個數(shù)通過形參k傳遞回主函數(shù)中。

30.voidfun(char*ss){ inti; for(i=0;ss[i]!=‘\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母*/ if(i%2==1&&ss[i]>=‘a(chǎn)’&&ss[i]<=‘z’) ss[i]=ss[i]-32;}將指定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫字母,首先需要判斷奇數(shù)位置,再判斷該位置字符是不是小寫字母,如果是小寫字母,則將小寫字母轉(zhuǎn)換為大寫字母。字母大小寫轉(zhuǎn)換操作中,只要將小寫字母的ASCII值減去32即可轉(zhuǎn)換為大寫字母。

31.(1)voidfun(char*a)(2)printf("%c"*a)(1)voidfun(char*a)(2)printf("%c",*a),解析:本題中函數(shù)的功能是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過遞歸調(diào)用自身,實現(xiàn)字符串的逆序。

32.(1)錯誤;s[j]=s[i];正確:s[j++]=s[i];(2)錯誤:s[j]="\0";正確:s[j]='\0';(1)錯誤;s[j]=s[i];正確:s[j++]=s[i];\r\n(2)錯誤:s[j]='\\0';正確:s[j]=\'\\0\';解析:有循環(huán)條件if(s[i]>=\'0\'&&s[i]<=\'9\')以及題目要求“依次取出字符串中所有的數(shù)字字符”可知,s[j]=s[i];表述錯誤。s[j]='\\0';中是一個常識性語法錯誤,學(xué)習(xí)者只要在平時訓(xùn)練的時候注意一下就可以了。

33.(1)錯誤;voidfun(charstrcharch)正確:voidfun(char*strcharch)(2)錯誤:if(*str==ch)正確:if(*str=='\0')(3)錯誤;str[1]='0';正確:str[1]='\0';(1)錯誤;voidfun(charstr,charch)正確:voidfun(char*str,charch)\r\n(2)錯誤:if(*str==ch)正確:if(*str=='\\0')\r\n(3)錯誤;str[1]='0';正確:str[1]='\\0';解析:該題的重點就是在while的循環(huán)嵌套語句中,由題干信息“若相同,則什么也不做”很容易就能看出if(*str==ch)后面的執(zhí)行語句是錯誤的。另外,void指針具有一般性,它們可以指向任何類型的數(shù)據(jù)。但目前絕大多數(shù)C編譯所提供的這類函數(shù)都返回char指針,再由題目中的定義得出voidfun(charstr,charch)的錯誤信息;str[1]='0';是一個簡單的語法錯誤。

34.(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)(1)錯誤:voidfun(longs,longt)\r\n正確:voidfun(longs,long*t)\r\n(2)錯誤:while(s<0)\r\n正確:while(s>0)

35.(1)錯誤:k=n;正確:k=i;(2)錯誤:s[j]=i;正確:s[j++]=i;(1)錯誤:k=n;正確:k=i;\r\n(2)錯誤:s[j]=i;正確:s[j++]=i;解析:錯誤1:k就是當(dāng)前要被判斷的數(shù),是隨著i值的變化而變化的。錯誤2:在循環(huán)中,j是數(shù)組的下標(biāo)要遞增。

36.錯誤: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)是一個標(biāo)準(zhǔn)的語法錯誤,這跟題目考查的知識點毫無關(guān)系,也就是說,做這樣的題,只要讀懂了題干意思,問題便可迎刃而解。

37.(1)錯誤:voidfun(intab)正確:voidfun(int*aint*b)(2)錯誤:t=b;b=a;a=t;正確;t=*b;*b=*a;*a=t;(1)錯誤:voidfun(inta,b)正確:voidfun(int*a,int*b)\r\n(2)錯誤:t=b;b=a;a=t;正確;t=*b;*b=*a;*a=t;解析:本題考查指針變量做函數(shù)參數(shù)。采用一般變量做參數(shù),不能改變實參的值,采用指針變量作為參數(shù)則能夠改變實參的值。主函數(shù)中fun()的調(diào)用方式說明fun()函數(shù)的參數(shù)應(yīng)當(dāng)為指針類型。另外,值得一提的是“交換法則”,這題的錯誤比較明顯,如果程序段中有隱蔽的交換錯誤,一般不容易發(fā)現(xiàn),

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論