版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2021-2022年黑龍江省伊春市全國計算機等級考試C語言程序設(shè)計測試卷一(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.從一個長度為100的順序表中刪除第30個元素時需向前移動()個元素
A.70B.71C.69D.30
2.在循環(huán)隊列中,若front與rear分別表示對頭元素和隊尾元素的位置,則判斷循環(huán)隊列空的條件是()。
A.front==rear+1B.rear==front+1C.front==rearD.front==0
3.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}執(zhí)行后輸出結(jié)果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5
4.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。
A.各模塊應包括盡量多的功能
B.各模塊的規(guī)模應盡量大
C.各模塊之間的聯(lián)系應盡量緊密
D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度
5.下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點()。
A.插入運算方便B.可方便地用于各種邏輯結(jié)構(gòu)的存儲表示C.存儲密度大D.刪除運算方便
6.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.0,-1,-1,-1
B.0,-1,-1,0
C.0,-1,-1,0,-1,0
D.0,-1,-1,-1,-1,-1
7.算法的空間復雜度是指()。
A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.執(zhí)行算法所需要的存儲空間
8.以下說法錯誤的是()。
A.由3種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序不能解決過于復雜的問題
B.由3種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決一些簡單的問題
C.由3種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決遞歸問題
D.由3種基本結(jié)構(gòu)組成的結(jié)構(gòu)化程序能解決數(shù)學上有解析解的問題
9.
10.以下敘述中錯誤的是()。
A.將函數(shù)內(nèi)的局部變量說明為static存儲類是為了限制其他編譯單位的引用
B.—個變量作用域的開始位置完全取決于變量定義語句的位置
C.全局變量可以在函數(shù)以外的任何部位進行定義
D.局部變量的“生存期”只限于本次函數(shù)調(diào)用,因此不能將局部變量的運算結(jié)果保存至下一次調(diào)用
11.
12.有以下程序:程序運行后的輸出結(jié)果是()。A.20B.13C.10D.31
13.下列語句組中正確的是()。
A.char*s;s=“Olympic”;
B.chars[7];s=“Olympic”;
C.char*s;s={“Olympic”};
D.chars[7];s={“Olympic”};
14.下列程序段輸出的字符串長度為()。printf("\\aaa\'ccc\bddd\'");
A.11B.12C.13D.17
15.使用二分查找算法在一個有序序列中查找一個元素的時間復雜度為()
A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)
16.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的節(jié)點。則下列選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是()。
A.p->next=q->next;free(q);
B.p=q->next;free(q);
C.p=q;free(q);
D.(*p).next=(*q).next;free(p);
17.以下說法不正確的是
A.C程序中必須有一個main()函數(shù),C程序是從main()函數(shù)的第1條語句開始執(zhí)行的。
B.非主函數(shù)都是在執(zhí)行主函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。
C.C程序中的main()函數(shù)必須放在程序的開始位置。
D.C程序中的main()函數(shù)位置可以任意指定。
18.與單鏈表相比,雙鏈表的優(yōu)點之一是()。
A.插入、刪除操作更簡單B.可以進行隨機訪問C.可以省略表頭指針或表尾指針D.順序訪問相鄰結(jié)點更靈活
19.C語言中char類型數(shù)據(jù)占字節(jié)數(shù)為()。
A.3B.4C.1D.2
20.設(shè)有如下定義語句:intm[]={2,4,6,8,10},*k=m;以下選項中,表達式的值為6的是()。
A.*(k+2)B.k+2C.*k+2D.*k+=2
二、2.填空題(20題)21.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。
22.當線性表采用順序存儲結(jié)構(gòu)實現(xiàn)存儲時,其主要特點是______。
23.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。
例如,若一維數(shù)組中的數(shù)據(jù)是:
2223445666677899101010
刪除后,數(shù)組中的內(nèi)容應該是:
2345678910。
請?zhí)羁铡?/p>
#include<stdio.h>
#defineN80
intfun(inta[],intn)
{inti,j=1;
for(i=1;i<n;i++)
if(a[j-1]【】a[i])
a[j++]=a[i];
【】;
}
main()
{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\nThedataafterdeleted:\n");
for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
}
24.若用0至9之間不同的三個數(shù)構(gòu)成一個三位數(shù),下面程序?qū)⒔y(tǒng)計出共有多少種方法。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti,j,k,count=0;
for(i=0;i<=9;i++)
for(j=0;i<=9;j++)
if(【】)continue;
elsefor(k=0;k<=9;k++)
if(【】)count++;
printf("%d",count);}
25.下面的程序可對指定字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
26.用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,請?zhí)羁?。st=(char*)【】;
27.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
28.若有下面的程序片段:int[12]={0},*p[3],**pp,i;for(i=0;i<3;i)p[i]=&a[i*4];pp=p;則對數(shù)組元素的錯誤引用是
29.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應該是【】。
intb,c;floata;
scanf("%f,%d,c=%d",&a,&b,&c)
30.在程序設(shè)計階段應該采取______和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,繼而用某種程序設(shè)計語言寫成程序。
31.以下程序運行后,若輸入:3,abcde<回車>,則輸出結(jié)果是【】。
#include<stdio.h>
#include<string.h>
move(char*str,intn)
{chartemp;inti;
temp=str[n-1];
for(i=n-1;i>0;i--)str[i]=str[i-1];
str[0]=temp;
}
main()
{chars[50];intn,i,z;
scanf("%d,%s",&n,s);
z=strlen(s);
for(i=1;i<=n;i++)move(s,z);
printf("%s\n",s);
}
32.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。
33.以下程序的輸出結(jié)果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
34.以下程序運行時若從鍵盤輸入: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);
}
35.下列程序的輸出結(jié)果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;
for(j=3;j;j--)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(--p));}}
36.若fp已下確定義為一個文件指針,d1.dat為二進制文件,請?zhí)羁?,以便為“讀”而打開此文件:fp=fopen(【】);。
37.軟件測試的方法有動態(tài)測試、靜態(tài)測試和【】13種。
38.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。
39.符合結(jié)構(gòu)化原則的三種基本控制結(jié)構(gòu)是順序結(jié)構(gòu)、()和循環(huán)結(jié)構(gòu)。
40.要求使下列程序輸出5個整數(shù),請?zhí)羁铡?/p>
for(i=0;i<=______;printf("%d\n",i+=2));
三、1.選擇題(20題)41.C語言中允許用外部說明來指定變量、函數(shù)和其他標識符的特征,這里所說的外部指的是()。
A.冠以關(guān)鍵字externB.位置在函數(shù)體外部C.作用范圍是全程的D.位置在函數(shù)的外部
42.已定義以下函數(shù);intfun(int*p){return*p;}fun函數(shù)返回值是()。
A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值
43.下面程序的輸出結(jié)果是()#definePI3.1415#defineARE(x)PI*x*xmain(){intr=2;printf("%f",ARE(r+1));}
A.28.26B.28.26C.9.28D.9.28
44.C語言中邏輯表達式的值為()
A.0或1B.非零值或者零值C.ture或falseD.'ture'或者'false'
45.有以下程序main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是
A.x=4B.x=8C.x=6D.x=12
46.以下定義語句中正確的是
A.inta=b=0;
B.charA=65+1,b='b';
C.noata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
47.已定義c為字符型變量,則下列語句中正確的是()。
A.c='97'B.c="97"C.c=97D.c="a"
48.在下列選項中,不是一個算法一般應該具有的基本特征的是()。
A.確定性B.可行性C.無窮性D.擁有足夠的情報
49.下列說法不正確的是()。
A.C語言程序是以函數(shù)為基本單位的,整個程序由函數(shù)組成
B.C語言程序的一條語句可以寫在不同的行上
C.C語言程序的注釋行對程序的運行功能不起任何作用,所以注釋應該盡可能少寫
D.C語言程序的每個語句都以分號結(jié)束
50.在位運算中,操作數(shù)左移一位,其結(jié)果相當于A.A.操作數(shù)乘以2
B.操作數(shù)除以2
C.操作數(shù)除以4
D.操作數(shù)乘以4
51.以下敘述正確的是()。
A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用goto語句
52.請讀程序:#includde<stdio.h>#include<string.>voidfun(char*s){chara[10];strcpy(a,"STRING");s=a;}main(){char*p;fun(p);print{("%s\n",p);}上面程序的輸出結(jié)果(表示空格)()
A.STRINGB.STRINGC.STRINGD.不確定的值
53.若有定義:iht*p[3];,則以下敘述中正確的是
A.定義了一個基類型為int的指針變量p,該變量具有三個指針
B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素
D.定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應具有三個int類型元素
54.可以在C語言程序中用做用戶標識符的一組標識符是()。
A.void123BBNB.aaabccasC.as+b3-123IfD.6fDoSIG
55.有以下程序main(){chara,b,c,d;seanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結(jié)果是
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
56.字符串"\\\"ABCDEF\"\\"的長度是()。
A.15B.10C.7D.8
57.下列敘述中,不正確的是______。
A.字符型數(shù)組中可以存放字符串
B.可以對字符型數(shù)組進行整體輸入、輸出
C.可以對整型數(shù)組進行整體輸入、輸出
D.不能在賦值語句中通過賦值運算符:對字符型數(shù)組進行整體賦值
58.關(guān)系數(shù)據(jù)庫管理系統(tǒng)應能實現(xiàn)的專門的關(guān)系運算包括()。A.A.排序、索引、統(tǒng)計B.選擇、投影、連接C.關(guān)聯(lián)、更新、排序D.顯示、打印、制表
59.若變量a,b已正確定義,且b已正確賦值,則合法的語句是()。
A.b=double(b);B.++b;C.a=a++=5;D.a=double(b);
60.有以下說明和定義語句structstudent{intage;charnum[8];structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;};以下選項中引用結(jié)構(gòu)體變量成員的表達式錯誤的是
A.(p++)->numB.p->numC.(*p).numD.stu[3].a(chǎn)ge
四、選擇題(20題)61.
62.有以下程序:
程序運行后的輸出結(jié)果是()。
A.22B.76C.72D.62
63.設(shè)變量x為float型且已賦值,則以下語句能將x中的數(shù)值保留到小數(shù)點后兩位,并將第3位四舍五入的是()。
A.
B.
C.
D.
64.有以下程序程序運行后的輸出結(jié)果是()。
A.3B.0C.7D.8
65.有以下程序
main()
{intm=14,n=24;
printf("%d,%d",m++,++n);
printf("%d,%d\n",n++,++m);
}
程序運行后的輸出結(jié)果是
A.15252616B.14252515
C.14252516D.14252615
66.若變量a、b、x、i都已正確定義并賦值,則以下符合C語言語法的表達式是()。
A.a+=a-=(b=4)*(a=3)B.x%(-3);C.a=a*3=2D.y=float(i)
67.數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖內(nèi)容的是
A.控制流B.加工C.數(shù)據(jù)存儲D.數(shù)據(jù)流
68.
69.閱讀下面程序,則執(zhí)行后的結(jié)果為
#include"stdio.h"
fun1()
{intk=20;
returnk;
}
fun2()
{inta=15;
returna;}
fun3(inta,intb)
{intk;
k=(a-b)*(a+b);
printf("%d\n",k);}
main()
{un3(fun1(),fun2());}
A.0B.184
C.175D.編譯不通過
70.有以下程序:
程序運行后的輸出結(jié)果是()。
A.LoB.30C.0D.64
71.以下定義數(shù)組的語句錯誤的是()。
A.intnum[]={1,2,3,4,5,6};
B.intnum[][3]={{1,2},3,4,5,6};
C.intnum[2][4]={{1,2},{3,4},{5,6}};
D.intnum[][4]={1,2,3,4,5,6};
72.以下敘述中錯誤的是()。
A.C語言編寫的函數(shù)源程序,其文件名后綴可以是C
B.C語言編寫的函數(shù)都可以作為一個獨立的源程序文件
C.C語言編寫的每個函數(shù)都可以進行獨立的編譯并執(zhí)行
D.一個C語言程序只能有一個主函數(shù)
73.以下程序運行后的輸出結(jié)果是()。
A.123B.234C.223D.233
74.若有定義語句:“intkl一10,k2=20;”,執(zhí)行表達式(kl=kl>k2)(k2=k2>
k1)后,kl和k2的值分別為()。
A.0和1B.0和20C.10和1D.10和20
75.有以下程序程序運行后的輸出結(jié)果是()。
A.9B.10C.8D.7
76.
77.有以下程序:
程序輸出結(jié)果是()。
A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯
78.有以下程序:
程序運行后的輸出結(jié)果是()。
A.let=4B.m=2C.m=6D.m=5
79.
80.設(shè)有以下定義:
inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*ptr)[3]=a,*p=a[0];
則下列能夠正確表示數(shù)組元素a【1】【2】的表達式是()。
A.*((*ptr+1)[2])
B.*(*(p+5))
C.(*ptr+1)+2
D.*(*(a+1)+2)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:從字符串str中,刪除所有小寫字母c。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。
例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應當是“ABCDEFG”。
注意:部分源程序給出如下。
請勿改動maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
參考答案
1.A
2.C
3.Da、b、C都是按值傳遞給函數(shù)f,函數(shù)f不能改變它們的值。所以,a、b、t的值仍然是4、3、5。
4.D解析:本題考查軟件工程中軟件設(shè)計的概念和原理。人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經(jīng)驗,總結(jié)這些經(jīng)驗得到如下的啟發(fā)式規(guī)則:
(1)改進軟件結(jié)構(gòu),提高模塊獨立性;通過模塊的分解或合并,力求降低耦合提高內(nèi)聚。低耦合也就是降低不同模塊間相互依賴的緊密程度,高內(nèi)聚是提高一個模塊內(nèi)各元素彼此結(jié)合的緊密程度。
(2)模塊的規(guī)模應適中。一個模塊的規(guī)模不應過大,過大的模塊往往是由于分解不夠充分:過小的模塊開銷大于有益操作,而且模塊過多將使系統(tǒng)接口復雜。因此過小的模塊有時不值得單獨存在。
(3)模塊的功能應該可以預測,但也要防止模塊功能過分局限。如果模塊包含的功能太多,則不能體現(xiàn)模塊化設(shè)計的特點:如果模塊的功能過分的局限,使用范圍就過分狹窄。
經(jīng)過上述分析,本題的正確答案是選項D。
5.C
6.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環(huán)條件式為“a--&&b++”,因為--和++的優(yōu)先級高于邏輯與運算符&&,所以循環(huán)條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環(huán),a、b的值為1,-2,首先執(zhí)行a--,a--的值為1,執(zhí)行完后a的值為0;繼續(xù)執(zhí)行b++,b++的值為-2,執(zhí)行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環(huán),a、b的值分別為0,-1,首先執(zhí)行a--,a--的值為0,執(zhí)行完后a的值為-1,由于a--的值為0,根據(jù)邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執(zhí)行,循環(huán)結(jié)束,執(zhí)行循環(huán)體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結(jié)果為:0,-1,-1,-1。本題答案為A選項。
7.D解析:算法的復雜度主要包括算法的時間復雜度和算法的空間復雜度。所謂算法的時間復雜度是指執(zhí)行算法所需要的計算工作量;算法的空間復雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
8.A順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是3種基本結(jié)構(gòu),由3種基本結(jié)構(gòu)構(gòu)成的程序稱為結(jié)構(gòu)化程序,由3種基本結(jié)構(gòu)組成的算法可以解決任何復雜的問題,選項A錯誤。本題答案為A選項。
9.C
10.A將函數(shù)內(nèi)的局部變量說明為static存儲類,第1次調(diào)用該函數(shù)時才對其初始化,后續(xù)調(diào)用時使用上一次調(diào)用結(jié)束后的值;函數(shù)體內(nèi)的局部變量無論是否聲明為stat\x1fic,外部編譯單位都不能引用,選項A錯誤,其他選項正確。本題答案為A選項。
11.C
12.D程序首先定義整型變量s和i,s的初值為0。for循環(huán)中i的取值為1,2,3,4,另外在switch語句中,執(zhí)行各個分支后,若沒有break語句,會繼續(xù)執(zhí)行后續(xù)分支。當i=1時,switch語句執(zhí)行case1、case2和default,將s自增3后再自增5,此時s的值為8;當i=2時,switch語句執(zhí)行case2、default,將s自增3后再自增5,此時s的值為16;當i=3時,switch語句執(zhí)行case3、case1、case2、default,將s逐步自增2,自增3,自增5,此時s的值為26;當i=4時,switch語句執(zhí)行default語句,將s自增5,此時s的值為31。本題答案為D選項。
13.A字符型指針變量可以用A選項的賦值方法“Char*s;s=“OlymPiC”;”。C選項的寫法“char*s;s={“Olympic”};”是錯誤的。字符數(shù)組可以在定義的時候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定義字符數(shù)組后對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址),所以B選項和D選項都是錯誤的。對于本例,B、D選項中字符數(shù)組s的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標識‘\\0’),同時,此時S為字符數(shù)組的地址,是常量,不能為其賦值。故本題答案為A選項。
14.C解析:轉(zhuǎn)義字符有1個\\\\、2個\\'、1個\\b,普通字符有3個a、3個c、3個d,共13個字符。
15.B
16.A其方法是將要刪除節(jié)點的上一個節(jié)點的next指向要刪除節(jié)點的下一個節(jié)點,然后釋放將要刪除的節(jié)點,所以選項A正確。故本題答案為A選項。
17.C解析:本題考核的知識點是main()函數(shù)的作用,以及main()函數(shù)在程序中出現(xiàn)的位置。一個完整的C語言程序有且僅有一個主函數(shù)(main()函數(shù))。程序總從main()函數(shù)的第一條語句開始執(zhí)行,到main()函數(shù)的最后一條語句結(jié)束,其他函數(shù)都是在執(zhí)行main()函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的。C語言規(guī)定,main()函數(shù)在程序中的位置是任意的,故選項c不正確。所以,4個選項中C符合題意。
18.D
19.CChar類型數(shù)據(jù)占1個字節(jié)。
20.A本題考查數(shù)組和指針,*k指針是指向rn數(shù)組的首地址,所以要使表達武的值為6,只需要指針指向第m[2],所以答案選擇A。-
21.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標記形式有abe.a和p_abc->a。
22.邏輯結(jié)構(gòu)中相鄰的結(jié)點在存儲結(jié)構(gòu)中仍相鄰。邏輯結(jié)構(gòu)中相鄰的結(jié)點在存儲結(jié)構(gòu)中仍相鄰。解析:順序存儲結(jié)構(gòu)的主要特點是數(shù)據(jù)元素按線性表的邏輯次序,依次存放在一組地址連續(xù)的存儲單元中。在存儲單元中,各元素的物理位置和邏輯結(jié)構(gòu)中各結(jié)點間的相鄰關(guān)系是一致的。
23.!=returnj!=,returnj解析:本題程序的流程是:讓i,j都從1開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,所以if()中的條件是a[j-1]!=a[i],其中a[j-1]就是新數(shù)組中的最后一個元素,若條件成立則表示出現(xiàn)了不同的值,所以a[i]要留到新數(shù)組中。注本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。
24.i==jk!i&&k!ji==j\r\nk!i&&k!j解析:本題用雙重for循環(huán)寫了一段0~9之間不同的3個數(shù)構(gòu)成一個三位數(shù)的程序,因為要求三位數(shù)各個位數(shù)的數(shù)不能相同,所以第一個空if語句的條件應為i==j,即當兩個位數(shù)上的數(shù)相同的時候,不再執(zhí)行下面的操作,轉(zhuǎn)去執(zhí)行for循環(huán)的下一次循環(huán)。第二個空,需要判斷第三位上的數(shù)不能與其他兩位的數(shù)相同。
25.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字詞進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應填:str[i],第二空應填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應填:'%s',str。
26.malloc(11)malloc函數(shù)的格式是void*(或char*)malloc(size),size表示應分配的存儲區(qū),此題要分配11字節(jié)的單元,把11代入即可。
27.*(p+5)或p[5]*(p+5)或p[5]
28.C
29.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。所以此題中輸入數(shù)據(jù)的形式是5.04,c=3。
30.自頂向下自頂向下解析:在程序設(shè)計時,應先考慮總體,后考慮細節(jié),逐步使問題具體化,對復雜的問題,應該設(shè)計一些子目標作為過渡,上述方法概括為:自頂向下,逐步細化。
31.cdeabcdeab解析:程序中的move函數(shù)的作用是保存輸入數(shù)組中的最后一個元素,然后從最后一個數(shù)組元素開始,依次向后移動一個位置,再把保存的最后一個元素置于首位,循環(huán)次數(shù)由n控制。輸入3,abcde<回車>后主函數(shù)開始執(zhí)行,其中n=3,s[50]={'abcde'},z=5。第一次循環(huán),i=1時,調(diào)用move(s,5)函數(shù),temp=str[4]語句把數(shù)組中最后一個元素\'e\'保存在temp中,然后i從4開始循環(huán),將str[3](字符\'d\')賦給str[4],str[2](字符\'c\')賦給str[3],……,循環(huán)結(jié)束時str所指字符串為'aabcd',再將保存在temp中的\'e\'置于首位,字符串變?yōu)?eabcd';i=2時,調(diào)用move函數(shù),字符串為'deabc';i=3時,調(diào)用move函數(shù),字符串為'cdeab'。最后輸出結(jié)果為'cdeab'。
32.x+=1x+=1解析:本題考查“++”,“--”運算符?!?+”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。
33.246
34.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個十進制整數(shù),但只接受第一和第三個到函數(shù)的第二和第三個參數(shù)所指的內(nèi)存地址中。所以本題的輸出為:10300。
35.ar=9ar=9ar=11ar=9ar=9ar=11解析:本題綜合考查了for循環(huán),switch語句及宏替換等幾個知識點。j=3時,執(zhí)行PR(*(--p));輸出數(shù)組元素a[4]的值;j=2時,執(zhí)行PR(*p++);取出p所指位置的元素a[4],然后p++;當j=1時,執(zhí)行PR(*p++);取得是數(shù)組元素a[6]的值11。
36.“d1.dat”“rb”或“d1.dat”“r+b”或“d1.dat”“rb+”“d1.dat”,“rb”,或“d1.dat”,“r+b”,或“d1.dat”,“rb+”,解析:打開文件的函數(shù)為fopen(”文件名”,“mode”),其中“mode”表示文件的打開方式。如果打開的是二進制文件,其mode字符串可以是:“rb”、“wb”、“ab”、“rb+”、“wb+”、“ab+”?!皉”表示以只讀方式打開?!皐”表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件?!癮”為追加方式打開。若文件存在時;將打開這個文件并且在文件的末尾進行追加。當文件不存在,將創(chuàng)建新文件?!皉+”打開一個已存在文件用于更新(可讀可寫)。“w+”創(chuàng)建個新文件用于更新,如果文件存在,文件被重寫(可讀可寫)?!癮+”打開用于追加,當文件不存在時,創(chuàng)建新文件,并在文件末尾進行追加(可讀可寫)。根據(jù)題意,應該填“d1.dst”,“rb”或其他等價的表達法。
37.正確性測試正確性測試
38.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:Y%2=1或Y%2!=0。
39.選擇結(jié)構(gòu)選擇結(jié)構(gòu)解析:程序設(shè)計語言僅僅使用順序、選擇和重復(循環(huán))三種基本控制結(jié)構(gòu)就足以表達出各種其他形式結(jié)構(gòu)的程序設(shè)計方法。遵循程序結(jié)構(gòu)化的設(shè)計原則,按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序易于理解、使用和維護;可以提高編程工作的效率,降低軟件的開發(fā)成本。
40.88解析:本題考查基本的for循環(huán)條件,i+=2表示i每次遞增2,從0開始,輸出5個整數(shù)則需要的條件是i<=8。
41.DC語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標識符的特征。
42.B解析:題目中fun()函數(shù)的返回表達式是*p,所以選項C、D不為所選,而應該是形參p所指內(nèi)容的值,因為p為int型指針,所以該值是一個整數(shù)。故應該選擇B。
43.D
44.A
45.B解析:此程序考查了for循環(huán)和x++。對于大循環(huán),有兩個x++,其中循環(huán)3次,對于小循環(huán),循環(huán)三次,但是運行了兩次x++,所以最后結(jié)果是6+2=8。
46.B解析:本題考查變量的定義方法。如果要一次進行多個變量的定義,則在它們之間要用逗號隔開,因此選項A)和D)錯誤。在選項C)中,變量c是一個浮點型指針,它只能指向一個浮點型數(shù)據(jù),不能指向指針變量b,故選項C)錯誤。
47.C解析:本題考核的知識點是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項B和選項D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項B和選項D不正確。因為在C語言中,字符常量在存儲時,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應的ASCII代碼放到存儲單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項C正確.而選項A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項A不正確,所以,4個選項中選項C符合題意。
48.C解析:作為一個算法,一般應具有的基本特征有:可行性、確定性、有窮性、擁有足夠的情報。
49.C解析:本題涉及C語言的3個基本知識點:①C語言的源程序是由函數(shù)構(gòu)成的,函數(shù)是其基本單位,每一個函數(shù)完成相對獨立的功能,其中只能包括一個主函數(shù);②C語言規(guī)定每個語句以分號結(jié)束,其書寫格式是自由的,一條語句可以寫在不同的行上,或者一行也可以寫多條語句;⑧注釋行雖然對程序的運行不起作用,但是它可以方便程序員閱讀,提高程序的可讀性和可移植性,所以書寫注釋行還是很有必要的。
50.A左移運算符“<<”是雙目運算符,其功能是把“<<”左邊的運算數(shù)的各二進位全部左移若干位,由“<<”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0。例如,a<<4是把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位后為00110000(十進制48)。
51.B解析:continue是結(jié)束本次循環(huán),直接進入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。
52.D
53.B解析:指針數(shù)組也是一種數(shù)組,所有有關(guān)的概念都適用于它。但它與普通的數(shù)組又有區(qū)別,它的數(shù)組元素是指針類型,只能用來存放地址。其格式為:存儲類型數(shù)據(jù)類型*指針數(shù)組名[長度1],其含義為:定義了一個長度1的數(shù)組,其中數(shù)組元素為相應存儲類型的指針。
54.B解析:C語言規(guī)定,標識符是由字母、數(shù)字或下畫線組成,并且它的第一個字符必須是字母或者下畫線。
55.A解析:主函數(shù)中首先定義了4個字符變量a、b、c、d,然后通過scanf()函數(shù)輸入a、b、c、d。輸入中a和b是按字符格式c輸入的,c和d是按整型符號d輸入的。在看下面的printf()函數(shù)中,要求a、b、c、d都按字符輸出,故a和b原樣輸出為6、5,c和d將把與其ASCII碼對應的字符輸出,65和66的ASCII碼對應字符A和B,故最后的輸出為6,5,A,B。
56.B解析:本題涉及字符串最基本的兩個概念:①字符串的長度是指字符串中字符的個數(shù),但不包括字符串結(jié)束符;②以反斜杠“\\”開頭的特殊字符序列,意思是把反斜杠后面的字符序列轉(zhuǎn)換成特定的含義,而不是原來的含義,不包含在字符串長度之內(nèi),“\\”連同后面的字符為一個長度。
57.C
58.B解析:關(guān)系數(shù)據(jù)庫建立在關(guān)系數(shù)據(jù)模型的基礎(chǔ)上,具有嚴格的數(shù)學理論基礎(chǔ)。關(guān)系數(shù)據(jù)庫對數(shù)據(jù)的操作除了包括集合代數(shù)的并、差等運算之外,更定義了一組專門的關(guān)系運算:連接、選擇和投影。關(guān)系運算的特點是運算的對象都是表。
59.B解析:要解答此題只要知道兩個知識點:①在C語言中規(guī)定進行強制類型轉(zhuǎn)換的格式是:(double)變量名;②在C語言中不允許給表達式賦值。
60.D解析:結(jié)構(gòu)體變量也有地址,因此可以把它的地址賦值給一個指針變量,然后通過該指針變量來引用結(jié)構(gòu)體的成員,選項A和選項B就是通過指針變量來引用結(jié)構(gòu)體的成員,也可以通過結(jié)構(gòu)體數(shù)組元素的成員引用,而在選項D中stu[3].a(chǎn)ge不正確,因為結(jié)構(gòu)體數(shù)組stu共有三個元素,其下標應該為0,1,2。
61.B
62.C字符數(shù)組的元素數(shù)量在定義時已經(jīng)確定,與其存儲的內(nèi)容無關(guān),本題中語句chara[7]定義了由7個字符元素組成的字符數(shù)組,其sizeof(a)=7。字符數(shù)組常常存儲字符串,但其存儲的字符串長度與數(shù)組長度沒有直接關(guān)聯(lián)。c語言規(guī)定,字符串從首字符開始,以第一個值為ASCIl碼0的字符結(jié)尾,其中的非0字符數(shù)量就是字符串的長度。在本題
63.B(int)(x*100+0.5)把float型數(shù)據(jù)(x*100+0.5)強轉(zhuǎn)成int,這樣就可以去掉小數(shù)點,+0.5就是為了四舍五人。例如x=1.234,則(1.234*100+0.5)=123.9.則(int)123.9/100.0=123/100.0=1.23。
64.A本題中遇到‘\\’字符循環(huán)結(jié)束,因此只統(tǒng)計‘\\’之前的數(shù)字字符,結(jié)果為3。
65.C本題考查自增運算符的使用。
自增運算符與變量的結(jié)合方向為自右向左。題目中用兩個printf函數(shù)進行變量的輸出,第一個printf函數(shù)需要輸出的變量為m++和++n,m的初始值為14,n的初始值為24,m++操作表示先將m的值進行輸出,再進行++操作,輸出m的值為14,進行++操作后,m的值變?yōu)?5。++n操作是將n的值加1后再輸出,輸出值為25。同理,對于第二個printf函數(shù),有輸出25,16。結(jié)果為14252516。
66.A取余運算符%兩邊都應是正數(shù),賦值語句左邊必須是變量,不能是表達式,強制轉(zhuǎn)換語句強制類型應加括號,而非加在變量上。
67.A數(shù)據(jù)流圖(DFD)是用來描繪系統(tǒng)的邏輯模型的,它以圖形的方式描繪數(shù)據(jù)在
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 竹子主題課程設(shè)計模板
- 職業(yè)溝通-評價課程設(shè)計
- 《圍術(shù)期的容量治療》課件
- 瞬變電磁法課程設(shè)計
- 2024中級(四)汽車修理工理論學問試題
- 簡單電路課程設(shè)計
- 網(wǎng)絡流量監(jiān)測課程設(shè)計
- 舞蹈早上好課程設(shè)計
- 互聯(lián)網(wǎng)服務行業(yè)營業(yè)員工作總結(jié)
- 同心樹共筑和諧初一班主任第一學期工作總結(jié)
- 提升極端天氣背景下的城市政府韌性治理能力
- 服務營銷學教案
- 護理查房 小兒支氣管肺炎
- 相關(guān)方安全管理培訓
- 2023年中國雪茄煙行業(yè)現(xiàn)狀深度研究與未來投資預測報告
- 皮帶輸送機巡檢規(guī)程
- 遼寧省大連市沙河口區(qū)2022-2023學年七年級上學期期末語文試題(含答案)
- 心肺循環(huán)課件
- 東大光明清潔生產(chǎn)審核報告
- 生產(chǎn)計劃排產(chǎn)表-自動排產(chǎn)
- 管理研究方法論for msci.students maxqda12入門指南
評論
0/150
提交評論