版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年江蘇省蘇州市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.以下程序運(yùn)行后的輸出結(jié)果是【】。
#include<stdio,h>
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);}
2.在軟件生命周期中,【】階段是花費(fèi)最多、持續(xù)時(shí)間最長(zhǎng)的階段。
3.以下函數(shù)的功能是計(jì)算s=1+1/2!+1/3!+…+1/n!,請(qǐng)?zhí)羁铡?/p>
doublerun(intn)
{doubles=0.0,fac=1.0;
inti,k=1;
for(i=1;i<=n;i++)
{【】;
fac=fac/k;
s=s+fac;
}
}
4.下列程序輸出的結(jié)果是______。
intm=17;
intfun(intx,inty)
{intm=3;
return(x*Y-m);
}
main()
{inta=5,b=7;
printf("%d\n",fun(a,B)/m);
}
5.以下程序的功能是:求出數(shù)組x中各相鄰兩個(gè)元素的和依次存放到a數(shù)組中,然后輸出。請(qǐng)?zhí)羁铡?/p>
main()
{intx[10],a[9],i;
for(i=0;i<10;i++)scanf("%d",&x[i]);
for([11];i<10;i++)
a[i-1]=x[i]+[12];.
for(i=0;i<9;i++)printf("%d",a[i]);
printf("");
}
6.以下程序運(yùn)行時(shí)若從鍵盤輸入:102030<回車>。輸出結(jié)果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
7.在關(guān)系運(yùn)算中,查找滿足一定條件的元組的運(yùn)算稱之為【】。
8.下面的程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個(gè)名為bi.dat的新文件中,請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
#include<stdlib.h>
FILE*fp;
main()
{charch;
if((fp=fopen(【】))==NULL)exit(0);
while((ch=getchar())!='@')fputc(ch,fp);
fclose(fp);
}
9.若x和a均是int型變量,則計(jì)算完x=(a=4,6*2)后的x值為______。
10.若x為int類型,請(qǐng)寫出與!x等價(jià)的C語(yǔ)言表達(dá)式______。
二、單選題(10題)11.給出以下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為()。
A.數(shù)組x和數(shù)組y等價(jià)B.數(shù)組x和數(shù)組y的長(zhǎng)度相同C.數(shù)組x的長(zhǎng)度大于數(shù)組y的長(zhǎng)度D.數(shù)組x的長(zhǎng)度小于數(shù)組y的長(zhǎng)度
12.以下說法正確的是()。
A.C程序總是從第一個(gè)函數(shù)開始執(zhí)行
B.在C程序中,被調(diào)用的函數(shù)必須在main函數(shù)中定義
C.C程序總是從main函數(shù)開始執(zhí)行
D.C程序中的main函數(shù)必須放在程序的開始部分
13.
14.
15.下列敘述中錯(cuò)誤的是()。
A.用戶定義的函數(shù)中可以沒有return語(yǔ)句
B.用戶定義的函數(shù)中可以有多個(gè)return語(yǔ)句,以便調(diào)用一次返回多個(gè)函數(shù)值
C.用戶定義的函數(shù)中若沒有return語(yǔ)句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語(yǔ)句中可以沒有表達(dá)式
16.數(shù)組A中,每個(gè)元素的長(zhǎng)度為3個(gè)字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到10,從首地址SA開始連續(xù)存放的存儲(chǔ)器內(nèi),該數(shù)組按行存放,元素A[8][5]的起始地址為()。
A.SA+141B.SA+144C.SA+222D.SA+225
17.以下敘述中錯(cuò)誤的是(
)。A.函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參
B.函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語(yǔ)句存在
C.若函數(shù)有返回值,必須通過r;mm語(yǔ)句返回
D.C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成
18.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下選項(xiàng)中表達(dá)式值為11的是()。
A.++p->xB.pt->xC.*pt->yD.(pt++)->x
19.在存儲(chǔ)數(shù)據(jù)時(shí),通常不僅要存儲(chǔ)各數(shù)據(jù)元素的值,而且還要存儲(chǔ)()。
A.數(shù)據(jù)的處理方法B.數(shù)據(jù)元素的類型C.數(shù)據(jù)元素之間的關(guān)系D.數(shù)據(jù)的存儲(chǔ)方法
20.下列運(yùn)算符中優(yōu)先級(jí)最高的是()。
A.!B.%C.-=D.&&
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無紙化考武題庠請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(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}
22.請(qǐng)編寫一個(gè)函數(shù)intproc(int*s,intt,int*k),用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲(chǔ)單元中。例如,輸入如下整數(shù):876675896101999401980431451777則輸出結(jié)果為4,999。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
23.下列程序判斷字符串s是否對(duì)稱,對(duì)稱則返回1,否則返回0;如f("abba")返回1,f("abab")返回0。
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是根據(jù)以下公式求π的值(要求精度0.0005,即某項(xiàng)小于0.0005時(shí)停止迭代)。程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.140578。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){ doublex; printf(“Inputeps:”); scanf(“%lf”,&x); printf(“\neps=%lf,PI=%lf\n”,x,fun(x));}
25.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,當(dāng)n=23,x=0.3時(shí),函數(shù)值為0.740818。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填人所編寫的若干語(yǔ)句。試題程序:
26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù),用來刪除字符串中的所有空格。例如,輸入asdafaaz67,則輸出為asdafaaz67。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:27.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:28.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人結(jié)構(gòu)體數(shù)組stu中,請(qǐng)編寫函數(shù)proc,它的功能是:把指定分?jǐn)?shù)范圍之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函數(shù)值返回。
例如,輸入的分?jǐn)?shù)是70和79,則應(yīng)當(dāng)把分?jǐn)?shù)低于70和高于79的學(xué)生數(shù)據(jù)輸出,不包含70分和79分的學(xué)生數(shù)據(jù)。主函數(shù)中把70放在low中,把79放在heigh中。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填人所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
#defineM16
typedefstruct
{
charnum[10];
ints:
}
STREC;
intproc(STREC*a,STREC*b,int1,inth)
{}
voidmain
{
STRECstu[M]={{"GA005",55),{"GA003",96},
{"GA002",80),{"GA004",68),
{"GA001",88},{"GA007",74},
{"GA008",85),{"GA006",89},
{"GA015",90),{"GA013”,53),
{"GA012",66},{"GA014”,82),
{"GA011",73},{"GA017",69),
{"GA018",64),{"GA016",86}};
STRECh[M];
inti,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)’
{
t=heigh:
heigh=low;
low=t;
}
n=proc(stu,h,low,heigh);
printf("Thestudent’Sdataout
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%S%4d\n",h[i].num,h[i].s);
//輸出指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄
printf("\n");
}
29.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請(qǐng)編寫函數(shù)proc(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
30.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語(yǔ)言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
四、2.程序修改題(10題)31.下列給定的程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從大到小的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
{
inti,j,t,p;
/*************found*************/
for(j=0;j<n-1;j++);
{
p=j;
for(i=j;i<n;i++)
if(a[i)>a[p])
p=i;
t=a[p];
a[p]=a[i];
/*************found**************/
a[p]=t;
}
}
main()
{
inta[N]={11,32,-5,2,14},i,m=5;
printf(“排序前的數(shù)據(jù):”);
for(i=0;i<m;i++)
printf(“%d”,a[i]);
printf(“\n”);
fun(a,m);
printf(“排序后的順序:”);
for(i=0;i<m;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
32.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。
π/4≈1-1/3+1/5-1/7+…
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
floatfun(floatnum)
{ints;
floatn,t,pi;
t=1;pi=0;n=1;s=1;
/**************found***************/
while(t>=num)
{
pi=pi+t;
n=n+2;
s=-s;
/**************found**************/
t=s%n;
}
pi=pi*4;
returnpi;
}
main()
{floatn1,n2;
clrscr();
printf("Enterafloatnumber:");
scanf("%f",&n1);
n2=fun(n1);
printf("%6.4f\n",n2);
}
33.給定程序MODll.C中函數(shù)fun的功能是:先將s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序連接到t所指串的后面。
例如:當(dāng)s所指的字符串為:“ABCDE”時(shí),則t所指的字符串應(yīng)為:“EDCBAABCDE”。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.下列給定程序中,函數(shù)fun()的功能是找出100~n(n不大于1000)之間百位數(shù)字加十位數(shù)字等于個(gè)位數(shù)字的所有整數(shù),把這些整數(shù)放在s所指的數(shù)組中,個(gè)數(shù)作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)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");
}
35.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都改為對(duì)應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出"ab,cd"。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注童:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
char*fun(chartt[])
{
inti;
for(i=0;tt[i];i++)
/**************found**************/
{if(('A'<=tt[i]||(tt[i]<='z'))
tt[i]+=32;}
return(tt);
}
main()
{inti;
chartt[81];
clrscr();
printf("\nPleaseenterastring:");
gets(tt);
printf("\nTheresultstringis:\n%s",fun(tt));
}
36.已知一個(gè)數(shù)列從0項(xiàng)開始的前3項(xiàng):0,0,1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的和sum。n的值通過形參傳入。例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為96.000000。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intn)
{
doublesum,S0,S1,S2,S;
intk;
sum=1.0;
if(n<=2)
sum=0.0;
s0=0.0;
s1=0.0;
s2=1.0;
/*************found*************/
for(k=4;k<n;k++)
{
S=S0+S1+s2;
Sum+=s;
S0=s1;
S1=s2;
/*************found*************/
S2=S;
returnsum;
}
main()
{
intn;
clrscr();
printf("InputN=");
scanf("%d",&n);
printf("%f\n",fun(n));
}
37.給定程序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)!
38.在主函數(shù)中從鍵盤輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中,函數(shù)fun()的功能是計(jì)算數(shù)組元素中值為負(fù)數(shù)的平均值(不包括0)。
例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12,0,則程序的運(yùn)行結(jié)果為-25.333333。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intx[])
{
doublesum=0.0;
intc=0,i=0;
/*************found*************/
while(x[i]==0)
{
if(x[i]<0)
{
sum=sum+x[i];
c++;
}
i++;
}
/************found***********/
sum=sum\c;
returnsum;
}
main()
{
intx[1000];
inti=0;
clrscr();
printf("\nPleaseentersomedata(endwith
0):”);
do
{
scanf("%d",&x[i]);
}while(x[i++]!=0);
printf("%f\n",fun(x));
}
39.給定程序MODII.C中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:8642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
40.給定程序MODll.C中函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否是素?cái)?shù),若是返回1,否則返回0。
在mai()函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯(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.下列給定程序中,proc()函數(shù)的功能是:根據(jù)形參n。計(jì)算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若輸入6,則應(yīng)輸出0.616667。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符串長(zhǎng)度的函數(shù)),函數(shù)返回較短的字符串。若兩個(gè)字符串長(zhǎng)度相等,則返回第1個(gè)字符串。
例如,輸入nanjing<CR>nanchang<CR>(<CR>為回車鍵),函數(shù)將返回nanjing。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h>
char*fun(char*S,char*t)
{
}
main()
{
chara[20],b[10],*p,*q;
inti;
printf("Inputlthstring:");
gets(a);
printf("Input2thstring:");
gets(b);
printf(“%s”,fun(a,b));
}
44.設(shè)有如下宏定義
#defineMYSWAP(z,x,y){z=x;x=Y;Y=z;}
以下程序段通過宏調(diào)用實(shí)現(xiàn)變量a、b內(nèi)容的交換,請(qǐng)?zhí)羁铡?/p>
floata=5,b=16,c;
MYSWAP(【】,a,b);
參考答案
1.11解析:該程序要注意的是if語(yǔ)句的判斷條件“c=a”是賦值,而不是“c==a”。由于a=1,故條件c=a使c的值為1(真),所以輸出c的值1。
2.維護(hù)維護(hù)
3.k=k*ik=k*i解析:本題小通過for循環(huán)求s表達(dá)式中每一項(xiàng)的和,表達(dá)式“fac=fac/k;”求的是每一項(xiàng)的值,所以k的值應(yīng)為n!,在求n!的時(shí)候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故木題填k=k*i。
4.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作用域在函數(shù)級(jí)和塊級(jí)的變量,全局變量是指作用域在程序級(jí)和文件級(jí)的變量。本程序首先定義了一個(gè)全局變量m=17,m=17的作用域在整個(gè)程序內(nèi)。在fun函數(shù)內(nèi)部定義了一個(gè)局部變量m=3,m=3的作用域僅在fun函數(shù)內(nèi)部,通過fun函數(shù)返回兩個(gè)形參的積再減m。在主函數(shù)中,輸出fun(a,b)/m=(5*7-3)/17=1。
5.對(duì)于10個(gè)數(shù),相鄰的兩個(gè)數(shù)相加取和,總共要進(jìn)行9次加法運(yùn)算,所以空14處應(yīng)填入i=1。相鄰的兩個(gè)數(shù)相加取和,放在數(shù)組a中,x[0]與x[1]的和存放在a[0]中,所以空15處應(yīng)填入x[i-1]。\r\n\r\n
6.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個(gè)十進(jìn)制整數(shù),但只接受第一和第三個(gè)到函數(shù)的第二和第三個(gè)參數(shù)所指的內(nèi)存地址中。所以本題的輸出為:10300。
7.選擇選擇解析:在關(guān)系數(shù)據(jù)庫(kù)中,選擇運(yùn)算也是一個(gè)元運(yùn)算,關(guān)系R通過選擇運(yùn)算(并由該運(yùn)算給出所選擇的邏輯條件)后仍為一個(gè)關(guān)系。這個(gè)關(guān)系是由R中的那些滿足邏輯條件的元組所組成。
8.bi.dat"w"或"bi.dat""w+"bi.dat,'w'或'bi.dat','w+'解析:根據(jù)fopen函數(shù)的調(diào)用方式fopen(文件名,使用文件方式)和題意可得結(jié)果。
9.1212解析:x=(表達(dá)式1,表達(dá)式2,…)的形式,結(jié)果為最后一個(gè)表達(dá)式的值:x=(a=4,6*2)=2*6=12。
10.x==0x==0解析:!x的邏輯意思就是x為非,即x==0。
11.C解析:在C語(yǔ)言中,字符串以'\\0'作為結(jié)束符,因此數(shù)組x的長(zhǎng)度為7+1=8,而數(shù)組y的長(zhǎng)度等于7。
12.C解析:C程序是由main函數(shù)開始運(yùn)行,通過main函數(shù)調(diào)用其他函數(shù),所以,選項(xiàng)A)錯(cuò)誤;在C程序中,函數(shù)不能嵌套定義,即不能在一個(gè)函數(shù)中定義另一個(gè)函數(shù),選項(xiàng)B)錯(cuò);C程序總是從main函數(shù)開始執(zhí)行,但main函數(shù)不必放在最前面,故選項(xiàng)D)錯(cuò)。
13.D
14.C
15.B函數(shù)的值只能通過return語(yǔ)句返回主調(diào)函數(shù)。函數(shù)中允許有多個(gè)return語(yǔ)句,但每次只能調(diào)用一個(gè)return語(yǔ)句,因此只能返回一個(gè)函數(shù)值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為void。故本題答案為B選項(xiàng)。
16.C
17.A函數(shù)參數(shù)傳遞是個(gè)不可逆的過程,形參不會(huì)把值傳回實(shí)參,所以A)選項(xiàng)(24)[答案]A)[解析]c的值為a乘以b的值,為3。所以答案選擇A)。
18.A題目中定義了一個(gè)結(jié)構(gòu)體數(shù)組c并初始化,指針pt指向c的第1個(gè)元素。則“++pt->x”為11,“pt->x”為10,“*pt->y”為1,“(pt++)->x”為20。故本題答案為A選項(xiàng)。
19.C
20.A
21.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;i22.
【解析】要得到數(shù)組中的最大元素的下標(biāo),需要比較數(shù)組中的每一個(gè)元素。將最大的元素返回給主函數(shù),最大元素的下標(biāo)通過形參返回給主函數(shù)。
23.24.doublefun(doubleeps){ doubles=0.0,s1=1.0; intn=1; while(s1>=eps) /*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下一項(xiàng)*/ { s=s+s1; /*求和*/ s1=s1*n/(2*n+1);/*求多項(xiàng)式的每一項(xiàng)*/ n++; } return2*s;}該題考核的是通過迭代法求給定多項(xiàng)式的值。迭代法是讓計(jì)算機(jī)對(duì)一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時(shí),都從變量的原值推出它的一個(gè)新值。需要注意變量的數(shù)據(jù)類型和賦初值操作。定義double類型變量s,并為其賦初值,用來存放多項(xiàng)式的某一項(xiàng)和最后的總和。從第2項(xiàng)開始,以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1)。程序用s1來表示每一項(xiàng),用s表示求和后的結(jié)果。需注意變量s1和s的初值都為1.0,因?yàn)檠h(huán)變量從第2項(xiàng)開始累加。
25.
【解析】首先定義兩個(gè)變量分別用來存儲(chǔ)級(jí)數(shù)的和與每一項(xiàng)的分母。觀察級(jí)數(shù)的特點(diǎn),其每一項(xiàng)的正負(fù)號(hào)是交替變化的。根據(jù)這些特點(diǎn),每增加一項(xiàng)都需要變換符號(hào)。最后求出級(jí)數(shù)的和。
26.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ǔ)言中沒有直接刪除字符的操作,因此對(duì)不需要?jiǎng)h除的字符采用“保留”的操作。用指針P指向字符串中的每一個(gè)字符,每指向一個(gè)字符都判斷其是否為空格,若不是空格則將其保存到數(shù)組Str。27.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個(gè)數(shù)*/8}本題可以用兩個(gè)循環(huán)來處理。由于是按行的順序取出,因此第1個(gè)for循環(huán)用于控制行下標(biāo),第2個(gè)循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時(shí),越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)28.\n\tintproc(STREC*a,STREC*b,intl,inth)\n\n\n\t{\n\n\n\tinti,j=0;\n\n\n\tfor(i=0;i<M;i++)\n\n\n\tif((a[i].s>=0&&a[i].s<1)||(a[i].s>h&&a\n\n\n\t[i].s<=l00))
//通過if語(yǔ)句,來判斷指定范圍\n\n\n\t之外的數(shù)\n\n\n\tb[j++]=a[i];//放到b數(shù)組中\(zhòng)n\n\n\treturnj;//最后把其個(gè)數(shù)返回到主函數(shù)中\(zhòng)n\n\n\t}\n\n\n\t【解析】題目要求把指定范圍之外的數(shù)放到b中,將每一個(gè)學(xué)生的成績(jī)與指定的成績(jī)相比較,將符合條件的學(xué)生成績(jī)放在數(shù)組b中,并將符合要求的學(xué)生個(gè)數(shù)返回給主函數(shù)。\n
29.
【解析】要得到成績(jī)高于等于平均分的學(xué)生數(shù)據(jù),首先要得到所有學(xué)生的平均分,然后把每個(gè)學(xué)生的成績(jī)與平均分相比較。把符合條件的學(xué)生數(shù)據(jù)放在數(shù)組b中,學(xué)生個(gè)數(shù)通過形參中的指針變量返回,平均分?jǐn)?shù)由函數(shù)值返回。
30.
【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項(xiàng)表達(dá)式的和然后開平方。可以首先通過m次循環(huán)求得m項(xiàng)表達(dá)式的和,然后將其和開平方并返回到主函數(shù)當(dāng)中。
31.(1)錯(cuò)誤:for(j=0;j<n-1;j++);正確:for(j=0;j<n-1;j++)(2)錯(cuò)誤:a[p]=t正確:a[j]=t;(1)錯(cuò)誤:for(j=0;j<n-1;j++);正確:for(j=0;j<n-1;j++)\r\n(2)錯(cuò)誤:a[p]=t正確:a[j]=t;解析:錯(cuò)誤1:根據(jù)C語(yǔ)言語(yǔ)法,for循環(huán)中循環(huán)條件后不加分號(hào),除非做空操作。錯(cuò)誤2:將兩數(shù)進(jìn)行交換的常用語(yǔ)句,借助第三個(gè)變量。
32.(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)(2)錯(cuò)誤;t=s%n;正確:t=s/n;(1)錯(cuò)誤:while(t>=num)正確:while(fabs(t)>=num)\r\n(2)錯(cuò)誤;t=s%n;正確:t=s/n;解析:函數(shù)fun()中while語(yǔ)句的含義是,當(dāng)新的一項(xiàng)大于給定參數(shù)時(shí),循環(huán)累計(jì),計(jì)算s的值。而題目要求是最后一項(xiàng)的絕對(duì)值小于給定參數(shù),因此循環(huán)條件應(yīng)當(dāng)為while(fabs(t)>=num),而非while(t>=num)。
33.(1)intisl;(2)t[i]=s、[sl-i-1];(1)inti,sl;(2)t[i]=s、[sl-i-1];解析:本題中函數(shù)的功能是先將字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序連接到t串的后面。解題思路是首先對(duì)字符串進(jìn)行逆序存放,然后再把字符串正序連接在串后。
34.(1)錯(cuò)誤:k=n;正確:k=i;(2)錯(cuò)誤:s[j]=i;正確:s[j++]=i;(1)錯(cuò)誤:k=n;正確:k=i;\r\n(2)錯(cuò)誤:s[j]=i;正確:s[j++]=i;解析:錯(cuò)誤1:k就是當(dāng)前要被判斷的數(shù),是隨著i值的變化而變化的。錯(cuò)誤2:在循環(huán)中,j是數(shù)組的下標(biāo)要遞增。
35.錯(cuò)誤:if(('A'<=tt[i]||(tt[i]<='Z'))正確:if((tt[i]>='A')&&(tt[i]<='Z'))錯(cuò)誤:if(('A'<=tt[i]||(tt[i]<='Z'))正確:if((tt[i]>='A')&&(tt[i]<='Z'))解析:從ASCII碼表中可以看出,小寫字母的ASCII碼值比對(duì)應(yīng)大寫字母的ASCII碼值大32。將字符串中的大寫字母改為小寫字母的方法是,從字符串第1個(gè)字符開始,根據(jù)ASCII碼值判斷該字母是不是大寫字母,若是,則ASCII碼值加32即可;重復(fù)執(zhí)行以上過程直至字符串尾。本題可利用條件選擇語(yǔ)句和循環(huán)語(yǔ)句來實(shí)現(xiàn)。
36.(1)錯(cuò)誤:for(k=4;k<n;k++)正確:for(k=4;k<=n;k++)(2)錯(cuò)誤:s2=s;正確:s2=s;}(1)錯(cuò)誤:for(k=4;k<n;k++)正確:for(k=4;k<=n;k++)\r\n(2)錯(cuò)誤:s2=s;正確:s2=s;}解析:錯(cuò)誤1:循環(huán)中包括k=n的情況,所以k要取到n之后才結(jié)束循環(huán)。錯(cuò)誤2:for循環(huán)的語(yǔ)句要用大括號(hào),在此處少了“}”,應(yīng)添上。
37.(1)floatfun(intn)(2)for(i=2;i<=n;i++)(1)floatfun(intn)(2)for(i=2;i<=n;i++)解析:本題中函數(shù)的功能是計(jì)算公式的值。其中,每一項(xiàng)的分母是前一項(xiàng)的值加1。
38.(1)錯(cuò)誤:while(x[i]==0)正確:while(x[i]!=0)(2)錯(cuò)誤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商務(wù)談判策略計(jì)劃
- 學(xué)校藝術(shù)節(jié)美術(shù)展策劃計(jì)劃
- 改進(jìn)行業(yè)保安培訓(xùn)的有效方式計(jì)劃
- 生物學(xué)理論與實(shí)踐結(jié)合的探討計(jì)劃
- 消防安全管理基礎(chǔ)知識(shí)培訓(xùn)試題(附含答案)
- 三百塊錢離婚協(xié)議書范文
- 店員合作協(xié)議書范文模板電子版
- 鏟車賣車合同協(xié)議書范文模板
- 分居兩地的協(xié)議書范文范本
- 建房安全協(xié)議書范文范本簡(jiǎn)單一點(diǎn)
- 基于機(jī)器學(xué)習(xí)的網(wǎng)絡(luò)流量異常檢測(cè)技術(shù)研究
- 蘇教小學(xué)美術(shù)四上《第12課老房子》課件
- 內(nèi)分泌科季度非計(jì)劃重返住院PDCA質(zhì)量持續(xù)改進(jìn)報(bào)告
- 專用中國(guó)地圖-可編輯
- 2024年安徽交控集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 科技倫理課件
- 中班數(shù)學(xué)活動(dòng)《5以內(nèi)的相鄰數(shù)》
- (完整版)【部編版】九年級(jí)下冊(cè)《詞四首》-默寫、賞析、練習(xí)題
- 小學(xué)趣味版畫校本課程的開發(fā)與應(yīng)用研究課題匯報(bào)
- 2023復(fù)配巖改性瀝青路面技術(shù)標(biāo)準(zhǔn)
- 煙草專賣執(zhí)法和案卷制作規(guī)范課件
評(píng)論
0/150
提交評(píng)論