![2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第1頁(yè)](http://file4.renrendoc.com/view/77cb8af71a19fded01dba650289ba303/77cb8af71a19fded01dba650289ba3031.gif)
![2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第2頁(yè)](http://file4.renrendoc.com/view/77cb8af71a19fded01dba650289ba303/77cb8af71a19fded01dba650289ba3032.gif)
![2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第3頁(yè)](http://file4.renrendoc.com/view/77cb8af71a19fded01dba650289ba303/77cb8af71a19fded01dba650289ba3033.gif)
![2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第4頁(yè)](http://file4.renrendoc.com/view/77cb8af71a19fded01dba650289ba303/77cb8af71a19fded01dba650289ba3034.gif)
![2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)_第5頁(yè)](http://file4.renrendoc.com/view/77cb8af71a19fded01dba650289ba303/77cb8af71a19fded01dba650289ba3035.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年甘肅省嘉峪關(guān)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)測(cè)試卷(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.一個(gè)算法的空間復(fù)雜度是指該算法所耗費(fèi)的【】。
2.以下程序的運(yùn)行結(jié)果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
3.若按功能劃分,軟件測(cè)試的方法通常分為白盒測(cè)試方法和【】測(cè)試方法。
4.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式稱為數(shù)據(jù)的【】。
5.語(yǔ)句“int(*ptr)();”的含義是______是指向函數(shù)的指針,該函數(shù)返回一個(gè)血型數(shù)據(jù)。
6.要求使下列程序輸出5個(gè)整數(shù),請(qǐng)?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
7.下列程序的功能是對(duì)輸入的一行字符中的數(shù)字字符的字面值累加,輸出此累加和,請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{charc;
inta,s=0;
while(______)
if(isdigit(C))
{a=c-'0';s+=a;}
printf("s=%d",s);
}
8.語(yǔ)句:x++;、++x;、x=x+1;、x=1+x;,執(zhí)行后都使變量x中的值增1,請(qǐng)寫(xiě)出一條同一功能的賦值語(yǔ)句(不得與列舉的相同)【】。
9.數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為【】。
10.下面程序的功能:輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j;
for(i=0;i<10或i<=9;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
二、單選題(10題)11.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“THIS\0”,*b=“OK\0\0”;printf(“%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));}程序運(yùn)行后的輸出結(jié)果是()。
A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4
12.若有以下說(shuō)明和定義:則對(duì)函數(shù)fun的正確調(diào)用語(yǔ)句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
13.下面關(guān)于串的的敘述中,哪一個(gè)是不正確的()。
A.串是字符的有限序列
B.空串是由空格構(gòu)成的串
C.模式匹配是串的一種重要運(yùn)算
D.串既可以采用順序存儲(chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ)
14.
15.有以下結(jié)構(gòu)體說(shuō)明、變量定義和賦值語(yǔ)句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];則下列scanf函數(shù)調(diào)用語(yǔ)句有錯(cuò)誤的是()。
A.scanf(“%s”,s[0].name);
B.scanf(“%d”,&s[0].age);
C.scanf(“%c”,&(ps->sex));
D.scanf(“%d”,ps->age);
16.用單鏈表表示的鏈?zhǔn)疥?duì)列,隊(duì)頭在鏈表的()位置。
A.鏈頭B.鏈尾C.鏈中D.可以由自己確定
17.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.選擇排序C.快速排序D.歸并排序
18.
19.
20.由兩個(gè)棧共享一個(gè)向量空間的好處是______。
A.減少存取時(shí)間,降低下溢發(fā)生的機(jī)率
B.節(jié)省存儲(chǔ)空間,降低上溢發(fā)生的機(jī)率
C.減少存取時(shí)間,降低上溢發(fā)生的機(jī)率
D.節(jié)省存儲(chǔ)空間,降低下溢發(fā)生的機(jī)率
三、程序設(shè)計(jì)題(10題)21.函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時(shí)ASCIl值為奇數(shù)的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCIl碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符l的ASCIl碼值為奇數(shù),在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDFl2345”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:
22.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),用來(lái)求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在k所指向的存儲(chǔ)單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:
23.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無(wú)紙化考武題庠請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}
24.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是求出能整除x且不是偶數(shù)的整數(shù),并將這些整數(shù)按從小到大的順序放在PP所指的數(shù)組中,總個(gè)數(shù)通過(guò)形參n返回。如x中的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:25.規(guī)定輸入的字符串中只包含字母和+號(hào)。編寫(xiě)函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的母號(hào)外,將其他的*號(hào)全部刪除。形參h已指向字符串中第一個(gè)字母,形參P指向字符串中最后一個(gè)字母。在編寫(xiě)函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。
26.請(qǐng)編寫(xiě)函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字符串(每串的長(zhǎng)度
不超過(guò)N),按順序合并組成一個(gè)新的字符串。
例如,若字符串?dāng)?shù)組中的M個(gè)字符串為:
ABCD
BCDEFG
CDEFGHI
則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGHl。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineM3
#defineN20
voidproc(chararr[M][N],char*b)
{
}
voidmain
{
charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;
chararr[100]={"##################"};
printf(”Thestrin9:kn”);
for(i=0;i<M;i++)
puts(str[i]);
printf("\n");
proc(str,arr);
printf("TheAstring:\n");
printf("%S",arr);
printf("\n\n");
}
27.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函數(shù),用來(lái)刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:
28.學(xué)生記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)體數(shù)組中,請(qǐng)編寫(xiě)函數(shù)fun,其功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放入b所指的數(shù)組中,注意:分?jǐn)?shù)最低的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最低的學(xué)生人數(shù):
注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)flm的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
29.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun(),其功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次存放到一維數(shù)組中,將一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#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]);}
30.某學(xué)生的記錄由學(xué)號(hào)、8門(mén)課程成績(jī)和平均分組成,學(xué)號(hào)和8門(mén)課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫(xiě)函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STREC;voldfun(STREC*a){}voidmainSTRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf("The%ssstudentdata:\n",s.num);for(i=0;i<N;i++)printf("%4.1fkn",s.s[i]);printf("\nknave=%7.3fkn",s.aVe);printf("\n");}四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:將m(1≤m≤10)個(gè)字符串連接起來(lái),組成一個(gè)新串,放入pt所指字符串中,例如:把3個(gè)串a(chǎn)bc,CD,EF串聯(lián)起來(lái),結(jié)果是abcCDEF。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
/*************found**************/
intfun(charstr[][10],intm,char*pt)
{intk,q,i,j=0;
for(k=0;k<m;k++)
{q=strlen(str[k]);
j+=q;
for(i=0;i<q;i++)
/*************found**************/
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
}
pt-=j;
}
main()
{intm,h;
chars[10][10],p[120];
clrscr();
printf("\nPleaseenterm:");
scanf("%d",&m);gets(s[0]);
printf("\nPleaseenter%dstring:In",m);
for(h=0;h<m;h++)gets(s[h]);
fun(s,m,p);
printf("\nTheresultis:%s\n",p);
}
32.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個(gè)字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)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);
}
33.數(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");
}
34.下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
intfun(intk)
{intm=0,mc=0,j;
while((k>=2)&&(mc<10))
{
/*************found**************/
if((k%13=0)||(k%17=0))
{m=m+k;mc++;}
k--;
/*************found**************/
returnm;
}
main()
{clrscr();
printf("%d\n",fun(500));
}
35.給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫(xiě)。
例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
36.下列給定程序中,函數(shù)fun()的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列后續(xù)字母(但Z轉(zhuǎn)換為A,z轉(zhuǎn)換為a),其他字符不變。
請(qǐng)改正程序指定部位的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<ctype.h>
voidfun(char*s)
{
/**********found**********/
while(*s!='@')
{
if(*s>='A'&&*s<='Z'||*s>='a'&&'s<='z')
{
if(*s=='Z')
*s='A';
else
if(*s=='z')
*s='a';
else
*s+=1;
}
/**********found**********/
(*s)++;
}
}
voidmain()
{
chars[80];
printf("\nEnterastringwithlength<80.:\n\n");gets(s);
printf("\nThestring:\n\nt");
puts(s);
fun(s);
printf("\n\nTheCords:\n\n");puts(s);
}
37.給定程序MODll.C中函數(shù)fun的功能是:從低位開(kāi)始取出長(zhǎng)整型變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在1中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
38.下列給定程序中,函數(shù)fun()的功能是計(jì)算并輸出high以內(nèi)的素?cái)?shù)之和。high由主函數(shù)傳給fun()函數(shù)。
例如:若high的值為100,則函數(shù)的返回值為1060。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
{
intsum=0,n=0,j,yes;
while(high>=2)
{
yes=1;
for(j=2;j<=high/2;j++)
**********************found**********************/
ifhigh%j==0
{
yes=0;
break;
}
/**********************found**********************/
if(yes==0)
{
sum+=high;
n++;
}
high--;
}
returnsum;
}
main()
{
clrscr();
printf("%d\n",fun(100));
}
39.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。
例如,若n=10,則應(yīng)輸出:0.617977。
請(qǐng)改正程序中的語(yǔ)法錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.給定程序中函數(shù)fun的功能是:從低位開(kāi)始取出長(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>
/************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);
}
五、程序改錯(cuò)題(2題)41.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個(gè)數(shù)。請(qǐng)修改程序中的錯(cuò)誤,使它能夠得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
42.下列給定程序中,函數(shù)proc()的功能是:判斷一個(gè)整數(shù)m是否是素?cái)?shù),若是返回1,否則返回0。在main()函數(shù)中,若proc()返回1,則輸出″YES″;若proc()返回0,則輸出″NO″!
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main)函數(shù),不得增行或刪行,也不得,t更改程序的結(jié)構(gòu)。
試題程序:
六、操作題(2題)43.使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是在形參s所指宇符串中尋找與參數(shù)c相同的字符,并在其后插入一個(gè)與之相同的字符,若找不到相同的字符則不做任何處理。例如,若s所指字符串為“baacda”,c中的字符為a,執(zhí)行后s所指字符串為“baaaacdaa”。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,charc){ inti,j,n;/*********found*********/ for(i=0;s[i]!=【1】;i++) if(s[i]==c) {/*********found*********/ n=【2】; while(s[i+1+n]!=‘\0’) n++; for(j=i+n+l;j>i;j--) s[j+1]=s[j];/*********found*********/ s[j+1]=【3】; i=i+1; }}main(){ chars[80]=’’baacda’、c; printf(“\nThestring:%s\n'Vs); printf(M\nlnputacharacter:”); scanf(“%c”,&c); fun(s,c); printf(n\nTheresultis:%s\n”,s);}
44.請(qǐng)補(bǔ)充函數(shù)proc(),其功能是:計(jì)算并輸出給定l0個(gè)數(shù)的方差。例如,給定的10個(gè)數(shù)為12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,輸出為s=8.877500。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:
參考答案
1.存儲(chǔ)空間存儲(chǔ)空間解析:空間復(fù)雜度是指算法在執(zhí)行過(guò)程中臨時(shí)占用的存儲(chǔ)空間大小,包括:①算法本身所占用的存儲(chǔ)空間;②算法的輸入輸出數(shù)據(jù)所占用的存儲(chǔ)空間;③算法在運(yùn)行過(guò)程中臨時(shí)占用的存儲(chǔ)空間。
2.aeiou
3.黑盒軟件測(cè)試的方法有三種:動(dòng)態(tài)測(cè)試、靜態(tài)測(cè)試和正確性證明。設(shè)計(jì)測(cè)試實(shí)例的方法一般有兩類:黑盒測(cè)試法和白盒測(cè)試法。在使用黑盒法設(shè)計(jì)測(cè)試實(shí)例時(shí),測(cè)試人員將程序看成一個(gè)“黑盒”,即不關(guān)心程序內(nèi)部是如何實(shí)現(xiàn)的,只是檢查程序是否符合它的“功能說(shuō)明”,所以使用黑盒法設(shè)計(jì)的測(cè)試用例完全是根據(jù)程序的功能說(shuō)明來(lái)設(shè)計(jì)的。
4.模式或邏輯模式或概念模式模式也稱邏輯模式或概念模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等。
5.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識(shí)符(葉旨針變量名)()。注:“類型標(biāo)識(shí)符”為函數(shù)返回值的類型。
6.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開(kāi)始,輸出5個(gè)整數(shù)則需要的條件是i<=8。
7.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析題目可知,程序中運(yùn)用函數(shù)c=getchar()從標(biāo)準(zhǔn)輸入設(shè)備讀取下一個(gè)字符,而且是一行的字符(即沒(méi)有換行),所以條件為(c=getchar())!='\\n'。
8.x+=1;
9.數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)
10.j%3!=0或j%3j%3!=0或j%3解析:題目要求輸出100以內(nèi)能被3整除且個(gè)位數(shù)為6的所有整數(shù),且通過(guò)for循環(huán)實(shí)現(xiàn),循環(huán)體內(nèi)j=i*10+6;這也就滿足了個(gè)位數(shù)為6的條件,所以第1個(gè)空格填入i<10或i<=9;if語(yǔ)句中的continue說(shuō)明如果條件不成立則不輸出j,所以第2空填j%3!=0或j%3。
11.Astrlen函數(shù)求得參數(shù)中字符串的長(zhǎng)度(不包括字符串結(jié)束標(biāo)識(shí)“\\0”)sizeof函數(shù)求得特定類型參數(shù)所占存儲(chǔ)空間的長(zhǎng)度。題干中a是數(shù)組名,由于定義時(shí)省略維數(shù)大小,因此數(shù)組大小是初始化的字符個(gè)數(shù),即a的數(shù)組大小為6。綜上,strlen(a)只計(jì)算字符“T”“H”“I”“S”,結(jié)果為4;sizeof(a)求得數(shù)組a的大小,結(jié)果為6;指針b指向一個(gè)字符串“OK\\0\\0”,所以strlen(b)只計(jì)算字符“O”“K”,結(jié)果為2;sizeof(b)求得指針占用存儲(chǔ)空間的大小,結(jié)果為4。故本題答案為A選項(xiàng)。
12.A題干中,函數(shù)fun接收一個(gè)整型指針參數(shù),返回值為int類型。main函數(shù)首先定義一個(gè)函數(shù)指針a,將函數(shù)fun的地址賦給a,所以a是指向函數(shù)fun的指針,可以通過(guò)a調(diào)用函數(shù)fun。選項(xiàng)A中,通過(guò)a調(diào)用函數(shù)fun,可以使用(*a),接收的參數(shù)是整型變量c的地址,正確;選項(xiàng)B中,參數(shù)x是一個(gè)數(shù)組,錯(cuò)誤;選項(xiàng)C中,調(diào)用b函數(shù),由于程序沒(méi)有給出函數(shù)b的定義,因此這里調(diào)用b是錯(cuò)誤的,而且函數(shù)b是沒(méi)有參數(shù)的,這里調(diào)用b的時(shí)候傳入了參數(shù),所以C錯(cuò)誤;選項(xiàng)D中,由于b是一個(gè)函數(shù),不能作為整型指針變量傳給fun函數(shù),因此D錯(cuò)誤。本題答案為A選項(xiàng)。
13.B
14.D
15.D題目中需要輸入一個(gè)變量,scanf要求輸入?yún)?shù)為指針,而D選項(xiàng)中“ps->age”為變量,不是指針。故本題答案為D選項(xiàng)。
16.A
17.A解析:以下幾種算法的時(shí)間復(fù)雜度分別為:冒泡排序(n2);選擇排序(n2);快速排序(nlog2n);歸并排序(nlog2n)。當(dāng)排序元素序列基本有序的情況下,冒泡排序的交換次數(shù)為0,只是順序掃描數(shù)據(jù)而已,所以其效率是最高的。
18.D
19.A
20.B
21.22.1intfun(int*s,intt,int*k)2{3Inti;4*k=0;/*k所指的數(shù)是數(shù)組的下5標(biāo)*/6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元素的下標(biāo)賦給k所指的數(shù)*/7returns[*k];/*返回?cái)?shù)組的最大元素*/8}<t;i++)<>本題中使用指針變量k作為值最大的元素的下標(biāo)。使用時(shí)要注意對(duì)k進(jìn)行指針運(yùn)算。程序一開(kāi)始讓k指向數(shù)組中的第1個(gè)元素,即*k=0。通過(guò)for循環(huán)與數(shù)組各個(gè)元素比較,找到最大值。<></t;i++)
23.1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p指向字符串末尾,并統(tǒng)計(jì)字符數(shù)*/6{7n++8P++;10}10for(i=0;i24.1voidfun(intx,intpp[],int*n)2{3inti,j=0;4for(i=l;i<=x;i=i+2)/*i的初值為1,步長(zhǎng)為2,確保i為奇數(shù)*/5if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/6pp[j++]=i;7*n=j;/*傳回滿足條件的數(shù)的個(gè)數(shù)*/8}本題考查:偶數(shù)的判定方法;整除的實(shí)現(xiàn)。本題題干信息:能整除X且不是偶數(shù)的所有整數(shù)。循環(huán)語(yǔ)句中變量i從1開(kāi)始且每次遞增2,所以i始終是奇數(shù)。將能整除x的i值存放到數(shù)組PP中,整除采用求余運(yùn)算符“%”,即“x%i==0”。最后將數(shù)據(jù)元素個(gè)數(shù)j保存到n中。
25.
26.voidproc(chararr[M][N],char*b)
\n{
\ninti,j,k=0;
\nfor(i=0;i<M;i++)//i表示其行下標(biāo)
\nfor(j=0;arr[i][j]!=\0;j++)//由于每行的個(gè)數(shù)不等,因此用a[i][j]!=\0來(lái)作為循環(huán)結(jié)束
\n的條件
\nb[k++]=arr[i][j];//把二維數(shù)組中的元素放到b的一維數(shù)組中,
\nb[k]=\0;//最后把b賦\0作為字符串結(jié)束的標(biāo)志
\n)
\n【解析】字符串?dāng)?shù)組中每一行都是一個(gè)一個(gè)完整的字符串,其結(jié)束標(biāo)志為\0。因此通過(guò)字符串的結(jié)束標(biāo)志來(lái)判斷每一個(gè)字符串是否結(jié)束,將字符串?dāng)?shù)組中的所有字符串均賦值新的一維數(shù)組b來(lái)完成字符串的合并。
\n27.1voidfun(char*str)2{3inti=0;4char*p=str;5while(*p)6{7if(*p!='')/*刪除空格*/8{9str[i++]=*p;10}11p++;12}13str[i]='\\0';/*加上結(jié)束符*/14}本題要求刪除所有空格,即保留除了空格以外的其他所有字符。由于C語(yǔ)言中沒(méi)有直接刪除字符的操作,因此對(duì)不需要?jiǎng)h除的字符采用“保留”的操作。用指針P指向字符串中的每一個(gè)字符,每指向一個(gè)字符都判斷其是否為空格,若不是空格則將其保存到數(shù)組Str。28.
【考點(diǎn)分析】
本題考查:查找結(jié)構(gòu)體數(shù)組中的最小數(shù)據(jù),需要通過(guò)for循環(huán)語(yǔ)句和if條件語(yǔ)句來(lái)完成。
【解題思路】
本題中第一個(gè)循環(huán)語(yǔ)句的作用是遍歷數(shù)組求出最低分?jǐn)?shù),第二個(gè)循環(huán)語(yǔ)句的作用是將數(shù)組中的元素與最低分比較,查找是否存在與最低分相等的成績(jī)。29.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;/*通過(guò)指針?lè)祷卦貍€(gè)數(shù)*/}}題目要求實(shí)現(xiàn)將二維數(shù)組元素存入一維數(shù)組。使用for循環(huán)語(yǔ)句來(lái)控制二維數(shù)組元素的下標(biāo),同時(shí)使用指針變量配合操作??梢杂脙蓚€(gè)循環(huán)來(lái)處理問(wèn)題,由于是按列的順序取出,因此第1個(gè)循環(huán)用于控制列下標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。30.voidfun(STREC*a){inti;a->ave=0.0;for(i=0;i<N;i++)a->ave=a->ave+a->s[i];/*求各門(mén)課程成績(jī)的總和*/a->ave=a->ave/N;/*求平均分*/}【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運(yùn)算。fun函數(shù)中求出平均成績(jī),要帶回主函數(shù)則必須定義一個(gè)指針類型的形參STREC*a,同時(shí)引用成員使用指向運(yùn)算符,a->ave和a->s[i]。
31.(1)錯(cuò)誤:intfun(charstr[][10]intmchar*pt)正確:voidfun(charstr[][10intmchar*pt)(2)錯(cuò)誤:pt[i]=str[ki];正確:pt[i]=str[k][i];(1)錯(cuò)誤:intfun(charstr[][10],intm,char*pt)正確:voidfun(charstr[][10,intm,char*pt)\r\n(2)錯(cuò)誤:pt[i]=str[k,i];正確:pt[i]=str[k][i];解析:本題中的兩例錯(cuò)誤我們已經(jīng)在前面的講解中詳細(xì)闡述了,一般這樣的字符串連接函數(shù)在C語(yǔ)言的考試中肯定不讓使用strcat函數(shù),但是,直接用if和while的循坪嵌套也很容易解決問(wèn)題的。
32.(1)錯(cuò)誤;voidfun(charstrcharch)正確:voidfun(char*strcharch)(2)錯(cuò)誤:if(*str==ch)正確:if(*str=='\0')(3)錯(cuò)誤;str[1]='0';正確:str[1]='\0';(1)錯(cuò)誤;voidfun(charstr,charch)正確:voidfun(char*str,charch)\r\n(2)錯(cuò)誤:if(*str==ch)正確:if(*str=='\\0')\r\n(3)錯(cuò)誤;str[1]='0';正確:str[1]='\\0';解析:該題的重點(diǎn)就是在while的循環(huán)嵌套語(yǔ)句中,由題干信息“若相同,則什么也不做”很容易就能看出if(*str==ch)后面的執(zhí)行語(yǔ)句是錯(cuò)誤的。另外,void指針具有一般性,它們可以指向任何類型的數(shù)據(jù)。但目前絕大多數(shù)C編譯所提供的這類函數(shù)都返回char指針,再由題目中的定義得出voidfun(charstr,charch)的錯(cuò)誤信息;str[1]='0';是一個(gè)簡(jiǎn)單的語(yǔ)法錯(cuò)誤。
33.(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嗎?
34.(1)錯(cuò)誤:if((k%13=0)||(k%17=0))正確:if(k%13=0)||(k%17==0))(2)錯(cuò)誤:缺少大括號(hào)正確:加}(1)錯(cuò)誤:if((k%13=0)||(k%17=0))正確:if(k%13=0)||(k%17==0))\r\n(2)錯(cuò)誤:缺少大括號(hào)正確:加}解析:能被某個(gè)數(shù)整除的表示方法是x%y==0,而并非像題目中所表示的if((k%13=0)||(k%17=0)),所以,if((k%13=0)||(k%17=0))修改后的結(jié)果應(yīng)該是答案所示信息,(2)中缺少程序完整所需的“}”,此類信息在做題時(shí)一定注意,我們可以在上機(jī)考試的時(shí)候先運(yùn)行一下程序,這樣明顯的錯(cuò)誤一般都會(huì)有錯(cuò)誤信息顯示出來(lái),比如丟失“}”的錯(cuò)誤信息是“Compoundstatementmissing}infunctionfun”,并在當(dāng)前錯(cuò)誤處停止光標(biāo),我們只要按回車鍵進(jìn)行編輯就可以了。
35.(1)num[k]=0;(2)switch(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生貧困補(bǔ)助申請(qǐng)書(shū)
- 甲氧基酚項(xiàng)目風(fēng)險(xiǎn)識(shí)別與評(píng)估綜合報(bào)告
- 企業(yè)數(shù)據(jù)轉(zhuǎn)換過(guò)程中的審計(jì)跟蹤
- DB2201-T 45-2023 政務(wù)服務(wù)場(chǎng)所建設(shè)規(guī)范
- 2022-2023學(xué)年內(nèi)蒙古包頭市高一上學(xué)期期末物理試卷(解析版)
- 新版北師版一年級(jí)下冊(cè)數(shù)學(xué)課件六 有趣的平面圖形(一)第4課時(shí) 動(dòng)手做(三)
- 7.210000以內(nèi)數(shù)的認(rèn)識(shí)(含答案)
- 2025年一次性可降解保鮮袋行業(yè)深度研究分析報(bào)告
- Module 5 Unit 10 Can I help you綜合練習(xí) 教科版(含答案)
- 現(xiàn)代企業(yè)適應(yīng)環(huán)境變化的方法探討
- 《公路路基路面現(xiàn)場(chǎng)測(cè)試規(guī)程》(3450-2019)
- 不同產(chǎn)地半夏總生物堿含量測(cè)定
- 2023年新疆中考數(shù)學(xué)試卷真題及答案
- 生物必修2教學(xué)進(jìn)度表
- 對(duì)北京古建筑天壇的調(diào)查報(bào)告
- 2023國(guó)民閱讀時(shí)間報(bào)告
- 四川省成都市武侯區(qū)2022-2023學(xué)年七年級(jí)下學(xué)期期末英語(yǔ)試卷(含答案)
- 智能機(jī)器人與傳感器PPT完整全套教學(xué)課件
- GB/T 42595-2023承壓設(shè)備修理基本要求
- 塑料成型模具設(shè)計(jì)(第2版)江昌勇課件1-塑料概述
- 科幻小說(shuō)賞讀智慧樹(shù)知到答案章節(jié)測(cè)試2023年杭州師范大學(xué)
評(píng)論
0/150
提交評(píng)論