




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022年湖南省益陽市全國計算機等級考試
C語言程序設計真題(含答案)
學校:班級:姓名:考號:
一、2.填空題(10題)
1.以下程序的輸出結果是()。#include<stdio.h>voidmain(){intf,
fl,fl,i;fl=0;f2=l;printf("%d%d",fl,f2);for(i=3;i<=5;i++)
{f=-fl+f2,printf("%d",f);f2=fl;fl=f;}printf("\n");}
2.數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、
數據結構、數據流和處理過程。
3.以下程序運行后的輸出結果是【】。
main()
{inta[4][4]={{l,2,3,4),{5,6,7.8},{11,12,13.14},{15,
16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
(
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
)
printf("%d\n",s);
)
4.函數voidfun(float*sn,intn)的功能是:根據以下公式計算s,計算
結果通過形參指針sn傳回…通過形參傳入,n的值大于或等于0。請
填空。
s=§
42xi+1
voidfun(float*sn,intn)
{floats=0.0,w,f=-1.0;
inti;
for(i=0;i<=n;i++)
{f=[】*f;
w=f/(2*i+l);
s+=w;
)
【】=S;
}
5.用十六進制給存儲器中的字節地址進行編號,其地址編號從0000到
FFFF,則該存儲器容量是【】。
6.以下程序運行后輸出結果是【】。
#include<stdio,h>
main()
{inta,b,c;
a=10;b:20;c=(a%b<1)II(a/b>1);
printf("%d%d%d\n",a,b,c);
)
7.以下程序運行后的輸出結果是【】。
#include<stdio.h>
fun(intx)
{if(x/2>0)fun(x/2);
printf("%d",x);
)
main()
{fun(6);}
8.數據庫設計分為以下6個設計階段:需求分析階段-------邏輯設
計階段、物理設計階段、實施階段、運行和維護階段。
9.下列程序的輸出結果是____o
main()
{chara[]="ABCDEFG";
char*cp=&a[7];
while(—cp>&a[0])putchar(*cp);
)
10.在關系數據庫中把數據表示成二維表,每一個二維表稱為【】。
二、單選題(10題)
11.設有定義“Charp[]={T,2,3},*q=p;",以下不能計算出一個char
型數據所占字節數的表達式是()。
A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])
12.二叉樹的第三層最少有個結點。
A.OB.lC.2D.3
13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正
確判斷出kk中的值為大寫字母的表達式是
A.kk>='A'&&kk<='Z'
B.!(kk>='A'||kk<='Z')
C.(kk+32)>=W&&(kk+32)<=2
D.isalpha(kk)&&(kk<91)
14.折半查找法的查找速度一定比順序查找法快()。
A.正確B.錯誤
15.程序運行后的輸出結果是()。
]社inchide<stdio.h>
mainO
{
intb[3][3]={0Il,2s0;ls2J0sL2},i,j,t=h
fbr(i=O;i<3;i++)
fbr(j=i;j<=i;j++)t+=b[i][b[j][i]];
printfr^6dn",t);
}
A.3B.4C.1D.9
16.在多媒體計算機系統中,不能用以存儲多媒體信息的是
A.光纜B.軟盤C.硬盤D.光盤
17.在下面棧的基本運算中,不是加工型運算的是
A.初始化B.進棧C.退棧D.判棧空
18.若有以下定義和語句:
chars[10]="abcd!%*s2="\nl23\\";
Drintf("%d%d\n",strlen(sl),strlen(s2));
則輸出結果是()。
A.55B.105C.107D.58
19.以下敘述中正確的是()。
A.C程序中注釋部分可以出現在程序中任意合適的地方
B.花括號"(“和只能作為函數體的定界符
C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名
D.分號是C語句之間的分隔符,不是語句的一部分
20.
(40)已知一個文件中存放若干工人檔案記錄,其數據結構如下:
structa.?
{charnumber[100];
intage;
floatp[6];);
定義一個數組:structanumber[10];
假定文件己正確打開,不能正確地從文件中讀入10名工人數據到數組b中的是()o
A)fread(b,sizeofl[structa),10,fp);B)fbr(i=0;i<10;i-H-)
fread(b[i],sizeof(structa),l,fp);
C)fbr(i=0;i<10;i+4-)D)fbr(i=O;i<5;i-?-=2)
frcad(b+i,sizcof{structa),l,fp);fread(b+i9sezeof(stnicta),2,fp);
三、程序設計題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數fun(),
其功能是找出一維整型數組元素中最大的值及其所在的下標,并通過形
參傳回。數組元素中的值已在主函數中賦予。
主函數中x是數組名,n表示x中的元素個數,max存放最大值,
index存放最大值所在元素的下標。
注意:部分源程序給出如下。
請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
(
}
voidmain()
(
inti,x[20],max,index,n=10;
srand((unsigned)time(NULL));
for(i=0;i<=n;i++)
(
x[i]=rand()%50;
printfC4%4d”,x[i]);
/*輸出一個隨機數組*/
printf(n\nH);
fun(xfnf&max,&index);
printf("Max=%5d,Index=%4d\n”,max,index);
)
22.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數
fun(),它的功能是求小于形參n同時能被3與7整除的所有自然數之
和的平方根,并將其作為函數值返回。例如,若n為1000時,程序輸
出應為s=153.909064。注意:部分源程序在文件progl.c中。請勿改動
主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填
入你編寫的若干語句。試題程序:
1#include<math.h>
2tinclude<stdio.h>
3doublefun(intn)
4{
5
靠}
7main()/*主函數?/
8{voidNONO();
w
9printf("s?%f\nrfun(1000));
10NONO();
篡)
12voidNONO()
13{/*本函數用于打開文件、輸入數據、調
用函數、榆出數據及關閉文件*/
FILE*fp,*wf;
inti,n;
doubles;
fp■fopen(win.datn,wrw);
18wf=fopen(Mout.datn,Hww);
19for(i=0;i<10;i++){
20fscanf(fpr,?%d",&n);
21s=fun(n);
22fprintf(wf,n%f\n",s);
23)
24fclose(fp);
25fclose(wf);
26
23.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.co在此程序中,編寫函數fun(),
其功能是將s所指字符串中除了下標為奇數同時ASCII值也為奇數的字
符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個新字
符串存放在t所指的數組中。
例如,若s所指字符串的內容為“ABCDEFG12345",其中字符A的
ASCII值為奇數,但所在元素的下標為偶數,因此需要刪除;而字符1
的ASCII值為奇數,所在數組中的下標也為奇數,因此不應當刪除,
其他依此類推。最后t所指數組中的內容應為“135”。
注意:部分源程序給出如下。
請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
(
)
main()
{
chars[100],t[100];
printf("\nPleaseenterstrings:");
scanfs);
fun(s,t);
printf("\nTheresultis:%
)
24.請編寫函數proc(),其功能是:計算并輸出下列多項式值。S=(1+1
/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,
則輸出為S=3.5977400n的值要求大于1但不大于100。注意:部分
源程序給出如下。請勿改動函數main()和其他函數中的任何內容,
僅在函數proc()的花括號中填入所編寫的若干語句。試題程序:
夕includehj>
doubleproHintn)
iniBI
double
prmifcnt
?mproc<n)t
prmtfC**>)>
25.請編寫一個函數proc,它的功能是:求出1?m(含m)能被7或11
整除的所有整數放在數組a中,通過n返回這些數的個數。
例如,若傳給m的值為70,則程序輸出:
7111421222833354244495556636670
注意:部分源程序給出如下。
請勿改動main函數和其他函數中的任何內容,僅在函數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個數
{printf("%4d",arr[k]);
printf("\n");
)
else
printf("%4d",arr[k]);
printf("\n");
)
26.請編寫函數proc,該函數的功能是:將M行N列的二維數組中的
數據,按行的順序依次放到一維數組中,一維數組中數據的個數存放
在形參n所指的存儲單元中。
例如,若二維數組中的數據為
13233343
14243444
15253545
則一維數組中的內容應該是132333431424344415253545。
注意:部分源程序給出如下。
請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
voidproc(int(*s)[103,int*b,int*n,intrain,intnn)
(
)
voidmain
{
intarr[10][10]={{33,33,33,33),{44,44,44,44},
{55,55,55,55}),i,j;
inta[100]={o),n=o;
printf("Thematrix:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf("%3d",arr[i][j]):
printf("\n");
)
proc(arr,a,&n,3,4):
printf("TheAarray:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]):
printf("\n\n");
)
27.
請編寫一個函數voidproc(chara[],charbE3,intn),其功能是:刪除
一個字符串中指定下標的字符。其中,a指向原字符串,刪除后的字符
串存放在b所指的數組中,n中存放指定的下標。例如,輸入一個字符
串student,然后輸入5,則調用該函數后的結果為studet。注意:部分
源程序給出如下。請勿改動main()函數和其他函數中的任何內容,
僅在函數proc的花括號中填入所編寫的若干語句。試題程序:
#includeVstdlib.h>
#include<stdio.h>
#include<conio.h>
5defineN20
voidproc(chara[].charb[].intn)
voidmain()
《
charstr![N].str2[Nji
intn?
xystemC**C1-S*,)i
printf("Enterthesiring:\n")i
gets(strl)t
printf(*Enterthepositionofthestringdeleted:
*>I
scan!&n>i
proc(strl??1r2an)i
print!("Thenewstringis*%*\n".sir2>i
28.請編一個函數fun(char*str),該函數的功能是把字符串中的內容逆
置。例如,字符串中原有的字符串為asdfg,則調用該函數后,串中的
內容為gfdsa。請勿改動main()函數和其他函數中的任何內容,僅在
函數proc()的花括號中填入所編寫的若干語句。試題程序:
?Mtcludc<Mmg.
.MKUKWh2>
?ifirlvdr<M4KXk>
■Mm*NIM
voidItmCcliar?MY>
NMMI<)
HMM?N].
FILE?<nrti
pciiith*EIN?T?Mrwg??,.
pnatlc*TWongwoi3vwg..*>j
,i“s
pmn{<-TWvtracafwrwAf.%*>g
pvt?<a)a
?ircpy<a.*W?IRMB?!->a
l?M<a>i
Out■*fopettl4atW)i
(pciatf(ovi?0M?*?a)s
29.
請編寫一個函數,用來刪除字符串中的所有空格。
例如,輸入asdafaaz67,則輸出為asdafaaz67o
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括
號中填入你編寫的若干語句。
試題程序:
/iwlude<stdiA.h>
#include<ctype.h>
#hiclude<conio.h>
vodfun(char*str)
}(
main。
fcharstr[81];
charMsgf]=°Inputastring:T,;
intn;
printf(Msg);gftt5(str);puts(atr);fun(str);
printfC****str:%&\nM,str);
I,
30.請編一個函數intfun(inta),它的功能是:判斷a是否是素數,若a是
素數,返回1;若不是素數,返回0°A的值由主函數從鍵盤讀入。
四、2.程序修改題(10題)
31.下列給定程序中函數fun()的功能是:計算n!。例如,給n輸入5,
則輸出120.000000。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#include<conio.h>
doublefun(intn)
{doubleresult=1.0;
/*************found**************/
ifn==0
return1.0;
while(n>l&&n<170)
/*************found**************/
result*=n—
returnresult;
)
main()
{intn;
printf("InputN:");
scanf("%d"&n);
printf("\n\n%d!=%lf\n\n",n,fun(n));
)
32.下列給定程序中,函數fun()的功能是:從字符串s中,刪除所有大
寫字母F。
請改正程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
voidfun(char*s)
inti,j;
/*************found**************/
for(i=j=0;s[i]!='O';i++)
if(s[i]!=F)
/*************found**************/
s[j]=s[i];
sU]='\O';
)
main()
chars[80];
printf("\nEnterastring:");
gets(s);
printf("Theoriginalstring:");
puts(s);
fun(s);
printf("Thestringafterdeleted:");
puts(s);
printf("\n\n");
)
33.給定程序中,函數fun()的功能是:使數組中的元素的值增加10倍。
改正其中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構.
試題程序:
#include<stdio.h>
#include<conio.h>
ihtm[10];
voidfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<10;j++)
/******不不*不不不**不不不*不不不*不不********不不/
printf("%3d",m[j]*10);
)
)
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
m[i]=i;
printf("%3d",m[i]);
fun();
printf("\nlnmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
)
34.給定程序M0D11.C中函數fun的功能是:先從鍵盤上輸入一個3
行3列矩陣的各個元素的值,然后輸出主對角線元素之和。
請改正函數fun中的錯誤或在橫線處填上適當的內容并把橫線刪除,使
它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
1?include<stdio.h>
2finclude〈string.h>
3voidfun()
4(
5inta[3][3]rsum;
6intj;
7
8
9printf("Inputdata:w);
10for(i-0;i<3;i+*)
11{for(j-0;j<3;j++)
12/**w******found**********/
wR
13scanf(%dra[i](jj);
14
15for(i,0;i<3;
16sum-sum*a(i)[i];
w,t
17printf(Sum-%d\nrsum);
18
19main()
20
21fun();
22
35.給定程序MODII.C中函數fun的功能是:把主函數中輸入的3個
數,最大的放在a中,最小的放在c中,中間的放在b中。
例如,輸入的數為:551234,輸出結果應當是:a=55.0,b=34.0,
c=12.0o
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
linclude<stdio.h>
2voidfun(float*arfloat*b#float*c)
3(
4/**********found***?W?*???/
5float*k;
6if(*a<*b)
7{k?*a;*a-*b;*b?k;}
8/*****w****found******w***/
9if(*a>*c)
10{k-*c;*c?wa;*a-k;)
11if(*b<*c)
12{k-wb;*b-*c;*c-k;}
13)
14main()
15{floata,b,c;
16printf("Inputabc:R);scanf
《“mm&br?c);
w
17printf(a-%4.Ifrb-%4.If,c
H
-%4.1f\n\nra,b,c);
18fun(&a,&b,;
19printf(wa=%4.If,b■%4.If,c
-%4.1f\n\n"rarbrc);
20
36.下列給定程序中,函數fun()的功能是;將s所指字符串中的字母轉
換為按字母序列的后續字母(但Z轉化為A,z轉化為a),其他字符不
亦
又O
請改正函數fun()中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
voidfun(char*s)
/*************found**************/
{while(*s!='@')
{if(*s>='A'&*s<='z'||*s>='a'&&*s<='z')
{if(*s=='Z')*S='A';
elseif(*S=='z')*s-a';
else*s+=l;
/*************found**************/
(*s)++;
)
main()
{chars[80];
clrscr();
printf("\nEnterastringwithlength<80:\n\n");gets(s);
printf("\nThestring:\n\n");puts(s);
fun(s);
printf("\n\nTheCords:\n\n");puts(s);
37.給定程序MODH.C中函數fun的功能是:根據整型形參m,計算
如下公式的值。
V=-----------+------------+------------
lOO?lOO200?200300?300ni'm
例如,若m=2000,則應輸出:0.000160。
請改正程序中的語法錯誤,使它能計算出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
1finclude<stdio.h>
/…………found…………
3fun(intm)
4(doubley0,d
5inti;
6/…………found…………/
7for(i,100,i<?mri+=100)
8(d?(double)i*(double)i;
9yl.0/d;
10
11return(y);
12
13main()
14(intn=2000;
15printf("\nTheresultis%lf\n",
fun(n));
16}
38.以下程序可把輸入的十進制數以十六進制數的形式輸出。
請在橫線上填上適當的內容并把橫線刪除,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序;
main()
charb[17]={"0123456789ABCDEF"};
intc[64],d,i=0,base=16;
longn;
printf("Enteranumberin'');
scanf("%ld",&n);
do{
/*****************f^ound****************/
c[i]=;i++;n=n/base;}
while(n!=0);
printf("Transmitenewbase:\n");
for(—i;i>=0;—i)
/***************'^Qurid*******************/
{d=c[i];printf("%c",b..);)
printf("\n");
39.給定程序中,函數fun()的功能是:使數組中的元素的值縮小5倍。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#include<conio.h>
floatm[10];
/*************found**************/
intfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=O;j<10;j++)
/*************found**************/
print("%f",m[j]%5);
)
main()
inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
(
m[i]=i+20;
printf("%f",m[i]);
)
fun();
printf("\nlnmainaftercalling\n");
for(i=O;i<10;i++)
printf("%f",m[i]/5);
40.下列給定程序中函數fun()的功能是;從低位開始取出長整型變量s
中奇數位上的數,依次構成一個新數放在t中。例如,當s中的數為
4576235時,t中的數為4725。
請改正程序中的錯誤,使它能得到正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。
試題程序:
#include<stdio.h>
#include<conio.h>
/************found*************/
intfun(longS,long*t)
longsi=10;
*tiS%10;
while(s>0)
/*************found*************/
s=s%100;
*t=S%10*Sl+*t;
sl=sl*10;
)
)
main()
(
longS,t;
clrscr();
printf("\nPIeaseenterS:");
scanf("%ld”,&s);
fun(S,&t);
printR'Theresultis:%ld\n",t);
)
五、程序改錯題(2題)
41.下列給定程序中,函數ptoc的功能是:利用插入排序法對字符串
中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字
符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符
中,插入后前3個字符依然有序;再把第4個字符插入前三個字符
中,待排序的字符串已
在主函數中賦予。
請修改程序中的錯誤,使它能得出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結
構。
試題程序:
#include<strin9.h>
#include<stdiO.h>
#defineM80
voidproc(char*arr)
{inti,j,n;charch;
n=strlen(arr):
for(i=l;i<n;i++)
//****found****
{c=arr[i];
j=i-l;
while((j>=o)&&(ch<arr[j]))
(
arr[j+l]=arr[j];
j-;
)
arr[j+l]=ch;
)
)
voidmain
(
chara[Ml="QWERTYUIOPASDFGHJKLMNBVCXZ";
printf("Theoriginalstring:%s'n”,a);
proc(a);
printf("Thestringaftersortin9:
%s\n\n",a);
42.下列給定的程序中,函數proc()的功能是:計算并輸出k以內最大
的10個能被15或18整除的自然數之和,k的值由主函數傳人。若k
的值為800,則函數的值為7605。
請改正程序中的錯誤,使它能得出正確的結果。
注意:不要改動main。函數,不得增行或刪行,也不得更改程序的結
構。
試題程序:
giurludcVcodio.h>
giticludr<sldUKh>
mtprodmtk)
■m-<>?ji
WX(卜>Id
//????found????
k——?
//????????
returnmi
)
voidmmnC>
(
?ynteni(*CLS-)i
pnfid<eMd\ft?.proe《800》>,
六、操作題(2題)
43.下列給定程序的功能是:讀入一個整數n(2<=n<=5000),打印
它的所有為素數的因子。例如,若輸入整數1234,則應輸出:2,
6170
請修改程序中的錯誤,使程序能得出正確的結果。
注意:不要改動main函數,不能增選或刪行,也不能匿改程序的結
構。
試題程序:
#include<conio.h>
#include<stdio.h>
//****found****
Prime(intm);
(
intj,P;
p=l;
〃****found****
for(j=2;j++)
if!(m%j)
(
p=0;
break;
)
retum(p);
inti,n;
printf("\npleaseenteranintegernumberbetween2
and5000:");
scanf("%d",&n);
printf("\n\nTheprimefactor(s)of%dis(are):",n):
for(i=2;i<n;i4+)
if((!(n%i))&&(Prime(i)))
printf("%4d,",i);
printf("\n");
)
44.請編一個函數voidproc(intttEM][N],intpp[N]),tt指向一"個M行
N列的二維數組,求出二維數組每行中最大元素,并依次放入pp所指
的一維數組中。二維數組中的數已在主函數中給出。
注意:部分源程序給出如下。
請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM3
#defineN4
voidproc(intttrM3rN]。intpp[N])
voidmain
intstr[M][Nl={{34,56,84,78},
{23,84,93,12),
{28,38,39,93}};
intp[Nl,i,j,k;
systemC'CLS");
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
(
for(j=0;j<N;j++)
printf("%6d",str口皿);
printf("\n");
)
proc(str,p);
printf("\nTheresultis:\n");for(k=0:k<M;k++)
printf("%4d",p[k]);
printfC'n");)
參考答案
1.0111201112解析:在主函數中定義了整型變量fl和f2,并把其值
賦為。和1,在屏幕上輸出。然后在第一次運行for循環語句時,變量f
的值等于1,把其值輸出,把變量fl的值。賦給變量位,變量f的值1
賦給n,在執行第二次for循環語句時,變量f的值等于1,把此值輸出。
然后再把變量fl的值1賦給變量f2,變量f的值1賦給fl,在執行第
三次for循環語句時,變量f的值等于2,把此值輸出。所以程序運行后
的結果為。1112。
2.數據存儲數據存儲
3.9292解析:本題的主函數中首先定義了一個4行4列的二維數組,然
后執行一個while循環,該循環中又嵌套了一個do-while循環。先看
while循環,該循環通過i++的值來判斷是否結束循環,當i++的值為4
的時候結束循環,當i=0時,執行while的循環體,顯然if語句條件不
滿足不執行,接著讓j=0,然后執行do-while循環體,不難看出do-while
循環的功能是將第i+1行的所有元素加起來,所以這時s的值為
s=a[l][0]+a[l][l]+a[l][2]+a[l][3]=26^i=j±i+l=2,if后面括號里的
表達式的值為真執行后面的continue語句,結束該次循環;當i=2時,
i加1變為3,把第3+1行的所有元素的值加到s上,此時
s=s+a⑵[0]+a[2][l]+a⑵⑵+a[2][3]=92,當i=3時,3+1=4,if后面括號里
的表達式的值為真執行后面的continue語句,結束該次循環,當i=3時,
if后面括號里的表達式的值為真執行后面的continue語句,結束該次循
環當i=4時while循環結束,所以最后輸出的s的值為92o
4.-1*sn-1*sn解析:根據公式可知,第一處應填-1;由于計算結果要
通過形參指針sn傳回,所以第二處應填*sn。
5.64KB
6.1020010200解析:程序中(a%b<l)||(a/b>1)的運算順序為先算括號
一算術運算符一關系運算符t邏輯運算符。首先計算a%b=10,a/b=O,
因為a%b<l為假(0),a/b>l也為假(0),所以整個表達式的結果為假
(0),最后輸出a,b,c的值為10200。
7.136136解析:程序中定義了一個遞歸調用函數fun。程序運行時,
先把實參6傳給形參。if語句中6/2>0成立,執行fun(x/2),即fun(3),
同時輸出x的值6;再判斷if條件,3/2>0成立,再執行fun(x/2),即
fun(l),同時輸出x的值3;此時1/2>0不再成立,輸出1。而遞歸調用
的輸出順序是相反的,故輸出結果為136。
8.概念設計階段(數據庫概念設計階段)概念設計階段(數據庫概念設計階
段)
9.GFEDCB。GFEDCBO解析:開始指針cp指向字符串結束標志,在
循環中,cp依次向前移動,當打印出第二個字符后,cp指向第一個字
符,循環判斷條件不滿足,退出循環,因此,只打印出第一個字符以后
的字符的逆序列。
10.關系或一個關系關系或一個關系解析:在關系數據庫中,把數據表
示成二維表,而一個二維表就是一個關系。
11.A
根據題目中的定義可知,“sizeof(p)”計算的是數組p中所有元素所占用
的字節數,而不是char型數據所占的字節數。故本題答案為A選項。
12.B
13.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個字
符是大寫字母,只要確定它的ASCII碼在A和Z之間就可以了,選項A)和
C)符合要求。函數isalpha用來確定一個字符是否為字母,大寫字母的
ASCII碼值的范圍為65到90,所以如果一個字母的ASCII碼小于91,那
么就能確定它是大寫字母。
14.B
15.B
[解析]每次內循環只循環一-次就結束,第一次外循環時t=t+b[][0][]=
l+b[0][0]=1+0=1;第二次外循環時t=t+b[l][b[l][l]]=l+b[l][l]=l+l=2;
第三次外循環時t=t+b[][2][]=2+b⑵⑵=2+2=40
16.A
解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。
17.D
18.A
\\n和\\\\分別為轉義字符,各占據一個字符的位置。
19.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何
能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選
項A正確:在C語言中,函數體是從花括號{開始,到花括號}結束。但
沒有規定花括號{和}只能作為函數體定界符,故選項B錯誤;選項C中
前半句是正確的,C程序由一個或多個函數所組成,但不是所有的函數
都由用戶自己命名,有些函數,比如主函數main()就不能由用戶來命名,
故選C不正確;在?語言中明確規定每條語句以分號;結束,分號是語
句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合
題意。
20.B
21.voidfun(inta[],intn,int*max,int*d)
int1;
*max=a[0];
*d=0;
l;i<=""p="">
(
i/f*max<a[i])
max=a[i];*d=i;}
fun()函數形參max用來存放最大值,形參d用來存放最大值的下標。由
于它們都是指針變量,因此在引用所指向的變量時,要進行指針運算。
循環語句用來遍歷數組元素,找出最大值。條件語句用來判斷該數組元
素是否最大。
22.1doublefun(intn)
doublesum=0.0;inti;
for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;
retumsqrt(sum);
本題考查算術運算的算法。首先利用一個for循環判斷小于n且能同時
被3和7整除的整數,并將滿足條件的整數累加到sum。之后調用
Sqrt()函數計算sum的平方根,并將其作為函數的返回值返回。
23.voidfun(char*s,chart[])
{
inti,j=0,n;
n=strlen(s);
for(i=0;i<=""p="">
if((i%2)&&(s[i]%2))
(
t[j++]=s[i];/*將下標為奇數同時ASCII值為奇數的字符放入數組
t中*/
}
中]='\。';/*最后加上字符串結束標志*/
本題要求保留下標為奇數同時ASCII值也為奇數的字符,其余的所有字
符都刪除。將S字符串中,滿足條件的字符存放到字符串t中。if的條
件表達式為:if(i%2!=0&&s[i]%2!=0)o
24.
【解析】首先定義一個變量來存放表達式的和,根據題目中提供的多項
式,通過n次循環來求出n項的和。最后把所求得的和返回到主函數當
中。
25.\n\tvoidproc(intm,int*a,int*n)
\n{
\ninti,j=0;
\nfor(i=l;i<=m;i++)//進行m次循環
\nif(i%7==0||i%U==0)//能被7或11整除的所有整數
\na[j++]=i;//符合條件的數放在數組a中
\n*n=j;//返回這些數的個數
\n}
\n【解析】本題需要先判斷1?m每一個整數能否被7或11整除,然
后將符合條件的整數放在數組a中,最后將符合條件的數的個數通過
形參n返回主函數。\n
26.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)
(
inti,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下標
for(j=0;j<nn;j++)//j是表示其列的下標
b[k++]=s[i][j];//把其放到b的一維數組中
*n=k;//把b數組的長度通過形參n傳回到主函數中
)
【解析】要將M行N列的二維數組中的數據,按行的順序依次放到一
維數組中,可以通過首先行循環,然后列循環取出二維數組中的每一
個元素,并將其放入一維數組中。最后,將一維數組的長度通過形參
返回到主函數當中。
27.
【解析】按照題目中的要求,刪除一個字符串中指定下標的字符。首先,
將指定下標之前的字符放入字符數組b中,然后將指定下標之后的字符
也放入字符數組b中,最后為新的字符數組b添加結束符。
28.
【解析】在fun()函數中,首先求行字符串的長度,然后通過循環進行字
符交換。要注意的是,如果字符串長度是奇數,則最中間的元素在逆置
前后的位置是沒有改變的。
29.[答案]
voidfiin(char?str)
{inti=0;
char*p=?str;
while(*p『遍歷字符串?/
.
{
/*如果當前元素不為空格*/
即p!二
{??
/*將當前元素保存到西中*/
sti(ij=*p;
i++;
)
P++;
}
6用尸\0V*字符串最后加上結束標記符M力
)
[解析]
題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環刪
除字符串中的每一個空格,將非空格字符進行重新保存。
30.\n#include"stdio.h"
\nintfun(inta)
\n{intI;
\nif(a==2)return1;1=2;
\nwhile((a%I)!=OI<=sqrt((float)a))
\nl++;
\nif(a%I==O)
\n{printf("%disnotaprime!,5,a);
\nretum0;}
\nprintf(t4%disaprime!,5,a);
\nretum1;}
\nmain
\n{intx;
\nprintf("\\npleaseenteranumber:^^);
\nscanf("%d",&x);
\nprintf("%d\\n”,ftm(x));}
\n
31.(1)錯誤:ifn==0正確:if(n==0)⑵錯誤:result*=n—正確:result*=n-
-;(1)錯誤:ifn==0正確:if(n==0)\r\n(2)錯誤:result*=n—正確:result*=n-
-;解析:在做這道題之前,我們首先應該明白一個數學上的概念,一
般判卷人員先要執行程序,如果結果正確,得滿分,否則錯一個扣分,
再錯再扣,本題考查5!即51=5x4x3x2x1=120,要求輸出double型結
果。
32.(1)錯誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯誤:
s[j]=s[i]正確:s[j++]=s[i];⑴錯誤:for(i=j=0;s[i]!=O升+)正確:
for(i=j=0;s[i]!'\\01;i++)\r\n(2)錯誤:s|j]=s[i]正確:s[j++]=s[i];解析:錯
誤1:本題考查是否掌握字符串的最后一個字符是結束標志符錯誤
2:在循環中,新字符串的下標也要遞增,這樣最終產生一個新的字符
串。
33.錯誤:printf("%3d"m[j]*10);正確:printf("%3d"m[j]=m[j]*10錯誤:
printf('%3d'm[j]*10);正確:printf(%3cf解析:本題考查
全局變量相關知識。該題程序中的fun()沒有參數輸入,但數組皿⑼為
全局變量,故可在fun()函數中使用,fun()函數對數組m的操作可以反
映到主函數的輸出結果中。
34.(l)sum=0(2)scanfr%d,,&a[i][j]);(l)sum=O(2)scanf(“%d,“,&
a[i][j]);解析:該題中函數功能是計算元素的和。從已給定源程序的
main主函數開始入手,然后通過“fUn();”語句調用fun函數的功能。
35.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本題中函數
的功能是把主函數中輸入的3個數,最大的放在a中,最小的放在c中。
對三個數進行兩兩比較,實現函數功能。
36.⑴錯誤:whil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 19762:2025 EN Information technology - Automatic identification and data capture (AIDC) techniques - Vocabulary
- 【正版授權】 ISO 13402:2025 EN Surgical and dental hand instruments - Determination of resistance against autoclaving,corrosion and thermal exposure
- 【正版授權】 IEC 60614-1:1994 EN-D Conduits for electrical installations - Specification - Part 1: General requirements
- 【正版授權】 IEC 60335-2-75:2024 EXV-CMV EN Household and similar electrical appliances - Safety - Part 2-75: Particular requirements for commercial dispensing appliances and vending mac
- 勸學的課件講解
- 副腫瘤綜合征護理
- 小學春節安全教育
- 20xx年高端專業模版
- 上海師范大學天華學院《精讀二:文學與人生》2023-2024學年第二學期期末試卷
- 江蘇食品藥品職業技術學院《污染與恢復生態學》2023-2024學年第二學期期末試卷
- 大學英語(本)學習通超星期末考試答案章節答案2024年
- 幼兒園4000余冊師生圖書配置一覽表
- “雄鷹杯”全國小動物醫師技能大賽考試題庫(660題)
- 新能源汽車充電樁項目可行性研究報告模板及范文
- 新能源汽車驅動電機及控制系統檢修教案 學習情境 1:驅動電機的認知
- 如何應對學習壓力
- 梁板墻柱混凝土同時澆筑專項方案(專家論證)
- 2024年初級消防員職業技能鑒定考試復習題庫(單選、多選題)
- 玉溪大紅山鐵礦二期北采區采礦施工組織設計
- 陽光心理-健康人生小學生心理健康主題班會課件
- 第9課資產階級革命與資本主義制度的確立課件-高中歷史統編版2019必修中外歷史綱要下冊
評論
0/150
提交評論