版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2021年黑龍江省牡丹江市全國計算機等級考試C語言程序設計預測試題(含答案)學校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.寫出下列程序的執(zhí)行結(jié)果。swap(p1,p2)int*p1,*p2;{intp;p=*p1;*p1=*p2;*p2=p;}main(){inta,b,*p1,*p2;scanf("%d%d",&a,&B);p1=&a;p2=&b;if(a<B)swap(p1,p2);printf("\na=%d,b=%d\n",a,B);}若a=7,b=8,則程序的運行結(jié)果為()。
2.對于長度為n的線性表,若進行順序查找,時間復雜性為【】;若進行二分查找,則時間復雜性為【】。
3.面向?qū)ο蟮某绦蛟O計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個______。
4.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
5.設y為int型變量,請寫出描述“y是偶數(shù)”的表達式______。
6.以下程序的功能是將寧符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf4568h,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;}
d[j]='\0';
puts(d);
}
7.若有以下程序:
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
執(zhí)行后的輸出結(jié)果是【】。
8.下列程序的輸出結(jié)果是______。
#include<stdio.h>
fun()
{staticinta=0;
a+=3;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<5;cc++)fun();
printf("\n");
}
9.下列軟件系統(tǒng)結(jié)構(gòu)圖的寬度為[]。
10.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從中指向的文件中讀入n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。
二、單選題(10題)11.若有定義“charch;inta;doubled;”,當輸入為12345678910.36時,以下選項中能給各個變量正確賦值的是()。
A.scanf(“%d%c%lf”,&a,&ch,&d);
B.scanf(“%5d%2c%7.2lf”,&a,&ch,&d);
C.scanf(“%d%c%lf”,a,ch,d);
D.scanf(“5d%2c%7.2lf%”,&a,&ch,&d);
12.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5
13.執(zhí)行下列程序中的輸出語句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13
14.設x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
15.有以下程序段
#include<stdio.h>
voidfun(char*fname,char*st)
{FILE*myf;
inti;
myf=fopen(fname,"w");
for(i=0;i<strlen(st);i++)fputc(st[i],myf);
fclose(myf);
}
main()
{fun("test.t","newworld");
fun("test.t","hello,");}
程序執(zhí)行后,文件test.t中的內(nèi)容是A.A.hello,
B.newworldhello,
C.newworld
D.hello,rld
16.若有以下定義和語句:#include<stdio.h>charsl[10]=“abcd!”,*s2=“\nl23\\”;printf(“%d%d\n”,strlen(s1),strlen(s2));程序的運行結(jié)果是()。
A.107B.105C.55D.58
17.設有如下定義:intx=10,y=3,z;則語句printf("%d\n",z=(x%y,x/y));的輸出結(jié)果是()。
A.1B.0C.4D.3
18.
19.
20.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
三、程序設計題(10題)21.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將一個數(shù)字字符串轉(zhuǎn)換成與其面值相同的長整型整數(shù)??烧{(diào)用strlen函數(shù)求字符串的長度。例如,在鍵盤輸入字符串2345210,函數(shù)返回長整型整數(shù)2345210。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:
22.編寫函數(shù)proc(),它的功能是求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。
例如,m為100時,函數(shù)值應為s=7.416198。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
23.假定輸人的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中
的前導*號全部刪除,中間和后面的*號不刪除。
例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則
應當是a*bc*def*g****。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編
寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidproc(char*str)
{
}
voidmain
{
charstr[81];
printf("Enterastring:kn");
gets(str);
proc(str);
printf("Thestringafterdeleted:kn");
puts(str);}
24.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上,b中的十位數(shù)和個位數(shù)依次放在變量c的個位和百位上。例如,當a=45,b=12,調(diào)用該函數(shù)后c=4251。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}
25.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應為2181426164512注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序: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*/
26.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是統(tǒng)計各年齡段的人數(shù)。N個年齡通過調(diào)用隨機函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把0~9歲的人數(shù)存放在d[0]中,把10~19歲的人數(shù)存放在d[1]中,把20~29歲的人數(shù)存放在d[2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都存放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
27.函數(shù)fun的功能是:將S所指字符串中除下標為偶數(shù)同時ASCIl碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數(shù),因此應當刪除;字符8的ASCIl碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;字符2的ASCIl碼值為偶數(shù),在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是‘'246”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:
28.實現(xiàn)字符串拷貝的函數(shù)strcpy為()。
29.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。
例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles[N];
doubleave;
}STREC;
voldfun(STREC*a)
{
}
voidmain
STRECs={"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");
}
30.請編寫一個函數(shù)voidproc(intm,intk,intxxE3),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入206,則應輸出232931374143。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:傳入一個整數(shù)m,計算如下公式的值。
t=1/2-1/3-…-1/m
例如,若輸入5,則應輸出-0.283333。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{
doublet=l.0;
inti;
for(i=2;i<=m;i++)
/*************found**************/
t=l.0-1/i;
/*************found**************/
}
main()
{intm;
clrscr();
printf("\nPleaseenter1integernumbers
:In");
scanf("%d",&m);
printf("\n\nTheresultis%lfln",
fun(m));
}
32.給定程序MODll.C中函數(shù)fun的功能是:求三個數(shù)的最小公倍數(shù)。
例如,給主函數(shù)中的變量x1、x2、x3分別輸入15112,則輸出結(jié)果應當是:330。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
33.給定程序MODll.C中函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。
例如,若輸入:edcba,則應輸出:abcde。
請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
34.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其插在申的最后。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動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);
}
35.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。
例如,給指定精度的變量eps輸入0.0005時,應當輸出Pi=3.141480。
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
36.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且緊隨m的素數(shù),并作為函數(shù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{inti,k;
for(i=m+1;;i++)
{for(k=2;k<i;k++)
/*************found**************/
if(i%k!=0)
break;
/*************found**************/
if(k<i)
return(i);
}
}
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
}
37.給定程序中函數(shù)fun的功能是:根據(jù)整型形參m,計算如下公式的值。
例如,若m中的值為5,則應輸出:1.463611。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdi0.h>
doublefun(intm)
{
doubley=1.0;
inti;
/*************found*************/
for(i=2;i<m;i++)
/*************found*************/
y+=1/(i*i);
return(y);
}
main()
{
intn=5;
printf("\nTheresultis%1f\n",fun(n));
}
38.給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參n,計算如下公式的值。
例如,若n=10,則應輸出:0.617977。
請改正程序中的語法錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
39.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計算斐波拉契級數(shù)列中第n項的值。從第一項起,斐波`拉契級數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,
該項的斐波拉契級數(shù)值為13。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
longfun(intg)
{
/*************found**************/
switch(g);
{case0:return0;
switch(g)
case1;case2:return1;
}
return(fun(g-1)+fun(g-2));
}
main()
{
longfib;intn;
printf("Inputn:");scanf("%d",&n);
printf("n-%d\n",n);
fib=fun(n);
printf("fib=%d\D\n",fib);
}
40.給定程序MODII.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當s中的數(shù)為:87653142時,t中的數(shù)為:8642。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
五、程序改錯題(2題)41.下列給定程序中函數(shù)fun的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…例如,若給n輸入7,則該項的斐波拉契數(shù)值為l3。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}42.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCIl碼升序排序后輸出。例如,輸入opdye,則應輸出deopy。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include%string.h>#include%stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charC;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j4-+)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=C;}}voidmain{charst/[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\nknBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%S",str);}六、操作題(2題)43.請編寫fun函數(shù),其功能是:計算并輸出3~m所有素數(shù)的平方根之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791。
請勿改動main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
44.若變量x、y已定義為int類型且X的值為33,y的值為3,請將輸出語句printf((),x/y);補充完整,使其輸出的計算結(jié)果形式為:x/y=11。
參考答案
1.a=8b=7
2.O(n)O(log2n)
3.實體實體
4.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
5.(y%2)==0(y%2)==0解析:因符合偶數(shù)的條件是對2取余為0,所以要描述y是偶數(shù)的表達式是(y%2)==0。
6.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或\'9\'>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:本題中,chars[80],d[80];定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是C語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應的ASCII碼存放,所以只需比較相應的ASCII碼值是否在48(\'0\'的ASCII代碼)與57(\'9\'的ASCII代碼)之間,或者直接與\'0\',\'9\'進行比較,如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結(jié)束(即\'\\0\'的出現(xiàn))。將'\\0'字符作為字符串d結(jié)束標志,最后調(diào)用puts函數(shù)輸出d。所以在空格處應填入比較語句s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或9\'>>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]。
7.77解析:本題考查英文字母ASCII碼值的概念。字符參與運算的值是其對應的ASCII碼,字符H的ASCII碼為72,A的ASCII碼為65,0的ASCII碼為48,所以a=72-65+48=55,ASCII碼值為55的字符是7。
8.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因為fun函數(shù)中變量a為static類型,所以每次調(diào)用完于函數(shù)之后,變量a所做的改變都要保存。
9.33解析:軟件系統(tǒng)結(jié)構(gòu)圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。
10.buf的首地址buf的首地址解析:考查fsets()函數(shù)的功能,f8ets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:f8ets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fsets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結(jié)束標志,并以buf作為函數(shù)值返回。
11.Ascanf是格式輸入函數(shù),其中雙引號之間的內(nèi)容是格式控制字符串,后面是輸入?yún)?shù)列表。輸入?yún)?shù)列表中各項都必須是變量地址,所以選項C錯誤;在scanf函數(shù)的格式字符前,可以加入一個正整數(shù)指定輸入數(shù)據(jù)所占的寬度,但不可以對實數(shù)指定小數(shù)位的寬度,所以選項B、D錯誤。選項A是正確的,按照A的輸入格式,12345賦值給變量a,空格賦值給變量ch,678910.36賦值給變量d。故本題答案為A選項。
12.B子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第l次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。
13.C本題考查逗號表達式。程序輸出時輸出一個%d,所以輸出第一個a的值與后續(xù)無關。本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。
14.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。
15.D本題主要考查文件的操作。在本題的程序中,首先定義了一個無返回值的函數(shù)fun,該函數(shù)帶有兩個指針類型的形參,其中第一個形參指向需要被操作文件的文件名,而第二個形參指向被操作的字符串。在函數(shù)體中,首先定義一個文件指針,然后以只寫的方式打開第一個形參所指向的文件,接著執(zhí)行for循環(huán),循環(huán)結(jié)束的條件是循環(huán)變量小于被操作字符串的長度,循環(huán)體中的程序fputc(st[i],myf);的功能是將字符串中的當前字符輸入到文件中。由這些分析我們可以知道,函數(shù)fun的作用是將字符串的內(nèi)容寫入到文件中。
在主函數(shù)中,兩次調(diào)用函數(shù)fun,當?shù)谝淮握{(diào)用時,寫入文件的內(nèi)容為newworld,然后第二次調(diào)用函數(shù),此時打開文件,文件的指針重新回到開始,然后往文件中寫內(nèi)容“hello,”,由于此時文件中已經(jīng)有內(nèi)容“newworld”,則需要覆蓋前面一部分的內(nèi)容,因此,程序的最終輸出結(jié)果是hello,rld,本題的正確答案選D。
16.Cstrlen函數(shù)返回字符串的長度。求字符串長度時,遇到結(jié)束標識‘\\0’為止,但是長度不包括結(jié)束標識。字符數(shù)組s1的后5個元素沒有賦值,都為‘\\0’,即“abcd!”后為‘\\0’,所以“strlen(s1)”的值為5。字符指針s2所指向的字符串中,“\\n”為轉(zhuǎn)義字符,代表換行符,是1個字符,“\\\\”也為轉(zhuǎn)義字符,代表“\\”,也是1個字符,其后為字符串結(jié)束標識‘\\0’,所以“strlen(s2)”的值也為5。故本題答案為C選項。
17.D
18.D
19.A
20.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:
①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。21.longfun(char*s)}inti,len;Longsum=0;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-'0's++;}returnsum;}<len;i++)要把一個數(shù)字字符轉(zhuǎn)為相應的數(shù)字,只要將它的ASCII值減去48(或D1)即可。要把數(shù)字字符串轉(zhuǎn)為相應的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應數(shù)字,乘10再加上下一位數(shù)字。</len;i++)
22.
【解析】按照題目中要求求m以內(nèi)(不包括m)同時能被5與11整除的所有自然數(shù)之和的平方根s,需要判斷m以內(nèi)的所有整數(shù)是否能同時被5與11整除,首先求出同時能被5與
11整除的所有自然數(shù)之和,然后再求和的平方根,最后返回到主函數(shù)當中。
23.voidproc(char*str)
\n{
\nchar*p=str;
\nwhile(*p==*)p++;//通過p的移動來達到使p指向第一個不是*號的字符
\nfor(;*p!=\0;p++,str++)//把從第一個不是*號的字符放到a中
\n*str=*P:
\n*str=\0;//最后用\0作為字符串結(jié)束標志
\n}
\n【解析】題目中要求將字符串中的前導*號全部刪除,首先將指針P移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結(jié)束符。
\n
24.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;}本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進行指針運算。
25.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。上三角元素下標的特點是行下標小于等于列下標,即“i<=j”使用循環(huán)語句遍歷數(shù)組元素,第1個循環(huán)用于控制列坐標,第2個循環(huán)用于控制行下標。26.1voidfun(int*a,int*b)2{3inti,j;4for(j=0;j<M;j++)5b[j]==0;/*_且b初始化為0*/6for(i=0;i<N;i++)7if(a[i]>=100)8b[10]++;/*如果年齡大于等于100,b[lo]自增1*/9else10b[a[i]/10]++;/*如果年齡小于100,則將其分別統(tǒng)計到b[a[i]/10]中*/11}<m;j++)<n;i++)本題是一個分段函數(shù)的問題,用兩個循環(huán)來完成。第1個循環(huán)的作用是使數(shù)組b中的所有元素值都為0。這個循環(huán)不能省略,因為若未對數(shù)組b中的元素賦初值,則它們的值將是不可預測的。第2個循環(huán)的作用是分別統(tǒng)計數(shù)組a中各年齡段的人數(shù)。當a[i]>100時,按題意要將其統(tǒng)計到b[10]中。else的作用是如果年齡小于100,則將其分別統(tǒng)計到b[a[i]/10]中。由運算優(yōu)先級可知先進行a[i]/10的運算,所得結(jié)果作為b的下標。若a[i]為0~9,a[i]/10的值為0,且0?9歲的人數(shù)正好存入b[0]中。若a[i]為10~19,a[i]/10的值為1,且10~19歲的人數(shù)正好存入b[1]中,依此類推。</n;i++)</m;j++)
27.
28.
29.voidfun(STREC*a)
\n{
\ninti;
\na->ave=0.0;
\nfor(i=0;i<N;i++)
\na->ave=a->ave+a->s[i];
\n/*求各門課程成績的總和*/
\na->ave=a->ave/N;/*求平均分*/
\n}
\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。
\n
30.
【解析】要將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中,首先應該判斷大于整數(shù)m且緊靠m的整數(shù)是否為素數(shù)。將緊靠m且為素數(shù)的k個整數(shù)放入數(shù)組xx中。
31.(1)錯誤:t=1.0-1/i;正確:t-=1.0/i;(2)錯誤:;正確:returnt;(1)錯誤:t=1.0-1/i;正確:t-=1.0/i;\r\n(2)錯誤:;正確:returnt;解析:解答類似題目的思路是我們依然先從數(shù)學思路著手,即理解數(shù)學上的規(guī)律,再分析C語言的流程,本題中分母依等差數(shù)列遞增,最好用循環(huán)語句解決。我們先從第1句1/2的表達式來看起:當i從2(必須從2開始)開始循環(huán)的時候,雖然t=1.0-1/i;和t-=1.0/i;的第1個值都是相同的,但隨著循環(huán)的累加,我們就能發(fā)現(xiàn)問題所在了!
32.(1)intfun(intxintyintz)(2)returnj;(1)intfun(intx,inty,intz)(2)returnj;解析:本題中函數(shù)的功能是求三個數(shù)的最小公倍數(shù)。fun函數(shù)辛接收的值能同時被x、y、z除盡的最小數(shù)就是它們的最小公倍數(shù)。
33.(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])(1)for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)(2)if(t[j]>t[j+1])解析:本題中函數(shù)的功能是讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼升序排序后輸出。本題思路是利用字符串長度作為循環(huán)的控制條件,然后在循環(huán)過程中將字符按.ASCII碼排序。
34.(1)錯誤;voidfun(charstrcharch)正確:voidfun(char*strcharch)(2)錯誤:if(*str==ch)正確:if(*str=='\0')(3)錯誤;str[1]='0';正確:str[1]='\0';(1)錯誤;voidfun(charstr,charch)正確:voidfun(char*str,charch)\r\n(2)錯誤:if(*str==ch)正確:if(*str=='\\0')\r\n(3)錯誤;str[1]='0';正確:str[1]='\\0';解析:該題的重點就是在while的循環(huán)嵌套語句中,由題干信息“若相同,則什么也不做”很容易就能看出if(*str==ch)后面的執(zhí)行語句是錯誤的。另外,void指針具有一般性,它們可以指向任何類型的數(shù)據(jù)。但目前絕大多數(shù)C編譯所提供的這類函數(shù)都返回char指針,再由題目中的定義得出voidfun(charstr,charch)的錯誤信息;str[1]='0';是一個簡單的語法錯誤。
35.(1)t=1;(2)return(2*s);(1)t=1;(2)return(2*s);解析:該題中函數(shù)功能是根據(jù)公式計算π值。從已給定源程序的main.主函數(shù)開始入手,通過鍵盤輸入制定精度,然后通過“printf“\neps=%lf,Pi=%lf\n\n”,x,fun(x));”語句來調(diào)用fun函數(shù)。
36.(1)錯誤:if(i%k!=0)正確:if(i%k=0)(2)錯誤:if(k<i)正確:if(k>=i)(1)錯誤:if(i%k!=0)正確:if(i%k=0)\r\n(2)錯誤:if(k<i)正確:if(k>=i)解析:也許剛接觸C語言的學習者對素數(shù)的概念不清楚,在這里說明一下,素數(shù)就是質(zhì)數(shù),本題的任務是隨便輸入一個整數(shù)m,然后在m的后面尋找緊跟m的一個質(zhì)數(shù),作為函數(shù)值返回。
for(i=m+1;;i++){
是從m后面的一位開始循環(huán),將m后面一位的值賦予i。然后;我們依次判斷m后面的一位是否
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安裝工程分包合同范例
- 典當行借款合同范例
- 面包原料采購合同模板
- 保健品供應商分銷合同
- 展會服務合同中的展會承諾
- 干果選購合同解讀
- 域名解析服務合同案例分析
- 招標文件合同重要內(nèi)容
- 理發(fā)室承包合同示范文本
- 企業(yè)內(nèi)訓服務合同樣本
- 《中國古代文學史——第四編:隋唐五代文學》PPT課件(完整版)
- 中央企業(yè)開展網(wǎng)絡安全工作策略和方式
- 《美團外賣商家運營》PPT精選文檔
- 水泵與水泵站(水利)
- 《從百草園到三味書屋》閱讀理解題
- 人教版三年級數(shù)學上冊《第5單元 知識梳理和綜合提升》作業(yè)課件PPT優(yōu)秀教學課件
- 涂色畫簡筆畫已排可直接打印涂色
- 空調(diào)維修派工單(共1頁)
- 運動場監(jiān)理大綱
- 部編本語文八年級上全冊文言文課下注釋
- 十二種健康教育印刷資料
評論
0/150
提交評論