




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2021年安徽省蚌埠市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述中錯誤的是
A.在函數外部定義的變量在所有函數中都有效
B.在函數內部定義的變量只能在本函數范圍內使用
C.函數中的形參屬于局部變量
D.在不同的函數中可以使用相同名字的變量
2.下面關于數據庫系統(tǒng)中敘述正確的是()。
A.數據庫系統(tǒng)減少了數據冗余
B.數據庫系統(tǒng)避免了一切冗余
C.數據庫系統(tǒng)中數據的一致性是指數據類型的一致
D.數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據
3.
4.已知數據表A中每個元素距其最終位置不遠,為節(jié)省時間,應該采用的算法是()
A.直接選擇排序B.堆排序C.快速排序D.直接插入排序
5.設有定義語句:charc1=92,c2=92;則以下表達式中值為零的是()。
A.c1∧c2B.c1&c2C.~c2D.c1|c2
6.
7.以下敘述中正確的是()。
A.結構體變量中的成員可以是簡單變量、數組或指針變量
B.不同結構體的成員名不能相同
C.結構體定義時,其成員的數據類型可以是本結構體類型
D.結構體定義時,類型不同的成員項之間可以用逗號隔開
8.有下列程序:程序執(zhí)行后的輸出結果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49
9.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯
10.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。
A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;
11.若有定義“doublea=22;inti=0,k=18;”,則不符合C語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
12.二維數組A的每個元素是由6個字符組成的串,其行下標i=0,1,…,8,列下標j=1,2,…,10。若A按行先存儲,元素A[8][5]的起始地址與當A按列先存儲時的元素()的起始地址相同。設每個字符占一個字節(jié)。
A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]
13.
14.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
15.下列敘述中錯誤的是()。
A.C語言程序必須由一個或一個以上的函數組成
B.函數調用可以作為一個獨立的語句存在
C.若函數有返回值,必須通過return語句返回
D.函數形參的值也可以傳回給對應的實參
16.有如下程序段:
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B'):
執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1
17.設變量已正確定義并賦值,下列表達式中正確的是()。
A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
18.若串S=,software,其子串的數目是()。
A.8B.37C.36D.9
19.下列描述中正確的是()。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產品的生產率問題
C.軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化原則
D.軟件工程只是解決軟件開發(fā)中的技術問題
20.以下能正確定義一維數組的選項是()。
A.inta[5]=(0,1,2,3,4,5);
B.chara[]={0,1,2,3,4,5);
C.chara={'A','B','C'};
D.inta[5]="0123";
二、2.填空題(20題)21.在C語言中(以16位PC機為例),一個float型數據在內存中所占的字節(jié)數為4;一個double型數據在內存中所占的字節(jié)數為【】。
22.mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;【】!='\n';I++);
return(I);}
23.結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
24.以下程序運行后的輸出結果是()。
#include<stdio.h>
main()
{intx=20;
printf("%d",0<x<20);
printf("%d\n",0<x&&x<20);
}
25.數據流圖的類型有【】和事務型。
26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
27.以下程序運行后的輸出結果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
28.軟件生命周期包括8個階段。為了使各時期的任務更明確,又可分為3個時期:軟件定義期、軟件開發(fā)期、軟件維護期。編碼和測試屬于【】期。
29.關系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。
30.下面程序執(zhí)行后k的值為【】。
inta=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
31.問題處理方案的正確而完整的描述稱為______。
32.在面向對象方法中,類之間共享屬性和操作的機制稱為______。
33.有以下語句段
intnl=10,n2=20;
printf("______",n1,n2);
要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>
n1=10
n2=20
34.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
36.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。
structnode
{intinfo;
【】link;};
37.解題方案的準確而完整的描述稱為______。
38.函數sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
39.下述函數統(tǒng)計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>
intword(char*s)
{intnum=0,flag=0;
while(*s)
{if(【】='')flag=0;
elseif(【】){flag=1;num++}
}
return【】}
40.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統(tǒng)的總體結構。
三、1.選擇題(20題)41.以下程序的結果是()
main()
{unsignedinta=3,b=10;
printf("%d\n",a<<2|b>>1);
}
A.1B.5C.12D.13
42.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*P=str[0];printf("%d\n",strlen(p+20));}程序運行后的輸出結果是()。
A.0B.5C.7D.20
43.在結構化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。
A.詳細設計B.需求分析C.總體設計D.編程調試
44.下列程序的執(zhí)行結果是()。#include<stdio.h>main(){inta,b,c;a=b=2:c=(a++)-1;printf("%d,%d",a,c);c+=(a+=-a+++(++B);printf("%d,%d",a,c);}
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
45.已有定義int(*p)(),指針p可以
A.代表函數的返回值B.指向函數的入口地址C.表示函數的類型D.表示函數返回值的類型
46.軟件需求分析一般應確定的是用戶對軟件的______。
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求
47.有以下程序:#include<stdio.h>main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后的輸出結果是()。
A.77B.88C.810D.1010
48.若有定義語句:inta[2][3],*p[33;,則以下語句中正確的是()。
A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a
49.下列程序的輸出結果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);
A.1010B.1212C.1110D.1113
50.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結點。structnode{intdata;tractnode*next;}*p,*q,*r;
現要將q和r所指結點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p-next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=q;
D.q->next=r->next;r->next=q;P->next=r;
51.若要說明一個類型名STP,使得定義語句STP軋等價于char*s;,以下選項中正確的是()。
A.typedefSTPchar*s;
B.typedef*charSTP;
C.typedefSTP*char;
D.typedefchar*STP;
52.關于語句“for(表達式1;表達式2;表達式3)”,下面說法中錯誤的是()。
A.for語句中的三個表達式不可以同時省略
B.for語句可以用于循環(huán)次數不確定的情況
C.for語句中表達式2可以是關系表達式或邏輯表達式
D.for語句中表達式1和表達式3可以是逗號表達式
53.C語言中不合法的字符串常量是
A.\121B.'Y'C.\n\nD.ABCD\x6d
54.有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}whUe(k>0&&n<5);}程序運行后的輸出結果是
A.235B.0235C.02356D.2356
55.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數據屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
56.結構化程序設計主要強調的是()。
A.程序的規(guī)模B.程序的效率C.程序設計語言的先進性D.程序的易讀性
57.以下敘述正確的是
A.在C程序中,每行中只能寫一條語句
B.若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數
C.在C程序中,無論是整數還是實數,都能被準確無誤地表示
D.在C程序中,%是只能用于整數運算的運算符
58.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結果是
A.1267B.1256C.1278D.1245
59.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()
A.unionaa是定義的共用體類型
B.a,b,c是定義的共用體類型名
C.n、c[9]和x是共用體的成員名
D.a,b,c是定義的共用體變量名
60.以下函數值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
四、選擇題(20題)61.給出以下定義:
則正確的敘述為()。
A.數組m和數組n等價B.數組m和數組n的長度相同C.數組m的長度小于數組n的長度D.數組m的長度大于數組n的長度
62.
63.
64.以下關于指針概念不正確的是()。
A.指針變量可以用整數賦值,但不可以用浮點數賦值
B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量
C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中
D.只能將地址賦給指針變量
65.
66.
67.
68.下列敘述中不正確的是()。
A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
69.有以下程序
程序運行后的輸出結果是()。
A.15B.12C.16D.20
70.有以下程序:
程序運行后的結果是()。
A.6,4,3,2,1
B.6,5,4,3,2
C.5,4,3,2,1
D.10,4,3,2,l
71.下列關于數據庫設計的敘述中,正確的是()。
A.在需求分析階段建立數據字典
B.在概念設計階段建立數據字典
C.在邏輯設計階段建立數據字典
D.在物理設計階段建立數據字典
72.
73.下列定義變量的語句中正確的是()。
A)int_int;B)double3int_;
C)charfor;D)floatUS&;
74.若有定義:“inta[2][3];”,則對a數組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
75.
76.以下程序的輸出結果為
main()
{
char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char**p;
inti;
p=alpha;
for(i=0;i<4;i++)
printf("%s",p[i]);
printf("\n");
}
A.ABCDEFGHIJKLB.ABCD
C.ABCDEFGHIJKLMNOPD.AEIM
77.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6
78.
79.有以下程序:
程序運行后的輸出結果是()。
A.9B.8C.7D.10
80.
五、程序改錯題(1題)81.下列給定程序中函數fun的功能是:用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1,1,2,3,5,8,13,21,…
例如,若給n輸入7,則該項的斐波拉契數值為l3。
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
試題程序:
#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);
}
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數fun(),其功能是將兩個兩位數的正整數a、b合并成一個整數放在c中。合并的方式是將a中的十位數和個位數依次放在c數的十位和千位上,b中的十位數和個位數依次放在c數的百位和個位上。例如,當a=45,b=12時,調用該函數后,c=5142。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#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);}
參考答案
1.A全局變量有效范圍是從定義的位置開始到所在源文件的結束,在這區(qū)域內的函數才可以調用,如果在定義函數之后,定義的變量,該變量不能被之前的函數訪問所以A選項說法錯誤,答案為A選項。
2.A\n數據的共享自身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統(tǒng)中同一數據在不同位置出現時應保持相同的值。
\n
3.C
4.D
5.A解析:按位異或“^”運算,是當對應位上的二進制數值相同時結果為0,否則為1。因為c1,c2的值相同,所以異或的結果為0,選項A)正確。按位與“&”運算符只有當所有對應位上的數都不相同時結果才為0,所以c1&c2的值不可能為0,選項B)錯誤?!啊笔前次蝗》?,由于十進制數92轉化成二進制數并不是全為1,所以即使取反也不能得到全為。的答案,所以錯誤?!皘”是按位或運算,由于十進制數92轉化為二進制數也不是全為0,所以按位或運算后也不會全為0。
6.A
7.A結構體變量中的成員可以是簡單變量、數組、指針變量或者結構體變量,選項A正確;不同結構體成員名可以相同,選項B錯誤;結構體定義時,其成員的數據類型不能是本結構體類型,選項C錯誤;結構體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。
8.B對于題干中的宏,替換如下:S1(a+b,a+b),&+1>)等價于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a),等價于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等價于(a+b)*(a+b),即(2+5)*(2+5),等于49;S2(a+b,b+a)等價于(a+b)*(b+a),即(2+5)*(5+2),等于49。本題答案為B選項。
9.Cfprintf函數將內容寫入硬盤的文件,fputs函數將字符串寫入文件,最終文件的內容為abc28。故本題答案為C選項。
10.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。
11.B運算符“%”為二元運算符,具有左結合性,參與運算的量均為整型。B選項中的變量a是double型,不符合規(guī)定。故本題答案為B選項。
12.A
13.B
14.A程序首先以讀二進制文件的方式打開文件d.dat;然后使用fwrite函數將數組a中6個元素寫入d.dat中。并調用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數將文件指針fp移動到文件頭;再使用fseek函數將fp從當前位置向后移動2個整數位置;最后使用fread函數從fp指向的位置向后讀取6個整數。由此可知這6個整數分別是:3,4,5,6,3,3。故本題答案為A選項。
15.D形參是定義函數時由用戶定義的。實參是函數調用時,主調函數為被調函數提供的原始數據。在C語言中,實參向形參傳送數據的方式是“值傳遞'是單向傳遞。故本題答案為D選項。
16.D在C語言中,當表達式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項。
17.A運算符“%”的左右兩個操作數均應為整數,所以B選項與D選項錯誤。C選項中不能將“x+z”的值賦給表達式“y*5”,所以C選項錯誤。故本題答案為A選項。
18.B
19.C\r\n軟件工程是試圖用工程、科學和數學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調在軟件開發(fā)工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進度無法控制、軟件質量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發(fā)生產率的提高趕不上硬件的發(fā)展和應用需求的增長。軟件項目的管理、軟件產品的生產率、軟件開發(fā)中的技術都是軟件工程需要解決的部分問題。因此選項C正確。
20.B數組1標從0開始,A選項中所賦值的個數超過了數組的長度;C選項中定義a為字符型變量,而不是數組,賦值錯誤;D選項中,整型數組不能賦字符串。
21.88解析:在一般系統(tǒng)中,一個float型數據在內存中占4個字節(jié)(32位),一個double型數據占8個字節(jié)。
22.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數據,在循環(huán)過程中,可以用*(str+I)來訪問字符串中的第I個元素,判斷是否為結束標志,如果不是,I=I+1,繼續(xù)取下一個元素進行判斷,直到*(str+I)的值為'\\0'為止,也可以用下標的方式引用字符,如*(str+I)相當于str[I]。
23.模塊化模塊化
24.1010解析:表達式0<x<20,首先計算0<x,其值為1,再計算1<20,其值為1,輸出1;表達式0<x&&x<20,0<x為1,x<20為0,再計算1&&0,其值為0,輸出0。所以輸出結果為10。
25.變換型典型的數據流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應用中,存在某種作業(yè)數據流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數據流就叫做事務。
26.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數,從輸出結果來看,s保存的是最終結果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內容”應分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內容”應是t*10。
27.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當i=11時,i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結束。故該空格處應該填132。
28.軟件開發(fā)軟件開發(fā)解析:軟件生命周期可以分為3個時期:軟件定義期,包括問題定義、可行性研究和需求分析3個階段;軟件開發(fā)期,包括系統(tǒng)設計、詳細設計、編碼和測試4個階段;軟件維護期,即運行維護階段。編碼和測試屬于軟件開發(fā)階段。
29.實體完整性實體完整性解析:關系模型中的完整性是指數據庫中數據的正確性和一致性。為了維護數據庫中數據與現實世界的一致性,關系數據庫的插入、刪除、修改操作必須遵循3類完整性規(guī)則。關系模型的3類完整性指的是實體完整性、參照完整性和用戶定義的完整性。
30.44解析:本題首先判斷a>b的真假,結果是1>2為假,所以表達式“a>b?a:c>d?c:d”的值為子表達式“c>d?c:d”的值。再判斷c>d的真假,結果是3>4為假,所以最終k被賦的值為d的值,故應該填4。
31.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。
32.繼承繼承
33.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d×nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d×nn2=%2d解析:printf函數有兩種參數:格式控制參數和輸出項參數,其中格式控制參數由兩種成分組成;格式說明和普通字符,普通字符將被簡單地復制顯示,格式說明項將引起一個輸出參數項的轉換與顯示,它是由“%”引出并以一個類型描述符結束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數,所以格式說明項為%d,也可以在%與d之間加上域寬,另外還要在每行輸出結束時加轉義字符\\n進行換行。所以,應填寫n1=%d\\nn2=%d\\n,n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d。
34.224682,2468解析:在主函數中根據整型數組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1]=&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結果為2、4、6、8。
35.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作甩域在函數級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。
36.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。
37.算法算法解析:算法是指對解題方案的準確而完整的描述。
38.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應的字符相等則接著比較下一個字符,一直到兩個字符串中對應字符不等,或者有一個為\\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應填“*t”或其他等價形式。根據題意可知第二處應填*s-*t或其等價形式。
39.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數的算法中,本題的flag是為了記錄一個單詞是否結束。第13空應填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標志為1,num的值加1,如果不是,則不必記錄。故第14空應填flag=0或*(s-1)='';最后一個空格需填寫的是返回的單詞的個數,即num。
40.概要概要
41.D
42.C解析:本題考查字符數組和指針的運用。strlen是測試字符串長度的函數,函數的值為字符串的實際長度,不包括\'/0\'在內。str[][20]={'Hello','Beijing'}定義了一個2行20列的數組,數組的首地址是&str[0][0],p+20是從首地址向后移了20位,指針指向了str[1][0]處,此時求字符串的長度,是從str[1][0]開始的,即“Beijing”的長度,所以輸出結果是7。
43.C解析:總體設計過程通常由兩個主要階段組成:系統(tǒng)設計,確定系統(tǒng)的具體實現方案;結構設計,確定軟件,結構。為確定軟件結構,首先需要從實現角度把復雜的功能進一步分解。分析員結合算法描述仔細分析數據流圖中的每個處理,如果一個處理的功能過分復雜,必須把它的功能適當地分解成一系列比較簡單的功能。
44.A解析:本題主要考查自加運算符(++、--)的使用。①前綴變量“++i、-i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達式的值參與運算:②后綴變量“i++、i--”,先使用此時的表達式的值參與運算,在使用i之后,再使i的值加1或者減1。本題中計算表達式c=(a++)-1時先使用a的值進行計算,結果為c=2-1=1,然后將a的值加1,即執(zhí)行完此語句后,的值是3;表達式c+=-a+++(++b)等價于c=c+(-a++)+(++b),c=1+(-3)+3=1,此時a=4,b=3。
45.B解析:此題考查了函數指針的概念,函數指針是定義一個指針指向函數的入口地址,可用這個指針來調用函數。
46.DD。【解析】軟件需求分析中需要構造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。
47.C解析:用a[]='abcdefg'對數組a進行初始化,是用一個字符串作初值。數組a的長度包括由系統(tǒng)加上的\'\\0\',因此是8。b[10]='abcdefg'只初始化了前7個元素,后3個元素為0(\'\\0\'),所以長度為10。
48.B解析:本題考查的重點是指針數組與二維數組的關系。因為*p[3]定義成指針數組,從而指針數組中的任何元素都是一個地址,因此,選項B是正確的。
49.D
50.A解析:題目中要求將q和r所指結點的先后位置交換,即要求p所指結點的指針域指向r所指向的結點,r所指向的結點的指針域指向q所指向的結點,q所指向的結點的指針域指向r所指向的結點。選項A首先讓r所指向的指針的指針域指向q所指向的結點,這樣就將r所指向的結點的指針域指向的結點丟失了。選項B首先q所指向的結點的指針域指向r所指向的結點的指針域所指向的結點,然后,讓p所指向結點的指針域指向r所指向的結點,最后讓r所指向的結點的指針域指向q所指向的結點,滿足要求。選項C首先讓p所指向結點的指針域指向r所指向的結點,然后讓q所指向的結點的指針域指向r所指向的結點的指針域所指向的結點,最后讓r所指向的結點的指針域指向q所指向的結點,滿足要求。選項D首先讓q所指向的結點的指針域指向r所指向的結點的指針域所指向的結點,然后,讓r所指向的結點的指針域指向q所指向的結點,最后讓P所指向結點的指針域指向r所指向的結點,滿足要求。
51.D解析:指針類型的自定義的形式如下:typedef類型說明符*用戶類型名。不難看出只有選項D是正確的定義形式。所以,D選項為所選。
52.A解析:for語句中的3個表達式可以同時省略,但兩個;不能省略。所以選項A的說法錯誤。
53.B解析:字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。由此可知,選項A)、C)、D)都是含法的字符串常量,而選B)是一個字符常量。
54.A解析:因為變量的初始值分別為“k=5,n=0”,所以程序第一次進入循環(huán)時,執(zhí)行default語句,這時k=4,執(zhí)行“case4:”這個分支,結果是“n=2,k=3”,打印出2;程序然后進行第二次循環(huán),這時“n=2,k=3”,執(zhí)行“case3:”這個分支,結果是“n=3,k=2”,打印出3;程序進行第三次循環(huán),這時“n=3,k=2”,執(zhí)行“case2:case4:”這兩個分支,結果是“n=5,k=1”,打印出5,這時因為n=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運行結束,故輸出結果為235。
55.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計算機及相關應用所需要的硬件,它是軟件開發(fā)必不可少的資源,因為無論什么樣的軟件工具都需要在硬件上完成任務,它是其他資源的基礎資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數據無關。(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向對象開發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過對上述分析的總結,可以知道本題的正確答案選D。
56.D解析:程序不僅是編寫完就結束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設計的風格應該強調簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。
57.D解析:選項A)錯誤,因為在C語言中,各語句間可以用分號隔開,一行可以書寫多個語句;選項B)錯誤的原因是,忽略了C語言中進行運算的數據類型必須一致的規(guī)定,因此實型變量中不允許存放整型數,存放整型數據其實是把整型轉化為實型在存放。選項C)錯誤的原因是由于實型變量是用有限的存儲單元存儲的,因此能提供的有效數字總是有限的,在有效的位以外的數將被舍去,由此可能產生一些誤差。
58.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。
59.B
60.A解析:函數定義時如果數據類型默認,則默認為int。函數中如果有“retum(表達式):”語句,表達式的類型可能與函數的類型不一致,但它并不能改變函數的類型,實際情況是把表達式轉換為函數值的類型作為返回值,因此本題的函數值類型是int。
61.D按照m方式聲明的數組,系統(tǒng)會在數組尾部自動添加字符’\0’,因此m的長度比n大l。
62.B
63.B
64.A指針是用來指示一個內存地址的變量,因此只能將地址賦給指針變量,而不能是整數或浮點數。
65.D
66.A
67.C
68.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內存單元,而是在程序運行中,當局部變量所在的函數被調用時,編譯系統(tǒng)根據需要要臨時分配內存,調用結束空間釋放;全局變量一經定義,編譯系統(tǒng)為其分配固定的內存單元,在程序運行的自始至終都占用固定的單元。在考慮內存不定的情況下,最好使用全局變量。
69.B#define命令是C語言的宏定義命令,標識符一般使用大寫,為了區(qū)分其他標識符,將標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。后置自增運算:k++表示先運算,后自加。意思是遇到k++了,先把當前的k的值拿來參加運算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案為B選項。
70.D表達式(*q)++先取出q所指對象的值,再對該值遞增,計算中q的值不變。所以f函數的功能是將指針q所指的數加5。函數調用f(a);相當于將數組a的第一個元素加5,操作后a[5]={10,4,3,2,1}。
71.A數據字典是在需求分析階段建立,在數據庫設計過程中不斷修改、充實和完善的。故答案為A選項。
72.D
73.A用戶標識符不能為關鍵字,只能由數字,字母和下劃線組成,而且第一個必須為字母或下劃線。
74.A解析:本題考查如何通過地址來引用數組元素。通過地址來引用數組元素的方法有下列5種:
①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。
75.D
76.C指針數組*alpha[6]實際上相當于一個二維數組,而p是一個指向指針的指針,p=alpha后,引用p[x]便是引用數組*alpha[6]中的第x個數組元素的首地址,所以打印的結果應當為ABCDEFGHIJKLMNOP。
77.C在表達式中,其+=,-=的優(yōu)先級相同,按從右到左的結合方向運算,而*的優(yōu)先級最高,表達式寫成a=a+(a-(a*a)),代入3可得-12。
78.C
79.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內分配存儲單元,在程序整個運行期間都不釋放。所以第-次調用函數執(zhí)行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時,s的值為4,調用f(a)函數時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。
80.Afun函數將空格之前的小寫字母修改為大寫字母,所以答案選A)。
81.(1)錯誤:switch(g);
\n正確:switch(g)
\n(2)錯誤:casel:case2:returnl;
\n正確:casel;case2:returnl;
\n【解析】此題考查C語言的語法規(guī)則,switch(表達式)后不應該帶有“;”,case語句常量后應該是“:”。
\nswitch語句的一般形式如下:
\nswitch(表達式){
\ncase常量表達式1:語句1;
\ncase常量表達式2:語句2;
\ncase常量表達式n:語句i;
\ndefault:語句n+1;
\n}
\n
82.voidfun(inta,intb,long*c){/*b%10獲取b的個位數,a/10獲取a的十位數,a%10獲取a的個位數,b/10獲取b的十位數*/ *c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;}本題主要考核如何取出a和b的個位數和十位數,取出后如何將其表示成c中相應的位數。由于a和b都是只有兩位的整數,因此分別對它們除以10可得到它們的十位數,分別用10對它們求余可得到它們的個位數。將得到的數對應乘以1000、100、10、1,即可得到c的千位數、百位數、十位數、個位數。注意使用c時要進行指針運算。2021年安徽省蚌埠市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述中錯誤的是
A.在函數外部定義的變量在所有函數中都有效
B.在函數內部定義的變量只能在本函數范圍內使用
C.函數中的形參屬于局部變量
D.在不同的函數中可以使用相同名字的變量
2.下面關于數據庫系統(tǒng)中敘述正確的是()。
A.數據庫系統(tǒng)減少了數據冗余
B.數據庫系統(tǒng)避免了一切冗余
C.數據庫系統(tǒng)中數據的一致性是指數據類型的一致
D.數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據
3.
4.已知數據表A中每個元素距其最終位置不遠,為節(jié)省時間,應該采用的算法是()
A.直接選擇排序B.堆排序C.快速排序D.直接插入排序
5.設有定義語句:charc1=92,c2=92;則以下表達式中值為零的是()。
A.c1∧c2B.c1&c2C.~c2D.c1|c2
6.
7.以下敘述中正確的是()。
A.結構體變量中的成員可以是簡單變量、數組或指針變量
B.不同結構體的成員名不能相同
C.結構體定義時,其成員的數據類型可以是本結構體類型
D.結構體定義時,類型不同的成員項之間可以用逗號隔開
8.有下列程序:程序執(zhí)行后的輸出結果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49
9.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯
10.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。
A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;
11.若有定義“doublea=22;inti=0,k=18;”,則不符合C語言規(guī)定的賦值語句是()。
A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;
12.二維數組A的每個元素是由6個字符組成的串,其行下標i=0,1,…,8,列下標j=1,2,…,10。若A按行先存儲,元素A[8][5]的起始地址與當A按列先存儲時的元素()的起始地址相同。設每個字符占一個字節(jié)。
A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]
13.
14.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結果是()。
A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,
15.下列敘述中錯誤的是()。
A.C語言程序必須由一個或一個以上的函數組成
B.函數調用可以作為一個獨立的語句存在
C.若函數有返回值,必須通過return語句返回
D.函數形參的值也可以傳回給對應的實參
16.有如下程序段:
inta=14,b=15,x;
charc='A';
x=(a&&b)&&(c<'B'):
執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1
17.設變量已正確定義并賦值,下列表達式中正確的是()。
A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0
18.若串S=,software,其子串的數目是()。
A.8B.37C.36D.9
19.下列描述中正確的是()。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產品的生產率問題
C.軟件工程的主要思想是強調在軟件開發(fā)過程中需要應用工程化原則
D.軟件工程只是解決軟件開發(fā)中的技術問題
20.以下能正確定義一維數組的選項是()。
A.inta[5]=(0,1,2,3,4,5);
B.chara[]={0,1,2,3,4,5);
C.chara={'A','B','C'};
D.inta[5]="0123";
二、2.填空題(20題)21.在C語言中(以16位PC機為例),一個float型數據在內存中所占的字節(jié)數為4;一個double型數據在內存中所占的字節(jié)數為【】。
22.mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;【】!='\n';I++);
return(I);}
23.結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。
24.以下程序運行后的輸出結果是()。
#include<stdio.h>
main()
{intx=20;
printf("%d",0<x<20);
printf("%d\n",0<x&&x<20);
}
25.數據流圖的類型有【】和事務型。
26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
27.以下程序運行后的輸出結果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
28.軟件生命周期包括8個階段。為了使各時期的任務更明確,又可分為3個時期:軟件定義期、軟件開發(fā)期、軟件維護期。編碼和測試屬于【】期。
29.關系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。
30.下面程序執(zhí)行后k的值為【】。
inta=1,b=2,c=3,d=4,k;
k=a>b?a:c>d?c:d
31.問題處理方案的正確而完整的描述稱為______。
32.在面向對象方法中,類之間共享屬性和操作的機制稱為______。
33.有以下語句段
intnl=10,n2=20;
printf("______",n1,n2);
要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>
n1=10
n2=20
34.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.下面程序輸出的結果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
36.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。
structnode
{intinfo;
【】link;};
37.解題方案的準確而完整的描述稱為______。
38.函數sstrcmp的功能是對兩個字符串進行比較。當s所指字符串和t所指字符串相等時,返回值為0;當s所指字符串大于t所指字符串時,返回值大于0;當s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數strcmp)。請?zhí)羁铡?/p>
#include<stdio.h>
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【】)
{s++;t++;}
return【】;
}
39.下述函數統(tǒng)計一個字符串中的單詞個數,單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>
intword(char*s)
{intnum=0,flag=0;
while(*s)
{if(【】='')flag=0;
elseif(【】){flag=1;num++}
}
return【】}
40.軟件的【】設計又稱為總體結構設計,其主要任務是建立軟件系統(tǒng)的總體結構。
三、1.選擇題(20題)41.以下程序的結果是()
main()
{unsignedinta=3,b=10;
printf("%d\n",a<<2|b>>1);
}
A.1B.5C.12D.13
42.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*P=str[0];printf("%d\n",strlen(p+20));}程序運行后的輸出結果是()。
A.0B.5C.7D.20
43.在結構化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。
A.詳細設計B.需求分析C.總體設計D.編程調試
44.下列程序的執(zhí)行結果是()。#include<stdio.h>main(){inta,b,c;a=b=2:c=(a++)-1;printf("%d,%d",a,c);c+=(a+=-a+++(++B);printf("%d,%d",a,c);}
A.3,14,1B.3,14,2C.2,04,1D.2,14,1
45.已有定義int(*p)(),指針p可以
A.代表函數的返回值B.指向函數的入口地址C.表示函數的類型D.表示函數返回值的類型
46.軟件需求分析一般應確定的是用戶對軟件的______。
A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求
47.有以下程序:#include<stdio.h>main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后的輸出結果是()。
A.77B.88C.810D.1010
48.若有定義語句:inta[2][3],*p[33;,則以下語句中正確的是()。
A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a
49.下列程序的輸出結果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);
A.1010B.1212C.1110D.1113
50.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向一個鏈表中的三個連續(xù)結點。structnode{intdata;tractnode*next;}*p,*q,*r;
現要將q和r所指結點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是
A.r->next=q;q->next=r->next;p->next=r;
B.q->next=r->next;p-next=r;r->next=q;
C.p->next=r;q->next=r->next;r->next=q;
D.q->next=r->next;r->next=q;P->next=r;
51.若要說明一個類型名STP,使得定義語句STP軋等價于char*s;,以下選項中正確的是()。
A.typedefSTPchar*s;
B.typedef*charSTP;
C.typedefSTP*char;
D.typedefchar*STP;
52.關于語句“for(表達式1;表達式2;表達式3)”,下面說法中錯誤的是()。
A.for語句中的三個表達式不可以同時省略
B.for語句可以用于循環(huán)次數不確定的情況
C.for語句中表達式2可以是關系表達式或邏輯表達式
D.for語句中表達式1和表達式3可以是逗號表達式
53.C語言中不合法的字符串常量是
A.\121B.'Y'C.\n\nD.ABCD\x6d
54.有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}whUe(k>0&&n<5);}程序運行后的輸出結果是
A.235B.0235C.02356D.2356
55.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數據屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源
56.結構化程序設計主要強調的是()。
A.程序的規(guī)模B.程序的效率C.程序設計語言的先進性D.程序的易讀性
57.以下敘述正確的是
A.在C程序中,每行中只能寫一條語句
B.若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數
C.在C程序中,無論是整數還是實數,都能被準確無誤地表示
D.在C程序中,%是只能用于整數運算的運算符
58.有以下程序
#include<stdio.h>
main()
{charc1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結果是
A.1267B.1256C.1278D.1245
59.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()
A.unionaa是定義的共用體類型
B.a,b,c是定義的共用體類型名
C.n、c[9]和x是共用體的成員名
D.a,b,c是定義的共用體變量名
60.以下函數值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}
A.intB.不確定C.voidD.float
四、選擇題(20題)61.給出以下定義:
則正確的敘述為()。
A.數組m和數組n等價B.數組m和數組n的長度相同C.數組m的長度小于數組n的長度D.數組m的長度大于數組n的長度
62.
63.
64.以下關于指針概念不正確的是()。
A.指針變量可以用整數賦值,但不可以用浮點數賦值
B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量
C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中
D.只能將地址賦給指針變量
65.
66.
67.
68.下列敘述中不正確的是()。
A.在C語言中調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.在C的函數中,最好使用全局變量
C.外部變量可以在函數之間傳遞數據
D.自動變量實質上是一個函數內部的局部變量
69.有以下程序
程序運行后的輸出結果是()。
A.15B.12C.16D.20
70.有以下程序:
程序運行后的結果是()。
A.6,4,3,2,1
B.6,5,4,3,2
C.5,4,3,2,1
D.10,4,3,2,l
71.下列關于數據庫設計的敘述中,正確的是()。
A.在需求分析階段建立數據字典
B.在概念設計階段建立數據字典
C.在邏輯設計階段建立數據字典
D.在物理設計階段建立數據字典
72.
73.下列定義變量的語句中正確的是()。
A)int_int;B)double3int_;
C)charfor;D)floatUS&;
74.若有定義:“inta[2][3];”,則對a數組的第i行第j列元素的正確引用為()。
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
75.
76.以下程序的輸出結果為
main()
{
char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char**p;
inti;
p=alpha;
for(i=0;i<4;i++)
printf("%s",p[i]);
printf("\n");
}
A.ABCDEFGHIJKLB.ABCD
C.ABCDEFGHIJKLMNOPD.AEIM
77.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6
78.
79.有以下程序:
程序運行后的輸出結果是()。
A.9B.8C.7D.10
80.
五、程序改錯題(1題)81.下列給定程序中函數fun的功能是:用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1,1,2,3,5,8,13,21,…
例如,若給n輸入7,則該項的斐波拉契數值為l3。
請改正程序中的錯誤,使它能得出正確結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
試題程序:
#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);
}
六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數fun(),其功能是將兩個兩位數的正整數a、b合并成一個整數放在c中。合并的方式是將a中的十位數和個位數依次放在c數的十位和千位上,b中的十位數和個位數依次放在c數的百位和個位上。例如,當a=45,b=12時,調用該函數后,c=5142。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#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);}
參考答案
1.A全局變量有效范圍是從定義的位置開始到所在源文件的結束,在這區(qū)域內的函數才可以調用,如果在定義函數之后,定義的變量,該變量不能被之前的函數訪問所以A選項說法錯誤,答案為A選項。
2.A\n數據的共享自身又
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版境外投資協(xié)議書
- 機電工程施工總承包資質標準二零二五年
- 物業(yè)委托管理協(xié)議
- 2025年日用織物制品項目建議書
- 供電外包勞務合同樣本
- 青島版小學二年級上冊數學教學計劃
- 平面的投影-教案
- 企業(yè)門頭制作合同樣本
- 中圖版地理必修二第二章學教案
- 淘寶客服聘用合同
- 植保員培訓課件
- 2023年新《招標投標法》考試題庫附答案
- 《斷路器動作時間測試系統(tǒng)設計》13000字(論文)
- 2024年浙江省中考社會(開卷)真題卷及答案解析
- T-CNHAW 0011-2024 干眼診療中心分級建設要求
- 內蒙古中東部旱地谷子栽培技術規(guī)程(DB15-T 638-2013)
- 2025屆湖北省武漢市重點中學高三第一次模擬考試數學試卷含解析
- 網店推廣模擬習題及答案
- 道路管道清淤施工方案
- 智能信貸風控策略
- 五年(2020-2024)高考語文真題分類匯編專題04 古代詩歌鑒賞(解析版)
評論
0/150
提交評論