




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年四川省綿陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)預(yù)測(cè)試題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{chara[]="Language",b[]="Programe";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c,*(p1+k));
}
2.在C語(yǔ)言中,while和do…while循環(huán)的主要區(qū)別是______的循環(huán)至少被執(zhí)行一次。
3.數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。
4.以下sstrcpy()函數(shù)實(shí)現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指內(nèi)存空間中,形成一個(gè)新字符串s。
請(qǐng)?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
5.以下程序的定義語(yǔ)句中,x[1]的初值是【】,程序運(yùn)行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
6.數(shù)據(jù)庫(kù)保護(hù)分為:安全性控制、______、并發(fā)性控制和數(shù)據(jù)的恢復(fù)。
7.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?zhí)羁铡?/p>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
8.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inta=1234;
floatb=123.456;
doublec=12345.54321;
printf("\n%2d,%2.1f,%2.11f",a,b,C);
}
9.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0‖x==1)
return3;
else
p=x-fun(x-2);
returnp;
}
voidmain()
{printf("\n%d",fun(11));
}
10.調(diào)用C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)要求用【】命令。
二、單選題(10題)11.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII碼值為65。程序運(yùn)行后的輸出結(jié)果是A.5670B.656667C.567D.ABC
12.有以下程序:#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
13.已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)該采用的算法是()
A.直接選擇排序B.堆排序C.快速排序D.直接插入排序
14.下列敘述中,不正確的是
A.數(shù)據(jù)庫(kù)技術(shù)的根本目標(biāo)是要解決數(shù)據(jù)共享的問(wèn)題
B.數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致
C.數(shù)據(jù)庫(kù)設(shè)計(jì)是指設(shè)計(jì)一個(gè)能滿足用戶要求,性能良好的數(shù)據(jù)庫(kù)
D.數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)獨(dú)立的系統(tǒng),但是需要操作系統(tǒng)的支持
15.以下敘述中,不正確的是()。
A.使用staticfloata定義的外部變量存放在內(nèi)存中的靜態(tài)存儲(chǔ)區(qū)
B.使用floatb定義的外部變量存放在內(nèi)存中的動(dòng)態(tài)存儲(chǔ)區(qū)
C.使用staticfloatc定義的內(nèi)部變量存放在內(nèi)存中的靜態(tài)存儲(chǔ)區(qū)
D.使用floatd定義的內(nèi)部變量存放在內(nèi)存中的動(dòng)態(tài)存儲(chǔ)區(qū)
16.C語(yǔ)言中不合法的字符串常量是
A.\121B.'Y'C.\n\nD.ABCD\x6d
17.若某表最常用的操作是在最后一個(gè)結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)或刪除最后一個(gè)結(jié)點(diǎn),則采用()存儲(chǔ)方式最節(jié)省運(yùn)算時(shí)間。
A.單鏈表B.給出表頭指針的單循環(huán)鏈表C.雙鏈表D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表
18.有如下程序:
longfib(intn)
{if(n>2)return(fib(n-1)+fib(n-2));
elsereturn(2);
}
main()
{printf("%d\n",fib(3));}
該程序的輸出結(jié)果是A.A.2B.4C.6D.8
19.如果以鏈表作為棧的存儲(chǔ)結(jié)構(gòu),則出棧操作時(shí)()。
A.必須判別棧是否滿B.必須判別棧是否為空C.必須判別棧元素類型D.可不做任何判斷
20.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序運(yùn)行后輸出結(jié)果是______。
A.7,8,8B.7,8,7C.8,7,7D.8,7,8
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/
22.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c在此程序中,編寫函數(shù)intfun(),其功能是求出小于或等于lim的所有素?cái)?shù),將其存放在aa數(shù)組中,并返回所求出的素?cái)?shù)的個(gè)數(shù)。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4#defineMAX1005intfun(intlim,intaa[MAX])6{78}9voidmain()10{11FILE*wf;12intlimit,i,sum;13intaa[MAX];14system("CLS");15printf("輸入一個(gè)整數(shù):");16scanf("%d",&limit);17sum=fun(limit,aa);18for(i=0;i<sum;i++)19{20if(i%10==0&&i!=0)/*每行輸出10個(gè)數(shù)*/21printf("\n");22printf("%5d",aa[i]);23}24/******************/25wf=fopen("out.dat","w");26sum=fun(15,aa);27for(i=0;i<sum;i++)28{29if(i%10==0&&i!=0)/*每行輸出10個(gè)數(shù)*/30fprintf(wf,"\n");31fprintf(wf,"%5d",aa[i]);32}33fclose(wf);34/******************/35}23.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說(shuō)明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存放在文件prog1.c中,請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語(yǔ)句。試題程序:
24.請(qǐng)編寫函數(shù)fun(),其功能是計(jì)算并輸出下列多項(xiàng)式的值:F=1+1/1!+1/21+1/31+1/41+…+1/m!例如,若主函數(shù)從鍵盤給m輸入5,則輸出為F=2.716667。注意:m的值要求大于1但不大于100。部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
25.編寫函數(shù)fun(),其功能是:求出1~1000中能被7或11整除,但不能同時(shí)被7和ll整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
26.編寫函數(shù)proc,它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。S=1/(12)+1/(23)+…+1/(n(n+1))例如,當(dāng)n=20時(shí),函數(shù)值為0.952381。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
27.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),其功能是統(tǒng)計(jì)s所指字符串中的數(shù)字字符個(gè)數(shù),并將其作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:28.使用VC++2010打開(kāi)考生文件夾下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ǔ)句。試題程序:
29.請(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ǔ)句。試題程序:
30.請(qǐng)編寫一個(gè)函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
四、2.程序修改題(10題)31.下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計(jì)算下列公式的值。
t=1-1/2+1/3-1/4+…+(-1)(m+1)/m
例如,若輸入5,則應(yīng)輸出0.783333。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found*************/
intfun(intm)
{
doublet=1.0,j=1.0;
inti;
/*************found*************/
for(i=l;i<m;i++)
{j=-1*j;t+=j/i;}
returnt;
}
main()
{
intm;
clrscr();
printf("\nPleaseenter1integernumber:");
scanf("%d",&m);
printf("/nTheresultis%If\n",fun(m));
}
32.給定程序MODll.C的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開(kāi)的字符串)。
例如,若輸入:Iamastudenttotaketheexamination.,則應(yīng)輸出:IAmAStudentToTakeTheExamination.。
請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
33.下列給定的程序中,fun()函數(shù)的功能是:將p所指字符串中每個(gè)單詞的最后一個(gè)字母改成大寫(這里的“單詞”是指有空格隔開(kāi)的字符串)。例如,若輸入:
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);
}
34.已知一個(gè)數(shù)列從第0項(xiàng)開(kāi)始的前三項(xiàng)分別為0,0,1,以后的各項(xiàng)都是其相鄰的前三項(xiàng)之和。給定程序MODll.C中函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和。n的值通過(guò)形參傳入。
例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為:23.197745。
請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
35.下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫字母都改為對(duì)應(yīng)的大寫字母,其他字符不變。例如,若輸入“edS,dAd”,則輸出“EDS,DAD”。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conlo.h>
/*************found*************/
charfun(chartt[])
{
inti;
for(i=0;tt[i];i++)
{
/*************found*************/
if((tt[i]>='A')&&(tt[i]<='2'))
tt[i]-=32;
}
return(tt);
}
main()
{
inti;
chartt[81];
clrscr();
printf("\nPleaseenterastring:");
gets(tt);
printf("\nTheresultstringiS:/n%s",fun(tt));
}
36.下列給定函數(shù)中,函數(shù)fun()的功能是:統(tǒng)計(jì)字符串中各元音字母(即A,E,I,O,U)的個(gè)數(shù)。注意:字母不分大小寫。例如,輸入THIsisaboot,則應(yīng)輸出是10220。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(char*s,intnum[5])
{intk,i=5;
for(k=0;k<i;k++)
/*************found**************/
num[i]=0;
for{;*s;s++)
{i=-l;
/*************found**************/
switch(s)
{case'a':case'A':{i=0;break;}
case'e':case'E':{i=1;break;}
case'i':case'I':{i=2;break;}
case'o':case'O':{i=3;break;}
case'u':case'U':{i=4;break;}
}
if(i>=0)
num[i]++;
}
}
main()
{chars1[81];intnum1[5],i;
clrscr();
printf("\nPleaseenterastring:");
gets(s1);
fun{s1,num1);
for(i=0;i<5;i++)printf("%d",num1[i]);
printf("\n");
}
37.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。
例如,給指定精度的變量eps輸入0.0005時(shí),應(yīng)當(dāng)輸出Pi=3.141480。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
38.給定程序MODll.C中函數(shù)fun的功能是:從n(形參)個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。
例如,若輸入8名學(xué)生的成績(jī):80.5607290.59851.58864則低于平均分的學(xué)生人數(shù)為:4(平均分為:75.5625)。
請(qǐng)改正程序中的錯(cuò)誤,使它能統(tǒng)計(jì)出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和a[0]中的數(shù)對(duì)調(diào),次最小數(shù)和a[1]中的數(shù)對(duì)調(diào)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<conio.h>
#defineN20
voidfun(int*a,intn)
{
inti,m,t,k;
/************************found************************/
for(i=0;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;
}
}
40.下列給定程序中,函數(shù)fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)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++)
/*************found************/
if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&S[i]<='z',))
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\nThestringofchanging
is:\%S\n",item);
}
五、程序改錯(cuò)題(2題)41.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。請(qǐng)?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
42.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對(duì)字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對(duì)字符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入前兩個(gè)字符中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入前三個(gè)字符中,待排序的字符串已
在主函數(shù)中賦予。
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<strin9.h>
#include<stdi0.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=1;i<n;i++)
//****found****
{c=arr[i];
j=i-1;
while((j>=o)&&(ch<arr[j]))
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=ch;
}
}
voidmain
{
chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s\n",a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
}六、操作題(2題)43.以下函數(shù)用來(lái)求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。請(qǐng)?zhí)羁铡?/p>
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
【】
if(s[*k]<s[i])*k=i;
return【】;}
main()
{inta[10]={876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);}
44.使用VC++打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過(guò)函數(shù)值返回,在主函數(shù)中輸出從此地址開(kāi)始的字符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時(shí),輸出結(jié)果應(yīng)是“abcdx”。當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時(shí),則程序輸出未找到信息“Notfound!”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}
參考答案
1.gae
2.do…whiledo…while解析:考查while和do…while循環(huán)的主要區(qū)別。while循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面的表達(dá)式的值為非零時(shí),才可能執(zhí)行循環(huán)體;在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此無(wú)論表達(dá)式的值是否為零,循環(huán)體至少要被執(zhí)行一次。
3.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫(kù)的應(yīng)用程序的集合。因此,數(shù)據(jù)庫(kù)管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務(wù)。
4.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個(gè)字符型數(shù)組strl和str2,并且給str2賦初值“abc&fgh”,接著調(diào)用函數(shù)sstrcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個(gè)while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲(chǔ)空間,然后指針s和指針t都下移到下一個(gè)元素。所以空格處應(yīng)該填*t++或*(t++)。
5.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語(yǔ)句中,當(dāng)i=0時(shí),p[0]=&x[1],p[0][0]=2;當(dāng)i=1時(shí),p[1]=&x[3],p[1][0]=4;當(dāng)i=2時(shí),p[2]=&x[5],p[2][0]=6;當(dāng)i=3時(shí),p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。
6.完整性控制完整性控制
7.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標(biāo),需先預(yù)設(shè)1個(gè)臨時(shí)最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時(shí)最大元素更大時(shí),就用當(dāng)前元素的下標(biāo)更新臨時(shí)最大元素下標(biāo)。直至考查了數(shù)組的全部元素后,這臨時(shí)最大元素下標(biāo)就是數(shù)組的最大元素下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查是從首元素開(kāi)始順序向后繼元素考查。程序中,存儲(chǔ)臨時(shí)最大元素下標(biāo)的變量是k,變量p控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時(shí)最大元素s[k)更大時(shí),應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。
8.1234123.512345.51234,123.5,12345.5解析:在primf()函數(shù)的格式控制符中:'%2d'表示輸出一個(gè)有符號(hào)整數(shù),如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的a按原樣輸出為1234:'%2.1尸表示輸出一個(gè)單精度實(shí)數(shù),只輸出小數(shù)點(diǎn)后1位,后面若有小數(shù)則四舍五入,如果輸出長(zhǎng)度小于2,則左端補(bǔ)以空格,否則按實(shí)際長(zhǎng)度輸出。所以本題中的b四舍五入到小數(shù)點(diǎn)后1位再輸出為123.5;'%2.11f'除了表示輸出一個(gè)雙精度實(shí)數(shù)外,其余參數(shù)和'%2.1f'一樣。所以本題中的c四舍五入到小數(shù)點(diǎn)后1位再輸出為12345.5。故輸出結(jié)果是:1234,123.5,12345.5。
9.44解析:本題考查函數(shù)的遞歸調(diào)用.在主函數(shù)中第1次調(diào)用于函數(shù)是調(diào)用的fun(11),返回11-fun(9);第2次調(diào)用于函數(shù)是調(diào)用的fun(9),返回9-fun(7);第3次調(diào)用于函數(shù)是調(diào)用的fun(7),返回7-fun(5):第4次調(diào)用子函數(shù)是調(diào)用的fun(5),返回5-fun(3):第5次調(diào)用于函數(shù)是調(diào)用的fun(3),返回3-fun(1):第6次調(diào)用于函數(shù)是調(diào)用的fun(1),返回3??偟姆祷刂凳牵?1-(9-(7-(5-(3-3))))=4.
10.includeinclude解析:include命令可調(diào)用標(biāo)準(zhǔn)的C語(yǔ)言庫(kù)函數(shù),可以用一對(duì)尖括號(hào)或一對(duì)雙引號(hào)將“.h”文件括起來(lái),在include前面要加“#”。
11.C
12.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)。
13.D
14.B解析:B選項(xiàng)錯(cuò)誤,原因是,數(shù)據(jù)庫(kù)應(yīng)該具有物理獨(dú)立性和邏輯獨(dú)立性,改變其一而不影響另一個(gè)。
15.B
16.B解析:字符串常量是由雙引號(hào)括起來(lái)的一串字符,其中的雙引號(hào)不可缺少。由此可知,選項(xiàng)A)、C)、D)都是含法的字符串常量,而選B)是一個(gè)字符常量。
17.D
18.B
19.B
20.B解析:f函數(shù)的功能是返回地址為x,y的兩個(gè)數(shù)中值鉸的數(shù)的地址,本題輸出結(jié)果是7,8,7。
21.1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j
<="">5for(i=0;i<=j;i++)6a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/7}本程序?qū)崿F(xiàn)的是:矩陣上三角元素的值乘以m。上三角元素下標(biāo)的特點(diǎn)是行下標(biāo)小于等于列下標(biāo),即“i<=j”使用循環(huán)語(yǔ)句遍歷數(shù)組元素,第1個(gè)循環(huán)用于控制列坐標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。22.1intfun(intlim,intaa[MAX])2{3inti,j,k=0;4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素?cái)?shù)*/5{for(j=2;j<i;j++)6if(i%j==0)break;7if(j>=i)8aa[k++]=i;/*將求出的素?cái)?shù)放入數(shù)組aa中*/9}10returnk;/*返回所求出的素?cái)?shù)的個(gè)數(shù)*/11}<i;jp++)<>如果一個(gè)數(shù)是合數(shù),那么它的最小質(zhì)因數(shù)肯定小于等于它的平方根。本程序使用for循環(huán)語(yǔ)句查找小于lim的所有數(shù),使用內(nèi)嵌的循環(huán)判斷語(yǔ)句判斷該數(shù)是否為素?cái)?shù)。在做這道題時(shí),需要重點(diǎn)掌握素?cái)?shù)的判定方法:for(j=2;j<sqrt(i);j++)if(i%j==0)break;…</i;jp++)<>23.1voidfun(char*a,char*s)2{while(*s!:'。1)3{*a=*s;4a++;5s++;}7*a='\\0';}要將指針變量s所指的字符串存入指針變量a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù)。本題可以使用循環(huán)語(yǔ)句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加字符串結(jié)束標(biāo)志'\\0'。
24.
【解析】該程序的功能是計(jì)算并輸出多項(xiàng)式的值。該題的解題思路是根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對(duì)多項(xiàng)式進(jìn)行累加求和。
根據(jù)題干中給出的數(shù)列,推出每一項(xiàng)是階乘的倒數(shù),所以首先在循環(huán)中求得每一項(xiàng)的階乘。其中階乘的計(jì)算公式
定義為:
m!=m*(m=1)*(m=2)*…*1(m>1)
m!=1(m=1)
公式分為參數(shù)m是1和大于1的兩種情況,例如.1的階乘1!=1;5的階乘5!=5*4*3*2*1。
然后求得階乘分之一的累加和。
25.
【解析】根據(jù)題意,所寫函數(shù)要用for循環(huán)實(shí)現(xiàn)對(duì)整數(shù)1~1000的遍歷;通過(guò)if語(yǔ)句找出能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),因?yàn)橥瑫r(shí)被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除,可得出表達(dá)式“(i%7==0||i%11==O)&&i%77!=0”;再按題目要求,將找出來(lái)的整數(shù)放在a所指的數(shù)組中,通過(guò)n返回這些數(shù)的個(gè)數(shù)即可。
26.
【解析】首先定義一個(gè)變量來(lái)表示其和s,通過(guò)n次循環(huán)求出n項(xiàng)的和,最后將所得到各項(xiàng)的和值返回給主函數(shù)。
27.intfun(char*s)2;{intn=0;3char*p;4:;for(p=s;*p!=,\\0';p丄+)if((*p≥’o’)&&(≤’9’))6n++;7returnn;8}要統(tǒng)計(jì)字符串中數(shù)字字符的個(gè)數(shù),首先應(yīng)定義變量n,并將其初始化為0,然后遍歷字符串,逐個(gè)判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII值在字符o和9的ASCII值之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個(gè)字符,直到字符串結(jié)束。28.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++)
29.
【解析】按照題目中要求,求除首、尾字符外,將其余7個(gè)字符按ASCⅡ碼值降序排列。首先需要判斷除首、尾字符之外,其余7個(gè)字符ASCⅡ碼值的大小,將不符合順序要求的字符互換。
30.
【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個(gè)元素。首先將最大值賦值為數(shù)組中的第一個(gè)元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標(biāo)賦值給變量d。
31.(1)錯(cuò)誤:intfun(intm)正確:doublefun(intm)(2)錯(cuò)誤:for(i=1;i<m;i++)正確:for(i=2;i<=m;i++(1)錯(cuò)誤:intfun(intm)正確:doublefun(intm)\r\n(2)錯(cuò)誤:for(i=1;i<m;i++)正確:for(i=2;i<=m;i++解析:錯(cuò)誤1:函數(shù)的返回值為實(shí)型數(shù),所以應(yīng)定義為double類型。錯(cuò)誤2:根據(jù)題目的公式,參加運(yùn)算的數(shù)應(yīng)從2到m,包括m。
32.(1)#include<stdio.h>(2)upfst(char*p)(1)#include<stdio.h>(2)upfst(char*p)解析:本題中函數(shù)的功能是將每個(gè)單詞的第一個(gè)字母改成大寫。該題的解題思路根據(jù)題干中“這里的‘單詞’是指由空格隔開(kāi)的字符串”可以歸納為主要是對(duì)字符串中空格字符的查找。
33.(1)錯(cuò)誤:if(p=='')正確:if(*p=='')(2)錯(cuò)誤:*p=toupper(*(p-1));正確:*(p-1)=toupper(*(p-1));(1)錯(cuò)誤:if(p=='')正確:if(*p=='')\r\n(2)錯(cuò)誤:*p=toupper(*(p-1));正確:*(p-1)=toupper(*(p-1));解析:本題比較簡(jiǎn)單,重點(diǎn)考查toupper函數(shù)的用法,該函數(shù)是將ch字符轉(zhuǎn)換成大寫字母,該題較多地應(yīng)用了字符串處理函數(shù)。
34.(1)doublefun(intn)(2)returnsum;(1)doublefun(intn)(2)returnsum;解析:本題中函數(shù)的功能是計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和sum。解題思路首先根據(jù)題干求得每一項(xiàng)的值,然后再計(jì)算數(shù)列前n項(xiàng)的平方根之和。
35.(1)錯(cuò)誤:charfun(chartt[])正確:char*fun(chartt[])(2)錯(cuò)誤:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正確:if((tt[i]>=‘a(chǎn)’)&&(tt[i]<=‘z’))(1)錯(cuò)誤:charfun(chartt[])正確:char*fun(chartt[])\r\n(2)錯(cuò)誤:if((tt[i]>=‘A’)&&(tt[i]<=‘Z’))正確:if((tt[i]>=‘a(chǎn)’)&&(tt[i]<=‘z’))解析:錯(cuò)誤1:函數(shù)的返回值是字符串的首地址,是指針類型,所以在函數(shù)名前要加'*'號(hào)。錯(cuò)誤2:題目要求將小寫字母改為大寫字母,所以if語(yǔ)句的判斷條件是小寫字母。
36.(1)錯(cuò)誤:fun(char*sintnum[5])正確:voidfun(char*sinthum[5])(2)錯(cuò)誤:num[i]=0;正確:num[k]=0;(3)錯(cuò)誤:switch(s)正確:switch(*s)(1)錯(cuò)誤:fun(char*s,intnum[5])正確:voidfun(char*s,inthum[5])\r\n(2)錯(cuò)誤:num[i]=0;正確:num[k]=0;\r\n(3)錯(cuò)誤:switch(s)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村唱大戲合同范本
- 個(gè)人房屋銷售合同范本
- 修路增加補(bǔ)充合同范本
- 全款 房屋 合同范本
- 2024年新媒體市場(chǎng)深度評(píng)估及行業(yè)投資前景咨詢報(bào)告
- 萬(wàn)事達(dá)合同范本
- 現(xiàn)代城市休閑商業(yè)街區(qū)的規(guī)劃策略
- 科技產(chǎn)品電商平臺(tái)的營(yíng)銷實(shí)戰(zhàn)經(jīng)驗(yàn)
- pvc地板清洗合同范本
- 農(nóng)技推廣基地服務(wù)合同范本
- 咖啡店合同咖啡店合作經(jīng)營(yíng)協(xié)議
- 2025年山東鋁業(yè)職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 全套電子課件:技能成就夢(mèng)想
- 2024年教育公共基礎(chǔ)知識(shí)筆記
- 2025年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 異構(gòu)數(shù)據(jù)融合技術(shù)-深度研究
- 北京市朝陽(yáng)區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 《銷售合同執(zhí)行》課件
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit4第2課時(shí)Speedup
- 山東2024年山東經(jīng)貿(mào)職業(yè)學(xué)院第二批招聘102人歷年參考題庫(kù)(頻考版)含答案解析
- 急性呼吸窘迫綜合征的護(hù)理課件(演示)
評(píng)論
0/150
提交評(píng)論