2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2022年安徽省滁州市全國計算機等級考試C語言程序設(shè)計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、2.填空題(10題)1.已知字母A的ASCII碼為65。以下程序運行后的輸出結(jié)果是______。

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

printf("%d%c\n",a,B);

}

2.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。

3.在ER圖中,矩形表示【】。

4.下列程序的運行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

printf("%d\n",c);

}

5.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

6.以下程序的運行結(jié)果是______。

structexmp{charname[10];

intnumber;

};

structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};

main()

{printf("%c,%s\n",test[0].name[1],test[2].name+3);

}

7.下列程序的輸出結(jié)果是______。

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

printf("%d\n",z);

}

8.耦合和內(nèi)聚是評價模塊獨立性的兩個主要標準,其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

9.以下程序的運行結(jié)果是______。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

for(i=0;i<3;i++)printf("%d,",a[i]);

pfintf("\n",);}

10.數(shù)據(jù)管理技術(shù)發(fā)展過程經(jīng)過人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段,其中數(shù)據(jù)獨立性最高的階段是______。

二、單選題(10題)11.有以下程序:#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));}程序運行后的輸出結(jié)果是()。

A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4

12.

13.十六進制數(shù)BB轉(zhuǎn)換成十進制數(shù)是()

A.192B.256C.187D.121

14.結(jié)構(gòu)化程序設(shè)計方法的3種基本控制結(jié)構(gòu)中不包括

A.循環(huán)結(jié)構(gòu)B.遞歸結(jié)構(gòu)C.順序結(jié)構(gòu)D.選擇結(jié)構(gòu)

15.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結(jié)果是()。A.35B.37C.39D.3975

16.設(shè)有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項中,表達式的值為6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

17.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復(fù)制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

18.

19.若有說明chars1[30]="abc",s2[]="defghi";,則在使用函數(shù)strcat(s1,s2)后,結(jié)果是()。

A.s1的內(nèi)容更新為abcdefghi

B.s1的內(nèi)容更新為defghi\0

C.s1的內(nèi)容更新為defghiabc\0

D.s1的內(nèi)容更新為abcdefghi\0

20.循環(huán)隊列存儲在數(shù)組A[0..m]中,則入隊時的操作為()。

A.rear=rear+1

B.rear=(rear+1)mod(m-1)

C.rear=(rear+1)modm

D.rear=(rear+1)mod(m+1)

三、程序設(shè)計題(10題)21.請編寫函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的字符數(shù)據(jù),按列的順序依次放到一個字符串中。例如,若二維數(shù)組中的數(shù)據(jù)為:

WWW

SSS

HHH

III

則字符串中的內(nèi)容應(yīng)是WSHIWSHIWSHI。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。

試題程序:

22.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無紙化考武題庠請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序: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}

23.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個數(shù),并返回此值。

例如,若輸入字符串123412132,輸入字符為l,則輸出3。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

24.請編寫函數(shù)proc(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

25.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

26.數(shù)組point中存放著m個人的成績,請編寫函數(shù)fun().它的功能是:返回高于平均分的人數(shù),并將高于平均分的分數(shù)放在high所指的數(shù)組中。例如,當point數(shù)組中的數(shù)據(jù)為50,60,65,70.75,80.88,90,95時,函數(shù)返回的人數(shù)應(yīng)該是5,high中的數(shù)據(jù)應(yīng)為75,80,88,90,95。請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。注意:部分源程序給出如下。試題程序:

27.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}

28.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

29.請編寫函數(shù)proc(),其功能是:利用以下所示的簡單迭代方法求方程cos(x)-x=0的一個實根。

xn+1=COS(xn)

迭代步驟如下:

(1)取x1初始值為0.0;

(2)x0=x1,把?X1的值賦給x0;

(3)x1=cos(xO),求出一個新的x1;

(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。

程序?qū)⑤敵鼋Y(jié)果root=0.739085。

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。

試題程序:

30.從鍵盤上輸出10個整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。

四、2.程序修改題(10題)31.下列給定程序中函數(shù)fun()的功能是:從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當s中的數(shù)為7654321時,t中的數(shù)為642。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

/*************found**************/

voidfun(longs,longt)

{longs1=10;

s/=10;

*t=s%10;

/*************found**************/

while(s<0)

{s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

printf("Theresultis:%ld\n",t);

}

32.下列給定程序中,函數(shù)fun()的功能是逐個比較a,b兩個字符串對應(yīng)位置中的字符,把ASCII值小或相等的字符依次存放到c數(shù)組中,形成一個新的字符串。

例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字符串應(yīng)為fdAADf。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<strinq.h>

voidfun(char*p,char*q,char*c)

{intk=0;

while(*p||*q)

/**********found**************/

{if(*p<=*q)

c[k]=*q;

elsec[k]:*p;

if(*p)p++;

if(*q)q++;

/**+**********found**************/

k++

}

}

main()

{chara[10]="fshADfg",b[10]="sdAEdi",

c[80]={'\0');

fun(a,b,c);

printf("Thestringa:");puts(a);

printf("Thestringb:");puts(b);

printf("Theresult:");puts(c);

}

33.下列給定程序中,函數(shù)fun()的功能是:從n個學生的成績中統(tǒng)計出低于平均分的學生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學生的成績:

80.5607290.59851.58864

則低于平均分的學生人數(shù)為4(平均分為75.5625)。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*s,ihtn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

for(k=0;k<n;k++)

/*************found**************/

t=s[k];

ave=t/n;

for(i=0;i<n;i++)

if(s[i]<ave)count++;

/*************found**************/

*aver=&ave;

returncount;

}

main()

{floats[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:");scanf

("%d",&m);

printf("\nPleaseenter%dmark:\n",m);

for(i=0;iprintf("\nThenumberofstudents:

%d\n",fun(s,m,&aver));

printf("Ave=%f\n",aver);

}

34.下列給定程序中函數(shù)fun()的功能是:求出字符串中最后一次出現(xiàn)的子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(shù)值為NULL。例如,當字符串中的內(nèi)容為abcdabfabcdx,t中的內(nèi)容為ab時,輸出結(jié)果應(yīng)是abcdx。當字符串中的內(nèi)容為abcdabfabcdx,t中的內(nèi)容為abd時,則程序輸出未找到的信息:Notfound!

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#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;

}

main()

{chars[100],t[100],,*p;

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

printf("\nPleaseentersubstringt:");

scanf("%s",t);

p=fun(S,t);

if(p)printf("\nTheresultis:%s\n",p);

elseprintf("\nNotfound!\n");

}

35.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量s中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當s中的數(shù)為:7654321時,t中的數(shù)為:642。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

[試題源程序]

#include<stdio.h>

/************found************/

voidfun(longs,longt)

{

longs1=10;

s/=10;

*t=s%10;

/************found************/

while(s<0)

{

s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

mein()

{

longs,t;

printf("\nPleaseenters:");

scanf("%1d",&s);

fun(s,&t);

printf("Theresultis:%1d\n",t);

}

36.下列給定的程序中,函數(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);

}

37.下列給定程序中,函數(shù)fun()的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼降序排序后輸出。

例如:輸入dafhc,則應(yīng)輸出hfdca。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,敢不得更改程序的結(jié)構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

/*************found**************/

intfun(chart[])

{

charc;

inti,j;

for(i=0;i<strlen(t)-1;i++)

for(j=i+1;i<strlen(t);j++)

if(t[i]<t[j])

{

c=t[j];

/*************found**************/

t[i]=t[i++];

t[i]=c;

}

}

main()

{

chars[81];

clrscr();

printf("\nPleaseenteracharacter

string:");

gets(s);

printf("\n\nBeforesorting:\n%S",s);

fun(s);

printf("\nAftersortingdecendingly:\n

%s",s);

}

38.下列給定程序中函數(shù)fun()的功能是計算正整數(shù)num的各位上的數(shù)字之平方和。

例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

longfun(longnum)

{

/*+**+*+*+*found************/

longk=1;

do

{

k+=(num%10)*(num%10);

num/=10;

/*********+found*+**+*+******/

}while(num)

return(k);

}

main()

{

longn;

clrscr();

printf("\Pleaseenteranumber:");

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

39.下列給定程序中,函數(shù)fun()的功能是:從n個學生的成績中統(tǒng)計出高于平均分的學生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如輸入8名學生的成績:

8565.56995.5875562.575

則高于平均分的學生人數(shù)為4(平均分為74.312500)。

請改正程序中的錯誤,使它能得到正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*S,intn,float*aver)

{

/*************found*************/

intave,t=0;

intcount=0,k,i;

for(k=0;k<n;k++)

t+=s[k];

ave=t/n;

for(i=0;i<n;i++)

/*************found***************/

if(s[i]<ave)

count++;

/*************found*************/

aver=ave;

returncount;

}

main()

{

floatS[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:");

scanf("%d",&m);

printf("\nPleaseenter%dmark:\n",m);

for(i=0;i<m;i++)

scanf("%f",s+i);

printf("\nThenumberofstudents:%d\n",

fun(S,m,&aver));

printf(“AVe=%f\n”,aver);

}

40.下列給定的程序中,函數(shù)hn()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。

請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<math.h>

voidfun(inta,int*b,int*c)

{inti,j,d,y;

for(i=3;i<=a/2;i=i+2)

/*************found**************/

{y=0;

for(j=2;j<=sqrt((double)i);j++)

if(i%j==0)y=0;

if(y==1)

/*************found**************/

{d=i-a;

for(j-2;j<=sqrt((double)d);

j++)

if(d%j==0)y=0;

if(y=-1)

{*b=i;*c=d;}

}

}

}

main()

{inta,b,c;

do

{printf("\nInputa:");

scanf("%d",&a);}

while(a%2);

fun(a,&b,&c);

printf("\n\n%d=%d+%d\n",a,b,c);

}

五、程序改錯題(2題)41.下列給定程序中,函數(shù)proc()的功能是:給定n個實數(shù),輸出平均值,并統(tǒng)計平均值以上(含平均值)的實數(shù)個數(shù)。

例如,n=8時,輸入90.009,179.623,167.575,100.051,6.092,154.986,12.432,45.765,所得平均值為94.566635,在平均值以上的實數(shù)個數(shù)應(yīng)為4。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

42.給定程序MODll.C中,函數(shù)fun的功能是:在有n名學生,2門課成績的結(jié)構(gòu)體數(shù)組std中,計算出第l門課程的平均分,作為函數(shù)值返回。例如,主函數(shù)中給出了4名學生的數(shù)據(jù),則程序運行的結(jié)果為:第l門課程的平均分是:76.125000請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、操作題(2題)43.當m=1,n=2,a=3,b=2,c=4時,執(zhí)行d=(m=a!=B)&&(n=b>C)后,m的值為()。

44.以下程序的輸出結(jié)果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

參考答案

1.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一個整數(shù),因此字符型變量的算術(shù)運算和整型變量并無區(qū)別。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分別按十進制整數(shù)和字符形式輸出a和b的值為:67G。

2.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。

3.實體實體解析:在E-R圖中用矩形表示實體;橢圓形表示屬性;菱形表示聯(lián)系。

4.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結(jié)果為5。

5.模塊化模塊化

6.aua。a,ua。解析:test是結(jié)構(gòu)體數(shù)組,每個元素均可看作是一個結(jié)構(gòu)體變量,主函數(shù)將結(jié)構(gòu)體數(shù)組元素test[0]中的name域下標為1的元素以字符形式輸出,將結(jié)構(gòu)體數(shù)組元素test[2]中的name域從地址name+3開始以字符串的形式輸出。

7.11解析:ifelse語句的功能是:若表達式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

8.內(nèi)聚內(nèi)聚

9.本題主要考查for循環(huán)語句的使用以及靜態(tài)局部變量的特點。

10.數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫系統(tǒng)階段或數(shù)據(jù)庫或數(shù)據(jù)庫階段或數(shù)據(jù)庫管理技術(shù)階段數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫系統(tǒng)階段或數(shù)據(jù)庫或數(shù)據(jù)庫階段或數(shù)據(jù)庫管理技術(shù)階段解析:在數(shù)據(jù)庫系統(tǒng)管理階段,數(shù)據(jù)是結(jié)構(gòu)化的,是面向系統(tǒng)的,數(shù)據(jù)的冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性,同時提高了數(shù)據(jù)的可擴充性和數(shù)據(jù)應(yīng)用的靈活性;數(shù)據(jù)具有獨立性,通過系統(tǒng)提供的映象功能,使數(shù)據(jù)具有兩方面的獨立性:一是物理獨立性,二是邏輯獨立性;保證了數(shù)據(jù)的完整性、安全性和并發(fā)性-綜上所述,數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)管理階段。

11.Astrlen函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束標識“\\0”)sizeof函數(shù)求得特定類型參數(shù)所占存儲空間的長度。題干中a是數(shù)組名,由于定義時省略維數(shù)大小,因此數(shù)組大小是初始化的字符個數(shù),即a的數(shù)組大小為6。綜上,strlen(a)只計算字符“T”“H”“I”“S”,結(jié)果為4;sizeof(a)求得數(shù)組a的大小,結(jié)果為6;指針b指向一個字符串“OK\\0\\0”,所以strlen(b)只計算字符“O”“K”,結(jié)果為2;sizeof(b)求得指針占用存儲空間的大小,結(jié)果為4。故本題答案為A選項。

12.D

13.C

14.B解析:本題考查了程序的基本結(jié)構(gòu)。程序由一些基本結(jié)構(gòu)組成。任何一個大型的程序都由3種基本結(jié)構(gòu)組成,由這些基本結(jié)構(gòu)順序的構(gòu)成了一個結(jié)構(gòu)化的程序。這3種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

15.D執(zhí)行第一次for循環(huán)時,用表達式p[i][J]!=\o來判斷字符串數(shù)組指針P是否到達字符串的結(jié)尾,如果沒有到達,繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][j]-\o)除2的余數(shù)不為0時,即字符串所有奇數(shù),執(zhí)行后面的語句。所以退出第1次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進行處理,輸出結(jié)果為5,因而最后輸出結(jié)果為3975。

16.A本題考查數(shù)組和指針,*k指針是指向rn數(shù)組的首地址,所以要使表達武的值為6,只需要指針指向第m[2],所以答案選擇A。-

17.C

18.D

19.D解析:strcat(s1,s2)是把s2字符串連接到s1字符串的末尾,要保證s1能容納下連接后的字符串。

20.D

21.

(2)錯誤:if(*r==0)

正確:if(*r==ˊ\0ˊ)

【解析】由于后面的語句控制變量r是指向字符串t的指針,而不是指向字符串str的指針,因此,“r=p;”應(yīng)改為“r=t;”。while循環(huán)結(jié)束后,如果r指向字符串t的結(jié)束符,證明字符串str中包含一個t字符串,因此,“if(*r=0)”應(yīng)改為“if(*r==ˊ\0ˊ)”。

22.1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p指向字符串末尾,并統(tǒng)計字符數(shù)*/6{7n++8P++;10}10for(i=0;i23.

【考點分析】

本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串是否結(jié)束。

【解題思路】

從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當前字符不是‘\0’,判斷語句用來判斷當前字符是否為指定字符。最后返回指定字符的個數(shù)。

24.

【解析】矩陣與其逆置矩陣的關(guān)系為:逆置矩陣中某一位置上的元素值為原矩陣中,行下標與列下標互換后的位置上的元素。根據(jù)這個特點求出各個位置上逆置矩陣中對應(yīng)的值,進行相加并放在該位置上。

25.

【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)組pp中相應(yīng)的元素加1。

26.

【解析】(1)該程序功能是返回高于平均分的人數(shù)。它的解題思路可以分解為以下幾步:求總分一求平均分一元素逐個與平均分比較一統(tǒng)計高于平均分的人數(shù)。

(2)從已給部分源程序的main()函數(shù)開始入手,核心函數(shù)fun(point,9,high)中的參數(shù)由題目可知,point存放著m個人的成績,high存放著高于平均分的分數(shù)。另外,根據(jù)point的定義,可知9為point數(shù)組中元素的個數(shù),傳給函數(shù)funee的參數(shù)n。

27.intfun(inta[][m]){inti,j,max=a[0][0];/*對二維數(shù)組進行遍歷*/for(i=0;i<2;i++)for(j=0;j<=""p="">if(max<a[i][j])<p=""></a[i][j])<>/*將最大值保存在max中*/max=a[i][j];returnmax;}因為數(shù)組是二維數(shù)組,所以應(yīng)使用兩層for循環(huán)嵌套。使用for循環(huán)語句時需注意循環(huán)變量的取值范圍。此類求最大值或最小值的問題,可以采用逐個比較的方式。遍歷數(shù)組中所有元素,從中找出數(shù)組的最大值或最小值。首先定義變量max來存放數(shù)組的第1個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元素,并與變量max比較。如果元素值大于max,則將該值賦給max。循環(huán)結(jié)束后max的值即為數(shù)組最大值。最后將該值返回。該類題目考查較多,需要掌握逐個比較的方法。對于m*n二維數(shù)組,采用逐個查找的方法,代碼實現(xiàn)如下:for(i=0;i<=""p="">for(j=0;j<=""p="">…

28.

【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找出每一行中的最大元素,放入一維數(shù)組pp中,最后返回到主函數(shù)當中。

29.

【解析】本題比較簡單,因為題目中已經(jīng)給出了算法,只要把題目中的說法轉(zhuǎn)換成C語言表達式基本上就出來了,本題最好用do-while循環(huán)來做,但要注意循環(huán)終止的條件。

30.\n#include'stdio.h'

\nmain

\n{inti,j,a[10];

\nfor(i=1;i<=10;i++)

\nscanf('%d',&a[i]);

\nfor(i=0;i<9=;i++)

\nfor(j=9;j>i;j--)

\nif(a[j-1]{t=a[j-1];

\na[j-1]=a[j];

\na[j]=t;}

\nfor(i=0;i<10;i++)

\nprintf('%d',a[i]);

\n}

\n

31.(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)(1)錯誤:voidfun(longs,longt)正確:voidfun(longs,long*t)\r\n(2)錯誤:while(s<0)正確:while(s>0)解析:本題考查函數(shù)調(diào)用方式和while循環(huán)語句中條件限制的方法。主函數(shù)中fun()的調(diào)用方式說明fun()函數(shù)的參數(shù)應(yīng)當為指針類型,所以voidfun(longs,longt)正確的寫法應(yīng)該是voidfun(longs,long*t)。

32.(1)錯誤:{if(*P<=*q)正確:{if(*p>=*q)(2)錯誤:k++正確:k++;(1)錯誤:{if(*P<=*q)正確:{if(*p>=*q)\r\n(2)錯誤:k++正確:k++;解析:錯誤1:依題意,把ASCII值小或相等的字符存放到c數(shù)組中,故if語句的關(guān)系運算符應(yīng)為“>=”。錯誤2:C語言規(guī)定,每個語句要用分號結(jié)束。

33.(1)錯誤:t=s[k];正確:t+=s[k];(2)錯誤:*aver=&ave;正確:*aver=ave;(1)錯誤:t=s[k];正確:t+=s[k];\r\n(2)錯誤:*aver=&ave;正確:*aver=ave;解析:根據(jù)題目要求,可利用循環(huán)語句,累計計算n個學生的總分;求得平均成績后,再利用循環(huán)語句和條件選擇語句。若小于平均值,則將該值存放于aver存儲單元中。t=s[k];是循環(huán)疊加錯誤,*aver=&ave;中為語法錯誤。

34.(1)錯誤:a=NuLL;正確:a=NULL;(2)錯誤;if(r==p){r++;p++;}正確:if(*r==*p){r++;p++;}(1)錯誤:a=NuLL;正確:a=NULL;\r\n(2)錯誤;if(r==p){r++;p++;}正確:if(*r==*p){r++;p++;}解析:題目要求將最后一次出現(xiàn)的輸入字符后面的字符串做一復(fù)制處理,并在主函數(shù)中輸出從此地址開始的字符串。a=NuLL;是明顯的常識性錯誤。題目中已經(jīng)定義了指針變量chaf*p,*r,*a;,循環(huán)條件應(yīng)該是if(*r==*p){r++;p++;},而非iRf(r==p){r++;p++;}。

35.(1)錯誤:voidfun(longslongt)正確:voidfun(longslong*t)(2)錯誤:while(s<0)正確:while(s>0)(1)錯誤:voidfun(longs,longt)\r\n正確:voidfun(longs,long*t)\r\n(2)錯誤:while(s<0)\r\n正確:while(s>0)解析:錯誤1:在函數(shù)fun體中,t是一個指針型變量,由C的基礎(chǔ)知識我們可以知道,定義形參時也應(yīng)定義指針。

錯誤2:由題目可以知道,此處條件應(yīng)該s>0,所以這里應(yīng)改為:while(s>0)。

36.(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)嵌套語句中,

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論