版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 40064-2024節(jié)能技術(shù)評價導(dǎo)則
- 2025版水利工程勘察設(shè)計合同熱3篇
- 物流行業(yè)安全防護(hù)規(guī)則
- 公園戶外攀巖墻施工協(xié)議
- 物業(yè)服務(wù)合同書范本
- 教育培訓(xùn)行業(yè)投資操作手冊
- 醫(yī)療行業(yè)財務(wù)收支管理規(guī)程
- 外包售后服務(wù)協(xié)議書
- 森林防火攪拌站招標(biāo)文件
- 展覽館玻璃膜施工合同
- 義務(wù)教育《道德與法治》課程標(biāo)準(zhǔn)(2022年版)
- 乙肝五項詳解(課堂PPT)
- 《從百草園到三味書屋》閱讀理解題
- 個人信息查詢使用授權(quán)書
- 工作證明(通用)
- 通達(dá)信-低位放量公式(已驗證)
- 第四章 船舶動力管路系統(tǒng)
- 全球?qū)嶒炇覂x器耗材國際品牌簡介
- 空白數(shù)獨格子
- 特種設(shè)備日常運(yùn)行記錄表(共4頁)
- 扶壁式擋土墻監(jiān)理實施細(xì)則
評論
0/150
提交評論