版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年吉林省松原市全國計算機等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.語句“int(*ptr)();”的含義是是指向函數(shù)的指針,該函數(shù)返回一
個int型數(shù)據(jù)。
2.下面程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{staticchara[]="language",b[]="program";
char*ptrl=a,*ptr2=b;
intk;
fbr(k=0;k<7;k++)
if(*(ptrl+k)=*(ptr2+k))
printf("%c",*(ptrl+k));}
3.以下程序運行后的輸出結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{char*p;t;
p=s+l;t=*s;
while(*p){*(p-1)=*p;p++;}
*(p-l尸t;
returns;
main()
{char*p,str[10]-'abcdergh";
p=ss(str);
printf("%s\n",p);
}
4.軟件危機出現(xiàn)于60年代末,為了解決軟件危機,人們提出了【】的
原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。
5.設(shè)i,j,k均為int型變量,則執(zhí)行完下面的for語句后,k的值為【】°
for(i=0,j=10;i<弓;i++,j—)k=i+j;
6.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以
a=21,b=55的形式輸出,請寫出完整的的輸出語句()。
7.設(shè)有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為。
8.若x和y都是buble型變量,且x的初值為3.0,y的初值為2.0,則
表達式pow(y,fabs(x))的值為【】。
9.下面程序執(zhí)行后輸出的結(jié)果是【】。
intm=13;
intfun(intx,inty)
{intm=3;
retum(x*y-m);
}
main()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
I
s
10.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。
其中,是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。
二、單選題(10題)
11.以下是if語句的基本形式:
if(表達式.語句
其中“表達式”()o
A.必須是邏輯表達式B.必須是關(guān)系表達式C.必須是邏輯表達式或關(guān)
系表達式D.可以是任意合法的表達式
12.以下程序執(zhí)行后sum的值是()。
A.15
B.14
C.不確定
D.Omain(){inti,sum;fbr(i=l;i<6;i++)sum+=i;printf("%d\n",
sum);}
13.若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值
分別為。和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和
front的值分別為()
A.2和4B.1和5C,4和2D.5和1
14.若有以下的說明和語句,則在執(zhí)行for語句后,,(*(pt+l)+2)表示的數(shù)
組元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][O];
A.t[2][0]B.t[2][2]C.t[l][2]D.t[2][l]
15.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是
()。
for(i=6;i>0;i—)
for(j=O;j<4;j++){...}
A.20B.24C.25D.30
16.以下程序執(zhí)行后的輸出結(jié)果是()。
fun(intx.inty)
Htaticinim=0.i=2:
i+=tn4-l;m=i4-x+y;rrtumm:
nuiin()intjsI.m=I.k;
k=fun(jtm);pnntf("疆d.”,k);
k=fun(j,m);printf(M%d\n0,k);
A.5,5
B.5,11
C.ll,11
D.ll,5
17.fun函數(shù)的功能是:通過鍵盤輸入給x所指的整型數(shù)組所有元素賦
值。在下劃線處應(yīng)填寫的是()。
#include<stdio.h>
#defineN5
voidfun(intx[N])
{intm;
for(m=N-t;m>=0;m-)scanf("%d",);
}
A.%&X[++m]B.&x[m+1]C.x+(m++)D.x+m
18.以下選項中,不能作為合法常量的是
A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0
19以下選項中不合法的標(biāo)識符是()。
A.&aB.FORC.printD.00
20.以下語句中,正確制作電子郵件鏈接的是()0
A.Ghref?"xxx@yyy”>
B.<mailhre£="xxx@YYY”>
C.<ahref:”mailto:xxxQYYY”>
D.<jnai1>xxx@yyymail)
三、程序設(shè)計題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)其功
能是移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)為0?
P(含P,P小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為1、2、3、4、5、6、7、8、9、10;P
的值為3。移動后,一維數(shù)組中的內(nèi)容應(yīng)為5、6、7、8、9、10、1、
2、3、4o
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun()的花括號
中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
(
)
main()
{inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
inti,p,n=15;
printf("Theoriginaldata
for(i=0;i<=""p="">
printf(“%3d”,a[i]);
printf("\n\nEnterp:");
scanf("%d",&p);
fun(a,p,n);
printf("\nThedataaftermoving:\n^^);
for(i=0;i<=""p="">
printf("%3d”,a[i]);
printf(4t\n\n^^);
22.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)ftm,其功能是:
除了字符串前導(dǎo)的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時不
得使用C語言提供的字符串函數(shù).
例如.字符串中的內(nèi)容為:"*???A.BC.DEF?...........................*",*除后,字符串中的內(nèi)容應(yīng)當(dāng)
是:".???ABCD£FG".
注袁:部分源程序在文件PR0G1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
tindude<rtdio.h>
voidftin(char?a)
main()
Ichars[81];voidNONO();
prinlf("Enterastring:\n");gete(s);
fun(?);
printf("Thestringafterdeleted:\n");puts(t);
NONO();
I
voidNONO()
1/?本曲我用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/
FILE?in,?out;
inti;chars[81]:
in=(open("in.dat"f"r")?
out=<bpen("out.<kt"."w");
far(i=0;i<10;i??)
I
fecanf(in/%8w,e);
Ma
^pnntf(outt%s\n,?);
I
Hoae(iD);
fclMe(ou0$
23.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fim,其功能是:刪
除字符串中所有的*號。編寫函
數(shù)時,不得使用c語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******刪除*后字符串
中的內(nèi)容應(yīng)當(dāng)
是:ABCDEFGo
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
的nclutk<ntdio.h>
voidfun(char?.)
mdin()
Ichars[8lJ;
voidNONO();
print""Enterastring;\nH);geu(a)?
fun(*);
即nt£("Thestringafterdelrncd:\nw);pul?(M);
NONO():
2dNONO(>
本函數(shù)用于打開文件,除人數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)期,關(guān)閉文件“?/
F1I£?in.?out;
inti;rhar?[8|];
in=fopm("in.dal*,"rM):
out=(opcn(*out.dal'*wM);
for(i=();i<10;i*f)|
fccanf(in."%L.?);
fnn(s);
fpnntf(out?"%八n",A);
Glosc(in);
fcloAt^out)?
24.請編寫一個函數(shù)proc,它的功能是:求出1?m(含m)能被7或11
整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個數(shù)。
例如,若傳給m的值為70,則程序輸出:
7111421222833354244495556636670
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填人所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidproc(intm,int*a,int*n)
{
)
voidmain
(
intarr[N],n,k;
system("CLS");
proc(70,arr,&n);
for(k=0;k<n;k++)
if((k+l)%20==0)//每行輸出20個數(shù)
{printf("%4d",arr[k]);
printf("\n");
)
else
printf("%4d",arr[k]);
printf("\n");
)
25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)
其功能是將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(4t\n\nAfterchanging,thestring\n%s”,tt);
fun(tt);
printf(u\nbecomes\n%s”,tt);
)
26.編寫函數(shù)proc(),它的功能是求m以內(nèi)(不包括m)同時能被5與11
整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。
例如,m為100時,函數(shù)值應(yīng)為s=7.416198c
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc。的花括
號中填入所編寫的若干語句。
試題程序:
4includeVstdlib.h>
與includeVconio.h>
爺include<Cmath.h>
#includeVstdiah>
doubleproc(intn)
(
)
voidmain(>
(
systcmC"CLS")i
printfC"s"%f\n*.proc(100))i
}
27.
函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時ASCII值為奇數(shù)
的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符C的
ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符1的
ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依
此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是"BDF12345"o
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號
中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[D
(
}
main()
{.
chars[100],t[100];
printf(°\nPleaseenterstringS:0);
scanf(K%s\s);
fun(s.t);
printfresultis:%s\nM,t);
28.請編一個函數(shù)voidproc(intttEM][N],intpp[N]),tt指向一個M行
N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指
的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]。intpp[N])
}
voidmain
{
intstr[M][N]={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[N],i,j,k;
system("CLS");
printf("Theriginaldatais:\n");
for(i=0;i++)
(
for(j=O;j<N;j++)
printf("%6d",str[i][j]);
printf("\n");
)
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printf("n");}
29.
編寫函數(shù)proc,它的功能是:計算和輸出下列級數(shù)的和。S=1/(12)
+1/(23)+...+1/(n(n+1))例如,當(dāng)n=20時,函數(shù)值為0.952381。
注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的
任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試
題程序:
smdudeVmdhb*
UinciiMicVcocuo.h2>
sinclude<widxxb>
doubleproHinin>
voidBuifn<>
"Cl-S*)i
pr?ni?*Kf\n*?proc(IO>),
30.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c在此程序中,編寫函數(shù)
intfun(),其功能是求出小于或等于lim的所有素數(shù),將其存放在aa數(shù)
組中,并返回所求出的素數(shù)的個數(shù)。
注意:部分源程序在文件progl.c中。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
1#include<conio.h>
2#include<stdio.h>
3#include<stdlib.h>
4#defineMAX100
5intfun(intlim,intaa[MAX])
6{
7
8)
9voidmain()
10{
11FILE*wf;
12intlimit,i,sum;
13intaa[MAX];
14system("CLS");
15printf("輸入一個整數(shù):");
16scanf("%d",&limit);
17sum=fun(limit,aa);
18for(i=0;i<sum;i++)
19{
20if(i%10==0&&i!=0)/*每行輸出10個數(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個數(shù)*/
30fprintf(wf,"\n");
31fprintf(wf,"%5d",aa[i]);
32)
33fclose(wf);
34/******************/
35)
四、2.程序修改題(10題)
31.給定程序M0D11.C中函數(shù)fun的功能是:從低位開始取出長整型
變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,
低位仍在低位。例如:當(dāng)s中的數(shù)為2736598時,t中的數(shù)為:2358。
#include<conio.h>
#include<stdio.h>
/************************/
voidfiin(longs,longt)
{longsl=10;
*t=S%10;
while(s>0)
{s=s/100;
*t=S%10*sl+*t;
/************fOUlTtd************/
sl=sl*100;
}
}
main()
{longs,t;
clrscr();
printf("\nPleaseenters:");
scanf("%ld",&s);
fun(s,&t);
printfi("Theresultis:%ld\n",t);
32.下列給定程序中,函數(shù)fun()的功能是求出數(shù)組中最小數(shù)和次最小數(shù)
并把最小數(shù)和a[0]中的數(shù)對調(diào),次最小數(shù)和a[l]中的數(shù)對調(diào)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#defineN20
voidfun(int*a,intn)
inti,m,t,k;
/*************f^)und**************j
for(i=O;i<n;i++)
m==i;
for(k=i;k<n;k++)
if(a[k]<a[m])
/***************************!
k=m;
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
main()
(
intx,b[N]={ll,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);
fbr(i=O;i<n;i++)
printf("%d",b[i]);
printf("\n");
33.下列給定程序中,函數(shù)fun()的功能是讀入一個字符串(長度<20),
將該字符串中的所有字符按ASCII碼降序排序后輸出。
例如:輸入dafhc,則應(yīng)輸出hfdca。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,敢不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/***************************/
intfiin(chart[])
(
charc;
inti,j;
fbr(i=O;i<strlen(t)-1;i++)
for(j=i+l;i<strlen(t);j++)
if(t[i]<t[j])
c=t[j];
/*************found**************/
t[i]=t[i++];
t[i]=c;
}
}
main()
{
chars[81];
clrscr();
printff'\nPleaseenteracharacter
string:");
gets(s);
printfi("\n\nBefbresorting:\n%S",s);
fun(s);
printf("\nAftersortingdecendingly:\n
%s",s);
34.下列給定程序中,函數(shù)ftm()的功能是:計算
S=f(-n)+f(-n+l)+...+f(O)+f⑴+f(2)+...f(n)的值。
例如,當(dāng)n為5時,函數(shù)值應(yīng)為10.407143。f(x)函數(shù)定義如下:
r(x+iy(x-2)xX)
f(x)0或x=2
L(x-iy(x-2)x<0
請改正程序中的錯誤,使它能得山正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math,h>
/********不***不*f^)und***不***********I
f(doublex)
if(x==0.0||x==2.0)
return0.0;
elseif(x<0.0)
return(x-1)/(x-2);
else
return(x+1)/(x-2);
)
doublefun(intn)
(
inti;doubles=0.0,y;
for(i=-n;i<=n;i++)
{y=f(1.0*i);s+=y;}
/**************found**************!
returns
)
main()
{clrscr();
printf("%f\n",fun(5));
35.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所
指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其
插在申的最后。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
/***************************/
voidfun(charstr,charch)
{while(*str&&*str!=ch)str++;
/*************nd**************/
if(*str=ch)
{str[0]=ch;
/*************f^)und**************I
str[l]-O';
}
}
main()
{chars[81],c;
clrscr();
printf("\nPleaseenterastrzng:");
gets(s);
printf("\nPleaseenterthecharacterto
search:");
c=getchar();
fun(s,c);
printf("\nTheresultis%s\n",s);
36.下列給定程序中,函數(shù)ftm()的功能是:給定n個實數(shù),輸出平均值,
并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。例如,n=8時,輸入193.199,
195.673,195.757,196.051,196.092,196.596,196.579,196.763,所
得平均值為195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為5。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(floatx[],intn)
/*********************************/
ihtj,c=0;floatxa=0.0;
for(j=0;j<n;.j++)
xa+=x[j]/n;
printf("ave=%f\n",xa);
for(j=O;j<n;j++)
if(x[j]>=xa)
C++;
retumc;
main()
{floatx[100]={193.199,195.673,195.757,
196.051,196,092,196.596,
196.579,196.763};
clrscr();
printf("%d\n",fun(x,8));
37.下列給定程序中,函數(shù)fun。的功能是:輸出M行N列整數(shù)方陣,
然后求兩條對角線上的各元素之和,返回此和數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM5
ihtfun(intn,intxx[][])
{inti,j,sum=0;
printf("\nThe%dx%dmatrix:\n",M,M);
for(i=O;i<M;i++)
{for(j=0;j<M;j++)
printf("%4f',xx[i][j]);
printf("\n");
fdr(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-l];
return(sum);
main()
{intaa[M][M]={{l,2,3,4,5},{4,3,2,l,0),
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf("\nThesumofallelementson2
diagnalsis%d",fun(M,aa));
38.下列給定程序中,函數(shù)fun()的功能是:計算s所指字符串中含有t
所指字符串的數(shù)目,并作為函數(shù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#defineN80
intfun(char*s,char*t)
{intn;
char*p,*r;
n=0;
while(*s)
{P=s;
/****************************I
r=P;
while(*r)
if{*r==*p){r++;p++;}
elsebreak;
/**************d***************/
if(*r=O)
n++;
s++;
}
returnn;
}
main()
{chara[N],b[N];intm;
clrscr();
printf("\nPleaseenterstringa:");
gets(a);
printf("\nPleaseentersubstringb:");
gets(b);
m=fun{a,b);
printf("\nTheresultis:m=%d\n",m);
39.給定程序MOD11.C中函數(shù)fun的功能是:統(tǒng)計字符串中各元音字
母(即:A、E、I、0、U)的個數(shù)。注意:字母不分大、小寫。
例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0o
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
*include<stdio.h>
2voidfun(char*srintnum[5])
3{intk,i-5;
4for(k-0;k<i;k++)
5/…?……found………?/
6num[i)?0;
7for(;*s;s++)
8{i?-1;
9/???????肯??found**********I
10switch(s)
11(case,a*:case1A1:{i?0;break;}
12case"e1:case,E,:(i-l;break;}
13case,i1:case,I1:(i-2;break;}
14case'o':case,01:(i-3;break;}
15case?u1:case?U1:(i=4/break;}
16)
17if(i>-0)
18++;
19
20
21main()
22{charsi[81];intnuml[5]ri;
23printf(w\nPleaseenterastring:
n);gets(si);
24fun(si,numl);
25for(i-0;i<5;i++)printf(R%d
numl(i]);printf("\n");
26
40.下列給定程序中,函數(shù)fim()的功能是:先從鍵盤上輸入一個3行3
列的矩陣的各個元素的值,然后輸出主對角線元素之和。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
intfun()
inta[3][3],sum;
inti,j;
/*************f^)und**************/
sum=l;
fbr(i=0;i<3;i++)
{for(j=O;j<3;j++)
/***************************/
scanf("%d",a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("Sum=%d\n",sum);
main()
}
五、程序改錯題(2題)
41.下列給定程序中,函數(shù)proc()的功能是:從低位開始取出長整型變
量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當(dāng)s中的數(shù)
為123456789時,t中的數(shù)為13579。請修改程序中的錯誤,使它能得到
正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得
更改程序的結(jié)構(gòu)。試題程序:
*include<s(dlib.h>
#include<stdio.h>
#includeVconio.h>
//????found????
intproc(longj)?long■t>
(
long■=10j
?I-s%IOi
whilc(s>0)
(
//????found???*
a。5%1001
?i=s%10?§1+?n
si-sl?10:
?
)
voidmnin<>
(
longli
5ystem("CI^Sw)?
printf("\nPleaseenter")i
scanf("%Id".&s01
proc(??&<)>
printfC"Theresultis:%ld\n
42.
下列給定程序中,函數(shù)proc0的功能是:將m(l<m<10)個字符串連
接起來,組成一個新串,放入pt所指字符串中,例如,把2個字符串
abc、CD串聯(lián)起來,結(jié)果是abcCD。請修改程序中的錯誤,使它能得
出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也
不得更改程序的結(jié)構(gòu)。試題程序:
StncluckVM&ib.b>
的includeVeiledK>
include<struic.h>
0include<ntdio.h>
〃????found????
Mtproc(char?ir{]£IO].mtfn.chur?plJ
Iintk.q.i.L。!
Ior《k~?)
j+,qi
,?f<i,OiiVq-?+)
ff????Io?m4????
p<O]?Oi
1
vo?dmain(>
inim.hi
char>trC10][10j?pC120Ti
?ywieoiC*CLS*>i
printfC*\nPlca?centertB.?).
?canR?%d??&m>itct?(?tr£01)i
pru>d<*\nPk??ccmerMdstringAn*??)
for(h*0ih<niili4-4-)fetii(?<r{ki])i
proc<air?m?p)s
printfC^XnTbcrvwhK?\na?p>i
六、操作題(2題)
43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如
果這個數(shù)是負數(shù),則取它的絕對值,并顯示出來。例如,輸入>123456,
結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函
數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達式或語
句。試題程序:
PoicludeV-tdLh
9inrludrVMdio.h>
HinciudrVccmio.h?>
voidm*in<)
loeginiBum
>yBtctn<*CLS*)i
printf(a£i>icrtbcd???.W)s
?canf((l]I?
P'fintfC*???theabeolutrnli?r???\B>>i
il(nym<CO)
m
pnnt((*\n\nM)i
pnmfl13】>?
44.以下函數(shù)的功能是刪除字符串s中的所有數(shù)字字符。請?zhí)羁铡?/p>
voiddele(char*s)
(
intn=0,i;
for(i=0,s[i];i++)
if([I)
s[n++]=s[i];
s[n]=[];
參考答案
l.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型
標(biāo)識符(*指針變量名X)。注:“類型標(biāo)識符”為函數(shù)返回值的類型。
2.gaga解析:用字符指針處理字符串,首先要使指針指向這個字符串,
即題中的ptrl=a和ptr2=b。然后就是通過指針的移動可以弓I用到字符串
中的每一個字符。題中的*(ptrl+k)是使指針ptrl向后移動k個位置,然
后取出指向的字符。注意:用字符數(shù)組作為字符串和用指針指向的一個
字符串之間的區(qū)別。
3.bcdefghabcdefgha解析在本題定義的ss()函數(shù)中首先定義了一個指針
P和一個字符變量t,然后讓p指向參數(shù)指針s的下一個位置s+1,并讓
t保存S位置的字符。然后使用一個while循環(huán)將p指向的內(nèi)容賦給它前
面一個位置,即將參數(shù)s所指的字符串從第2個字符開始整體往前移動
一位。循環(huán)結(jié)束時,P指向原s串的結(jié)束標(biāo)志處,所以讓*(p-l)=t;即是將
原s串的第1個字符復(fù)制到s串的最后一個位置。整個函數(shù)實現(xiàn)的是讓
一個字符串循環(huán)左移一位。故主函數(shù)中最后輸出的字符串是‘bcdefgha,。
4.軟件工程學(xué)軟件工程學(xué)
5.1010解析:該for語句以i為0,j為10作為初始值,循環(huán)條件是i<
=j,每次循環(huán)后i增l、j減1,循環(huán)體是將i與j的和賦給k,這樣變量
k將保存的是最后一次賦給它的值。一次循環(huán)后i為1、j為9,二次循
環(huán)后i為2、j為8,........五次循環(huán)后i為5、j為5,第六次循環(huán),將
i與j的和10賦給k后,i為6、j為4,循環(huán)結(jié)束,k值為10。
6.printf("a=%db=%d"aB);printf("a=%d,b=%d”,a,B);解析:printf函數(shù)的一
般格式為:“printf(格式控制,輸出表列廣。
7.'\0"\\0'解析本題涉及字符數(shù)組和指針的兩個知識點①在C語言中,
字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標(biāo)識符'\\0'所
以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指向
str[5],*(pti+5)是引用str[5]的值,即NO;
8.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow
功能是計算X的y次方的值,計算結(jié)果同樣為double型。所以本題表達
式相當(dāng)于2.0的3.0次方,結(jié)果為8.000000。
9.22解析:本題變量m既是外部變量(值是13),又是fiin函數(shù)的局部
變量(值為3)0函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,
fim(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。
10.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模
式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;
概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)
據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。
11.D
解析:本題主要考查關(guān)于if語句的說明,if后面圓括號中的表達式,可
是任意合法的C語言表達式(如:邏輯表達式、關(guān)系表達式、算術(shù)表
達式、賦值表達式等),也可以是任意類型的數(shù)據(jù)(如:整型、實
型、字符型、指針型等。)
12.C解析:C語言中,如果對定義的變量沒有賦初值,那么在后面使用
時,變量的值是不確定的。所以,本程序中,沒有對sum賦初值,它的
值不確定。在執(zhí)行了for循環(huán)語句后,sum的值也不確定的,所以,4個
選項中選項C符合題意。
13.A
14.C
從for循環(huán)可知pt是指向行的首地址的指針變量,因此由指針的表示
方法可知:*(*(pt+l)+2)=pt[l][2]=t[l][2]o
15.B
本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一*個i,內(nèi)層j的
循環(huán)都要使j?0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J
仍然要從0?3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條
for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4
=24次。
16.B
main函數(shù)中的局部變量m與fun函數(shù)中的靜態(tài)局部變量m同名,因此
main訪問的是其局部變量m,所以main中的兩次函數(shù)調(diào)用,實際上
都是調(diào)用fun(l,1)。
第一次調(diào)用時,i=i+(m+l)=2+(0+l)=3,m=i+x+y=3+1+1=5o
第二次調(diào)用時,i=i+(m+l)=3+(5+l)=9,m=i+x+y=9+1+1=110
所以程序輸出5,11。
17.D
D【知識點】宏定義與數(shù)組地址的考察【解析】數(shù)組名本身就是地址,
所以不需要在用&符號。C選項不能對所有元素賦值而是反復(fù)再給一個
數(shù)值賦值且是死循環(huán)。
18.B解析:C語言的語法規(guī)定,字母e(E)之前必須有數(shù)字,且e(E)后面
的指數(shù)必須是整數(shù),而選項B)中,e(E)后面的指數(shù)是小數(shù),所以不合法。
19.AC語言的標(biāo)識符由字母、數(shù)字、下劃線組成,且第1個字符必須是
字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識符。因為C語言中區(qū)分大小
寫,所以B選項中的“FOR”可以作為標(biāo)識符來用。A選項中含有非法字
符“&”,所以其不合法。故本題答案為A選項。
20.C
21.voidfun(int*w,intp,intn)
{intX,j,ch;
for(x=0;x<=p;x++)
{ch=w[0];
for(j=l;j/*通過for循環(huán)語句,將p+1?n-1(含n-1)之間的數(shù)組
元素依次向前移動p+1個存儲單元*/
(
w[j-l]=w[j];
)
w[n-l]=ch;/*將下標(biāo)為0~p的數(shù)組元素逐一賦給數(shù)組w[n-l]*/
)
)
本題要求把下標(biāo)為0?p(含p,p小于等于n-l)的數(shù)組元素平移到數(shù)組的
最后。可以根據(jù)輸入的P值,通過for循環(huán)語句,將p+1?n-l(含n-l)之
間的數(shù)組元素依次向前移動P+1個存儲單元,即同時將下
標(biāo)為。?P的數(shù)組元素逐一賦給數(shù)組w[n-l],也就是通過語句w[n-l]=ch;
來實現(xiàn)此操作。
22.
程序設(shè)計題解析:
【考點分析】
本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件
表達式;字符串結(jié)束標(biāo)識、0,
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他+號全部刪
除。
【解答本題】
(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字
符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字
符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符,、0\
【解題寶典】
要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法。
可以將非指定字符保留在原串,即將需要保留的字符從原串的起始位
置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的
字符。
23.
【考點分析】
要刪除字符串中所有*號需要用循環(huán)語句遍歷字符串,用
判斷語句判斷字符是否為*號,由此可以決定該程序應(yīng)使用循
環(huán)判斷結(jié)構(gòu)。
【解題思路】
24.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=l;i<=m;i++)//進行m次循環(huán)
\nif(i%7==0||i%ll==0)//能被7或11整除的所有整數(shù)
\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中
\n*n=j;//返回這些數(shù)的個數(shù)
\n}
\n【解析】本題需要先判斷1?m每一個整數(shù)能否被7或11整除,然
后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個數(shù)通過
形參n返回主函數(shù)。\n
25.voidfun(char*ss)
(
inti;
fdr(i=O;ss[i]!=<\0,;i++)
/*將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母*/
if(i%2=l&&ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
)
將指定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫字母,首先需要判斷奇數(shù)位
置,再判斷該位置字符是不是小寫字母,如果是小寫字母,則將小寫字
母轉(zhuǎn)換為大寫字母。字母大小寫轉(zhuǎn)換操作中,只要將小寫字母的ASCII
值減去32即可轉(zhuǎn)換為大寫字母。
26.
【解析1按照題目中要求求m以內(nèi)(不包括m)同時能被5與11整除的
所有自然數(shù)之和的平方根s,需要判斷m以內(nèi)的所有整數(shù)是否能同時
被5與11整除,首先求出同時能被5與
11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)
當(dāng)中。
27.
【答案】
voidfun(char*s,chart[])
(“
inti,j=0;
for{i=0;i<strlen(s);i++)
t[)++>s[?l;
=0;
1
【解析】
使用循環(huán)遍歷字符串,將下標(biāo)和ASCII碼值滿足要求的元素賦給新的字符串°
28.voidproc(inttt[M][N],intpp[N])
inti,j,max;
for(i=0;i<M;i++)//i控制行的下標(biāo)
(
max=tt[i][c];//max存放每行中最大的數(shù)
for(j=O;j<N;j++)
if(tt[i][j]>max)
max=tt[i][j];
pp[i]=max;//把大的數(shù)放到PP數(shù)組中,經(jīng)過i來控制pp數(shù)組的下
標(biāo)
)
)
【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放
入PP所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,找出每
一行中的最大元素,放入一維數(shù)組pp中,返回到主函數(shù)當(dāng)中。
29.
【解析】首先定義一個變量來表示其和s,通過n次循環(huán)求出n項的和,
最后將所得到各項的和值返回給主函數(shù)。
30.1intfun(intlim,intaa[MAX])
2{
3inti,j,k=0;
4for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素數(shù)*/
5{for(j=2;j<i;j++)
6if(i%j==0)break;
7if(j>=i)
8aa[k++]=i;/*將求出的素數(shù)放入數(shù)組aa中*/
9)
lOretumk;/*返回所求出的素數(shù)的個數(shù)*/
11)
<i;jp++)<>如果一個數(shù)是合數(shù),那么它的最小質(zhì)因數(shù)肯定小于等于它的
平方根。本程序使用for循環(huán)語句查找小于lim的所有數(shù),使用內(nèi)嵌的
循環(huán)判斷語句判斷該數(shù)是否為素數(shù)。在做這道題時,需要重點掌握素
數(shù)的判定方法:for(j=2;j<sqrt(i);j++)if(i%j=0)break;...</i;jp++)<>
31.voidfiin(longslongt)改為voidfun(longslong*t)sl=sl*100;改為
sl=sl*10;voidfun(longs,longt)改為voidfun(longs,long*t)\r\n
sl=sl*100;改為sl=sl*10;解析:從fun函數(shù)可以看出,變量t應(yīng)該
是指針變量。因此,在形參表列中,t之前應(yīng)該加“*“;從s中取出奇數(shù)
位構(gòu)建新數(shù)是逐位進行,而不是跳位的。因此,S1應(yīng)該乘以10。
32.(1)錯誤:fbr(i=O;i<n;i++)正確:for(i=O;i<2;i++)(2)錯誤:
k=m;正確:m=k;(1)錯誤:for(i=O;i<n;i++)正確:for(i=0;i<
2;i++)\r\n(2)錯誤:k=m;正確:m=k;解析:錯誤1:由于題目要
求將最小數(shù)和次最小數(shù)分別與a[0]和a[l]中的數(shù)對調(diào),因此這層循環(huán)只
需循環(huán)兩次。錯誤2:賦值語句的執(zhí)行方向是從右向左,即把右邊的值
賦給左邊的變量。
33.(1)錯誤:intfun(chart[])正確:voidfun(chart[])(2)錯誤:t[j]=t[i++];
正確:;(1)錯誤:intfun(chart[])正確:voidfim(chart[])VW(2)錯
誤:t[j]=t[i++];正確:tD>t[i];解析:錯誤1:該函數(shù)只是對一個字
符串中的元素進行比較大小的操作,并沒有具體的返回值,因此,函數(shù)
的返回值類型應(yīng)為void。錯誤2:本題的思路是利用選擇法對數(shù)組元素
進行比較。所謂選擇法,是依次用當(dāng)前取得的元素和它后面的元素進行
比較,在第一個元素和它后面的元素
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 21199-2024激光打印機用干式顯影劑
- 公路種樹施工合同范例
- 咨詢服務(wù)合同范例
- 工程肢解合同范例
- 公司搬遷服務(wù)合同范例
- 天府新區(qū)信息職業(yè)學(xué)院《預(yù)算管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 天府新區(qū)信息職業(yè)學(xué)院《太陽能電站運行與維護》2023-2024學(xué)年第一學(xué)期期末試卷
- 生態(tài)海堤施工方案
- 美食烹飪技能的培養(yǎng)與實踐
- 房屋安裝水槽合同范例
- 醫(yī)生職業(yè)生涯訪談報告
- 數(shù)字化醫(yī)院建設(shè)方案的信息系統(tǒng)整合與優(yōu)化
- 2024年上海市徐匯區(qū)高一上學(xué)期期末考試英語試卷試題(答案詳解)
- 辦公自動化附有答案
- 品質(zhì)工程師年終總結(jié)報告
- 人工智能訓(xùn)練師的工作內(nèi)容
- 開展老人防詐騙知識講座
- 汕頭大學(xué)匯報模板
- 《重慶森林》都市的孤獨
- 廣西壯族自治區(qū)河池市都安瑤族自治縣2023-2024學(xué)年六年級上學(xué)期期末英語試題
- 礦山行業(yè)創(chuàng)新與科技進步
評論
0/150
提交評論