版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2021年江蘇省徐州市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、2.填空題(10題)1.在關(guān)系運(yùn)算中,【】運(yùn)算是對兩個具有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。
2.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控制。
3.已知字母A的ASCII碼為65。以下程序運(yùn)行后的輸出結(jié)果是______。
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,B);
}
4.下面程序的輸出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
5.若有定義inta=10,b=9,c=8;,接著順序執(zhí)行下列語句,變量b中的值是【】。
c=(a-=(b-5));
c=(a%11)+(b=3);
6.若已知a=10,b=20,則表達(dá)式!a<b的值為【】。
7.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>
#include<string.h>
main()
{infi,j,[13];charstr[]={"1234567"};
for(i=0,j=strlen(str)[14];i<j;i++,j--)
{k=str[i];str[i]=str[i];str[j]=k;}
printf("%s\n",str);}
8.fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大數(shù),再求這N個最大值中最小的那個數(shù)并作為函數(shù)值返回。請?zhí)羁铡?/p>
#include<stdio.h>
#defineN100
intfun(int(*a)[N])
{introw,col,max,min;
for(row=0;row<N;row++)
{for(max=a[row][0],col=1;col<N;col++)
if(【】)max=a[row][col];
if(row==0)min=max;
elseif(【】)min=max;
}
returnmin;
}
9.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
10.表示""整數(shù)x的絕對值大于5""時值為""真""的C語言表達(dá)式是【】。
二、單選題(10題)11.以下程序的輸出結(jié)果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12
12.數(shù)據(jù)處理的最小單位是()。
A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項D.數(shù)據(jù)結(jié)構(gòu)
13.設(shè)有如下定義和語句:FILE*fp;intdata[10],i,n;fp=fopen(“abc.txt”,“r”);文本文件abc.txt中的數(shù)據(jù)為58192765190,其中第1個數(shù)據(jù)代表的是它后面數(shù)據(jù)的個數(shù)。若文件已正確打開,則以下程序段中能將文件的最后5個數(shù)據(jù)依次正確讀入數(shù)組data[0]~data[4]中的是()。
A.fscanf(fp,“%d”,&n);for(i=0;i<n;i++)fscanf(fp,“%d”,&data[i]);
B.i=0;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}
C.for(i=0;!feof(fp);i++)fscanf(fp,“%d”,&data[i]);
D.i=0;fscanf(fp,“%d”,&n);i++;while(!feof(fp)){fscanf(fp,“%d”,&data[i]);i++;}
14.(7-6-3-5-4-1-2)堆排序,升序排列,3的位置改變幾次()
A.1B.2C.3D.4E.5F.6
15.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5
16.以下不能作為合法常量的是()。
A.'cd'B.1.234e04C.”\a”D.'\011'
17.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。
A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里
B.程序順序結(jié)構(gòu)對于此段程序是從左至右依次執(zhí)行的
C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”
D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和b值的交換
18.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關(guān)于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次
B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時不做任何操作
D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時結(jié)束程序運(yùn)行
19.為非法的字符串常量()。A.“case”B.“”C.”056”D.‘123’
20.有以下定義和語句:structworkers{intnum;charname[20];charC;struct{intday;intmonth;intyear;)S;};structworkersw,*pw;pw=&w;能給w中year成員賦1980的語句是()。A.*pw.year=1980;
B.w.year=1980;
C.pw->year=1980
D.w.S.year=1980;
三、程序設(shè)計題(10題)21.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式的值。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+m)
例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=1.904762。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
22.n個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功能是將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,84,60,76,100}時,函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為40565960。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
23.請編一個函數(shù)voidproc(inttt[M][N],intpp[N]),tt指向一個M行N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。
試題程序:
24.使用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));}
25.請編寫函數(shù)fun,其功能是:找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
26.N名學(xué)生的成績已在主函數(shù)中放人一個帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)值返回。
例如,若學(xué)生的成績是:8576698591726487,則平均分應(yīng)當(dāng)是:78.625。注意:部分源程序在文件PROGl.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填人你編寫的若干語句。
27.假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:
28.編寫函數(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()的花括號中填入所編寫的若干語句。試題程序:
29.請編寫函數(shù)proc,該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。
例如,若二維數(shù)組中的數(shù)據(jù)為
13233343
14243444
15253545
則一維數(shù)組中的內(nèi)容應(yīng)該是132333431424344415253545。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)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[l00]={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");
}
30.請編寫函數(shù)proc(),對長度為9個字符的字符串,除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。例如,原來的字符串為HabcdefA,則排序后輸出為HfedcbaA。注意:部分源程序給出如下。請勿改動main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()中填入所編寫的若干語句。試題程序:
四、2.程序修改題(10題)31.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為偶數(shù)的數(shù)依次逆向取出,構(gòu)成一個新數(shù)放在t中。高位在低位,低位在高位。例如當(dāng)s中的數(shù)為25846513時,t中的數(shù)為6482。請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(longS,long*t)
{
intd;
longsl=l,i=1;
*t=0;
while(s/i>0)
i=i*10;
i=i/10;
while(s>0)
{
d=s/i
/*************found*************/
if(d%2!=0)
{
/*************found*************/
t=d*sl+t;
sl*=l0;
}
S=S%i;
i=i/10;
}
}
main()
{
longS,t;
clrscr();
printf("\nPleaseenterS:");
scanf("%ld",&s);
fun(S,&t);
printf("Theresultis:%ld\n",t);
}
32.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出"ab,cd"。
請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。
注童:不要改動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));
}
33.下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由小到大的順序進(jìn)行排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineMAXLINE20
/*************found**************/
fun(char*pstr[6])
{inti,j;
char*p;
for(i=0;i<5;i++)
{for(j=i+l;j<6;j++)
/*************found**************/
{if(strcmp(*(pstr+i),pstr+j)>0)
{
p=*(pstr+i);
/*************found**************/
*(pstr+i)-pstr+j;
*(pstr+j)=p;
}
}
}
}
main()
{inti;
char*pstr[6],str[6][MAXLINE];
clrscr();
for(i=0;i<6;i++)pstr[i]=str[i];
printf("\nEnter6string(1stringateach
line):\n");
for(i=0;i<6;i++)scanf("%s",pstr[i]);
fun(pstr);
printf("Thestringsaftersorting:\n");
for(i=0;i<6;i++)printf("%s\n",pstr[i]);
}
34.下列給定程序中,是建立一個帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。
請改正程序指定部位的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<stdio.h>
#include<stdlib.h>
typedefstructaa
{
intdata;
structaa*next;
}NODE;
fun(NODE*h)
{
intmax=-1;
NODE*p;
/***********found************/
p=h;
while(p)
{
if(p->data>max)
max=p->data;
/************found************/
p=h->next;
}
returnmax;
}
outresult(ints,FILE*Pf)
{
fprintf(pf,"\nThemaxinlink:%d\n",s);
}
NODE*creatlink(intn,intm)
{
NODE*h,*p,*s,*q;
inti,x;
h=p=(NODE*)malloc(sizeof(NODE));
h->data=9999;
for(i=1;i<=n;i++)
{
s=(NODE*)malloc(sizeof(NODE));
s->data=rand()%m;s->next=p->next;
p->next=s;p=p->next;
}
p->next=NULL;
returnh;
}
outlink(NODE*h,FILE*pf)
{
NODE*p;
p=h->next;
fprintf(Pf,"\nTHELIST:\n\nHEAD");
while(P)
{
fprintf(pf,"->%d",P->datA);p=p->next;
}
fprintf(pf,"\n");
}
main()
{
NODE*head;intm;
head=cteatlink(12,100);
outlink(head,stdout);
m=fun(head);
printf("\nTHERESULT"\n");
outresult(m,stdout);
}
35.給定程序中,函數(shù)fun()的功能是:求輸入的兩個數(shù)中較小的數(shù)。
例如:輸入510,結(jié)果為minis5。
請改正fun()程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序、
#include<stdio.h>
#include<conio.h>
/*************found**************/
intfun(intx,y)
{intz;
z=x<y?x:y;
return(z);
}
main()
{inta,b,c;
scanf("%d,%d\n",&a,&b);
c=fun(a,b);
printf("minis%d",c);
}
36.給定程序MODll.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為對應(yīng)小寫字母;若小寫字母為a~u,則將其轉(zhuǎn)換為其后的第5個字母;若小寫字母為v~z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換為小寫字母b。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
37.下列給定程序中,函數(shù)fun()的功能是;利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭兩個元素進(jìn)行排序,然后把第3個字符插入到前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入到前3個字符中,待排序的字符串已在主函數(shù)中賦予。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<String.h>
#include<stdio.h>
#defineN80
voidinsert(char*aa)
{ihti,j,n;charch;
n=strlen(aa);
for(i=1;i<n;i++)
/**********************************/
{c=aa[i];
j=i-1;
while((j>=0)&&(ch<aa[j]))
{aa[j+l]=aa[j];
j--;
}
aa[j+l]=ch;
}
}
main()
{chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ";
inti;
printf("Theoriginalstring:%s\n",a);
insert(a);
printf("Thestringaftersorting:
%s\n\n",a);
}
38.下列給定程序中,函數(shù)fun()的功能是::求k!(k<13),所有階乘的值作為函數(shù)值返回。例如:若k=10,則應(yīng)輸出3628800。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更
改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
longfun(intk)
{
/*************found**************/
ifk>0
return(k*fun(k-l));
/*************found**************/
elseif(k=0)
return1;
}
main()
{intk=10;
clrscr();
print,("%d!=%1d\n",k,fun(k));
}
39.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值縮小5倍。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
floatm[10];
/*************found**************/
intfun(void)
{
intj;
printf("Insubfuncaftercalling\n");
for(j=O;j<lO;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("\nInmainaftercalling\n");
for(i=O;i<10;i++)
printf("%f",m[i]/5);
}
40.下列給定程序中,函數(shù)fun()的功能是;求S的值。設(shè)S=(22/1*30))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-1)*(2k+1))
例如,當(dāng)k為10時,函數(shù)的值應(yīng)為1.533852。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注童;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
/**************found***************/
fun(intk)
{ihtn;floats,w,p,q;
n=1;
s=1.0;
while(n<=k)
{w=2.0*n;
p=w-1.0;
q=w+1.0;
s=s*w*w/p/q;
n++;
}
/***************found**************/
returns
}
main()
{clrscr();
printf("%f\n",fun(10));
}
五、程序改錯題(2題)41.下列給定程序中,函數(shù)fun的功能是:計算整數(shù)n的階乘。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
42.下列給定程序中,fun()函數(shù)的功能是:求3個數(shù)的最小公倍數(shù),例如,給變量a、b、c、分別輸入15、11、2,則輸出結(jié)果應(yīng)當(dāng)是330。請修改函數(shù)中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.請補(bǔ)充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如果這個數(shù)是負(fù)數(shù),則取它的絕對值,并顯示出來。例如,輸入:-123456,結(jié)果為:123456。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達(dá)式或語句。試題程序:
44.下列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平方根。求平方根的迭代公式如下:
例如,2的平方根為1.414214。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
/*************found**************/
fun(doublea,doublex0)
{doublexl,y;
xl=(x0+a/x0)/2.0;
/*************found**************/
if(fabs(xl-x0)>0.00001)
y=fun(a,xl);
elsey=x1;
returny;
}
main()
{doublex;
printf("Enterx:");scanf("%1f",&x);
printf("Thesquarerootof%1fis%1f\n",
x,fun(x,l.O));
}
參考答案
1.自然連接自然連接解析:在關(guān)系運(yùn)算中,自然連接運(yùn)算是對兩個具有公共屬性的關(guān)系所進(jìn)行的運(yùn)算。
2.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。
3.67G67G解析:字符型變量中保存的是某個字符的ASCII碼值,是一個整數(shù),因此字符型變量的算術(shù)運(yùn)算和整型變量并無區(qū)別。所以。a='A'+'5'-'3'='A'+('5'='3')='A'+2=65+2=67:b=a+'6'='2'='C'+('6'-'2')='C'+4='G'。最后分別按十進(jìn)制整數(shù)和字符形式輸出a和b的值為:67G。
4.1212解析:本題通過第一個for循坪將數(shù)組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為12,具體分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
5.33解析:這里:b-5=4,a-=4之后a的值為6,并把它賦給c。此時b的值并未被改變。在第2個表達(dá)式中,也只有賦值表達(dá)式b=3改變了b的值。所以兩行語句執(zhí)行完畢,b的值應(yīng)該為3。
6.11解析:計算表達(dá)式!a<b,先計算!a,因a的值為10,!a的值為0,而關(guān)系表達(dá)式0<20為真,所以表達(dá)式!a<b的值為1。
7.顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標(biāo)變量i和j,i是前端元素的下標(biāo),j是后端元素的下標(biāo),交換以這兩個變量值為下標(biāo)的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(biāo)(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j字符串末元素的下標(biāo)是它的長度減1,所以在第二個空框處應(yīng)填入-1。程序為了交換str[i]和str[j],使用了變量k,該變量應(yīng)在程序的變量定義部分中—起定義,所以在第—個空\r\n\r\n
8.a[row][c01]>max或max<a[row][co1]max<min或min>maxa[row][c01]>max或max<a[row][co1]\r\nmax<min或min>max解析:本題有兩層for循環(huán),函數(shù)首先定義了整型變量row、col、max和min,其中row用于外循環(huán)的循環(huán)變量,col用于內(nèi)循環(huán)的循環(huán)變量,max記錄每行中的最人值,min記錄所有行最大值中的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0個元素值,然后從第一個開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個空應(yīng)該填a[row][co1]>max或max<a[row][co1)。退出內(nèi)循環(huán),在第一次退出內(nèi)循環(huán)時,將min賦初值為第0行的max,然后在每次退出內(nèi)循環(huán)時,將min和每行的max比較,如果大于max,則將max值賦min,所以第二個空應(yīng)該填max<min或min>max,當(dāng)退出外循環(huán)時,rain為所有行中的最大值的最小值。
9.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。
本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;
數(shù)據(jù)類型標(biāo)識符(*指針變量名)();
“數(shù)據(jù)類型標(biāo)識符”表示函數(shù)返回值的類型。
函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。
10.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整數(shù)x的絕對值大于5,則x大于5或x小于5,用C語言表示即為:x>5||x<-5或者x<-5||x>5。故本題答案為;x>5||x<-5或者x<-5||x>5。
11.DM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。
12.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計算機(jī)識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運(yùn)算。故正確答案為選項C)。
13.A由題意可知,文件abc.txt中存放了6個整數(shù)。其中第1個表示后續(xù)數(shù)據(jù)的個數(shù)。要將最后5個數(shù)據(jù)讀入數(shù)組data中,需要讀取數(shù)據(jù)的個數(shù)為5,所以首先調(diào)用fscanf函數(shù),將5讀入整型變量n中;接著通過for循環(huán),i分別取值0~n-1,調(diào)用fscanf函數(shù)將n個整數(shù)讀入data[0]~data[n-1]中。故本題答案為A選項。
14.B
15.D
16.A字符常量是使用單引號標(biāo)注的單個字符,選項A錯誤;選項B屬于浮點(diǎn)數(shù)常量,正確;選項C屬于轉(zhuǎn)義字符常量,正確;選項D屬于轉(zhuǎn)義字符,代表八進(jìn)制數(shù)011的ASCII值的字符,正確。本題答案為A選項。
17.BC語言允許將多條語句寫在一行,選項A錯誤;題干中的語句是從左至右依次執(zhí)行的,選項B正確,選項C錯誤。題干中的程序前兩個分號改成逗號,就構(gòu)成了逗號表達(dá)式。逗號表達(dá)式會依次從左到右計算各個表達(dá)式,整個表達(dá)式的值是最后一個表達(dá)式的值,所以此例也可以實現(xiàn)a和b值的交換,選項D錯誤。故本題答案為B選項。
18.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數(shù)器,程序是從中隨機(jī)抽取一個數(shù),然后對5進(jìn)行求余再輸出,共抽取8個數(shù)。所以答案為A。
19.D
20.D結(jié)構(gòu)workers中的成員s是一個嵌套的結(jié)構(gòu)類型定義,因此在給year賦值時,要用“.”運(yùn)算在深入一層訪問到最基本的成員year,只有D項反映出了這一點(diǎn)。
21.
【解析】由題目中所給公式可知,多項式的值為m項的和。多項式每一項的分子均為1,第i項的分母為1~i所有整數(shù)的和。根據(jù)這個特點(diǎn),通過m次循環(huán)求出多項式的每一項并求和。最后將多項式的和返回到主函數(shù)中。
22.
【解析】要找到所有學(xué)生中成績低于平均分?jǐn)?shù)的人數(shù),首先需要算出所有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于平均分?jǐn)?shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分?jǐn)?shù)的學(xué)生數(shù)返回給主函數(shù)。
23.
【解析】按照題目中要求,求出二維數(shù)組每行中最大元素,并依次放入pp所指的一維數(shù)組中。首先比較二維數(shù)組中每一行的元素,然后找出每一行中的最大元素,放入一維數(shù)組pp中,最后返回到主函數(shù)當(dāng)中。
24.intfun(inta[][m]){inti,j,max=a[0][0];/*對二維數(shù)組進(jìn)行遍歷*/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="">…25.
【考點(diǎn)分析】
本題考查:求數(shù)組的最大值,需要運(yùn)用循環(huán)語句,因為數(shù)組是二維數(shù)組,所以應(yīng)使用二層for循環(huán)嵌套。使用for循環(huán)語句時需要注意循環(huán)變量的取值范圍。
【解題思路】
此類求最大值或最小值的問題,我們可以采用逐個比較的方式,要求對數(shù)組中所有元素遍歷一遍,并且從中找出數(shù)組最大值或最小值。首先定義變量max存放數(shù)組中的第一個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返回。
【解題寶典】
該類題目考查較多,要掌握逐行比較的方法。對于m*n二維數(shù)組,如采用逐行查找方法,代碼實現(xiàn)為:
26.
【考點(diǎn)分析】
本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、結(jié)構(gòu)的查找與輸出、插入一個結(jié)點(diǎn)、刪除一個結(jié)點(diǎn)。
【解題思路】
題目要求求鏈表中數(shù)據(jù)域的平均值,應(yīng)首先使用循環(huán)語句遍歷鏈表,求各結(jié)點(diǎn)數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時應(yīng)定義一個指向結(jié)點(diǎn)的指針P,因為“頭結(jié)點(diǎn)”中沒有數(shù)值,所以程序中讓P直接指向“頭結(jié)點(diǎn)”的下一個結(jié)點(diǎn),使用語句STREC+P=h÷next。
27.
【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動字符串指針來實現(xiàn),首先移動字符串指針到第一個不是*的位置,通過指針的移動,來實現(xiàn)把第一個不是星號的字符與最后一個不是星號的字符放到a數(shù)組中,最后用ˊ\0ˊ來作為字符串結(jié)束的標(biāo)志。
28.
【解析】首先定義一個變量來表示其和s,通過n次循環(huán)求出n項的和,最后將所得到各項的和值返回給主函數(shù)。
29.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j,k=0;
for(i=0;i<mm;i++)//i是表示其行的下標(biāo)
for(j=0;j<nn;j++)//j是表示其列的下標(biāo)
b[k++]=s[i][j];//把其放到b的一維數(shù)組中
*n=k;//把b數(shù)組的長度通過形參n傳回到主函數(shù)中
}
【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長度通過形參返回到主函數(shù)當(dāng)中。
30.
【解析】按照題目中要求,求除首、尾字符外,將其余7個字符按ASCⅡ碼值降序排列。首先需要判斷除首、尾字符之外,其余7個字符ASCⅡ碼值的大小,將不符合順序要求的字符互換。
31.(1)錯誤:if(d%2!=0)正確:if(d%2==0)(2)錯誤:t=d*s1+t;正確:*t=d*s1+*t;(1)錯誤:if(d%2!=0)正確:if(d%2==0)\r\n(2)錯誤:t=d*s1+t;正確:*t=d*s1+*t;解析:錯誤1:偶數(shù)是能被2整除,而奇數(shù)是不能被2整除,題目要求找出偶數(shù)。錯誤2:t為指針類型,所以進(jìn)行運(yùn)算時要加‘*’號。
32.錯誤:if(('A'<=tt[i]||(tt[i]<='Z'))正確:if((tt[i]>='A')&&(tt[i]<='Z'))錯誤:if(('A'<=tt[i]||(tt[i]<='Z'))正確:if((tt[i]>='A')&&(tt[i]<='Z'))解析:從ASCII碼表中可以看出,小寫字母的ASCII碼值比對應(yīng)大寫字母的ASCII碼值大32。將字符串中的大寫字母改為小寫字母的方法是,從字符串第1個字符開始,根據(jù)ASCII碼值判斷該字母是不是大寫字母,若是,則ASCII碼值加32即可;重復(fù)執(zhí)行以上過程直至字符串尾。本題可利用條件選擇語句和循環(huán)語句來實現(xiàn)。
33.(1)錯誤:fun(char*pstr[6])正確:voidfun(char*pstr[6])(2)錯誤:if(strcmp(*(pstr+i)pstr+j)>0正確:if(strcmp(*(pstr+i)*(pstr+j))>0(3)錯誤:*(pstr+i)=pstr+j;正確:*(pstr+i)=*(pstr+j);(1)錯誤:fun(char*pstr[6])正確:voidfun(char*pstr[6])\r\n(2)錯誤:if(strcmp(*(pstr+i),pstr+j)>0正確:if(strcmp(*(pstr+i),*(pstr+j))>0\r\n(3)錯誤:*(pstr+i)=pstr+j;正確:*(pstr+i)=*(pstr+j);解析:冒泡法對字符串排序的方法是將相鄰兩個字符比較,將小的調(diào)到前面。令x等于字符串的第i位字符,若該字符的前一位字符大于x,則將該字符與x互換位置。從字符山中的第2位字符到字符串的最后一們字符重復(fù)以上過稈,即可完成排序??捎醚h(huán)語句實現(xiàn)。
34.(1)錯誤:p=h;正確:p:h->next;(2)錯誤:p=h->next;正確:p=p->next;(1)錯誤:p=h;\r\n正確:p:h->next;\r\n(2)錯誤:p=h->next;\r\n正確:p=p->next;解析:程序中使用while循環(huán)語句并結(jié)合結(jié)構(gòu)指針p來找到數(shù)據(jù)域中的最大值。
錯誤1:P指向形參結(jié)構(gòu)指針h的next指針,所以應(yīng)改為:p=h->next;
錯誤2:p指向自己的下一個結(jié)點(diǎn),所以應(yīng)改為:p=p->next
35.錯誤:intfun(intxy)正確:intfun(intxinty)錯誤:intfun(intx,y)正確:intfun(intx,inty)解析:C語言中規(guī)定,在函數(shù)的形參中不允許出現(xiàn)intx,y之類的語句,必須指定每一個參數(shù)的類型,所以在做類似題目時一定要謹(jǐn)慎。
36.(1)c=c+32;(2)c=c+
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級思想品德課件
- 《電氣安全防范》課件
- 《證券基礎(chǔ)知識培訓(xùn)》課件
- 單位管理制度合并選集【員工管理】十篇
- 《學(xué)業(yè)生涯規(guī)劃》課件
- 單位管理制度分享大全人員管理十篇
- 《服裝供應(yīng)鏈》課件
- 單位管理制度范例選集人員管理篇
- 單位管理制度呈現(xiàn)大合集人事管理篇十篇
- 國開《機(jī)械制圖》形成性任務(wù)1-4
- 2024新冀教版英語初一上單詞默寫表
- ISO∕TR 56004-2019創(chuàng)新管理評估-指南(雷澤佳譯-2024)
- 2024年全國房地產(chǎn)估價師之估價原理與方法考試高頻題(附答案)
- 春節(jié)的習(xí)俗課件
- DL-T5142-2012火力發(fā)電廠除灰設(shè)計技術(shù)規(guī)程
- 2024年晉城職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 小學(xué)舞蹈課學(xué)情分析
- GB 31825-2024制漿造紙單位產(chǎn)品能源消耗限額
- 第15課 十月革命與蘇聯(lián)社會主義建設(shè)(教學(xué)設(shè)計)-【中職專用】《世界歷史》
- MOOC 天氣學(xué)-國防科技大學(xué) 中國大學(xué)慕課答案
- 小學(xué)教育教學(xué)現(xiàn)場會活動方案
評論
0/150
提交評論