版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022-2023年江西省宜春市全國計算機等級考試C語言程序設(shè)計重點匯總測試卷(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.以下敘述中正確的是
A.語句inta[8]={0};是合法的
B.語句inta[]={0};是不合法的,遺漏了數(shù)組的大小
C.語句chara[2]={"A","BII};是合法的,定義了一個包含兩個字符的數(shù)組
D.語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符
2.有以下程序
main()
{inti;
for(i=1;i<=40;i++)
{if(i++%5==0)
if(++i%8==0)printf("%d",i);
}
printf("\n");
}
執(zhí)行后的輸出結(jié)果是
A.5B.24C.32D.40
3.數(shù)據(jù)在計算機存儲器內(nèi)表示時,如果元素在存儲器中的相對位置能反映數(shù)據(jù)元素之間的邏輯關(guān)系,則稱這種存儲結(jié)構(gòu)為()。
A.存儲結(jié)構(gòu)B.邏輯結(jié)構(gòu)C.順序存儲結(jié)構(gòu)D.鏈式存儲結(jié)構(gòu)
4.數(shù)據(jù)結(jié)構(gòu)主要研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的運算和()。A.數(shù)據(jù)的方法B.數(shù)據(jù)的存儲結(jié)構(gòu)C.數(shù)據(jù)的對象D.數(shù)據(jù)的邏輯存儲
5.
6.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法
7.有以下程序
#include<stdio.h>
main()
{charb,c;inti;
b=‘a(chǎn)’;c=‘A’;
for(i=0;i<6;i++)
{if(i%2)putchar(i+b);
elseputehar(i+c);
}printf(“\n”);
}
程序運行后的輸出結(jié)果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef
8.程序運行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
9.若i、j已定義成mt型,則下列程序段中內(nèi)循環(huán)體的總執(zhí)行次數(shù)是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30
10.關(guān)于數(shù)組和指針,以下說法錯誤的是()。
A.數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置
B.既可以讀入數(shù)據(jù)到數(shù)組中,也可以讀入數(shù)據(jù)到未賦初值的指針中
C.可以將指針指向一個同類型的數(shù)組
D.指針可以指向同類型的數(shù)組中的任意一個元素
11.
12.有以下程序#include<stdio.h>voidfun(char**p){++p;printf("%s",*p);}main{char*a[]={"Morning","Afternoon","Evening","Night");fun(a);}程序的運行結(jié)果是()。A.AfternoonB.fternoonC.MorningD.orning
13.冒泡排序在最壞情況下的比較次數(shù)是()。
A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2
14.結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,三種基本結(jié)構(gòu)組成的算法A.可以完成任何復(fù)雜的任務(wù)B.只能完成部分復(fù)雜的任務(wù)C.只能完成符合結(jié)構(gòu)化的任務(wù)D.只能完成一些簡單的任務(wù)
15.
16.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序輸出為()。
A.編譯有錯B.0,0,0,3C.1,1,2,0D.0,1,2,0
17.
18.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處理的效率
19.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。
A.耦合度
B.內(nèi)聚度
C.復(fù)雜度
D.數(shù)據(jù)傳輸特性
20.設(shè)有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯誤的是()。
A.data2=(2,6);
B.data2=data1;
C.data2.real=data1.real;
D.data2.real=data1.unreal;
二、2.填空題(20題)21.子程序通常分為兩類:【】和函數(shù),前者是命令的抽象,后者是為了求值。
22.以下程序的功能是將字符串s中的數(shù)字字符放人d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串a(chǎn)bc123edf456gh,執(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);
}
23.在長度為n的有序線性表中進行二分查找。最壞的情況下,需要的比較次數(shù)為【】。
24.函數(shù)check用來判斷字符串s是否是“回文”(順讀和倒讀都一樣的字符串為“回文”,如abeba)。是則函數(shù)返回值1,否則返回值0,請?zhí)羁铡?/p>
intcheck(char*s)
{
char*p1,*p2;intn;
n=strlen(s);
p1=s;
p2=【】;
while(p1<p2)
{
if(*p1!=*p2)break;
else{p1++;p2--;}
}
if(【】)return0;
elsereturn1;
}
25.關(guān)系代數(shù)是關(guān)系操作語言的一種傳統(tǒng)表示方式,它以集合代數(shù)為基礎(chǔ),它的運算對象和運算結(jié)果均為()。
26.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運行和維護階段。
27.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:
structaa
{intdata;
【】}node;
28.下面的程序用來統(tǒng)計文件中字符的個數(shù)。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fP;
longnum=0;
if((fp=fopen("fname.dat","r"))==NULL)
{printf("Can'topenfile!\n");sxit(0);}
while【】
{fgetc(fp);num++;}
printr("num=%d\n",num);
fclose(fp);
}
29.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
30.下面程序的運行結(jié)果是【】。
#defineN10
#defines(x)x*x
#definef(x)(x*x)
mam()
{
intil,i2;
i1=1000/s(N);i2=1000/f(N);
printf("%d%d\n",il,i2);
}
31.若按功能劃分,軟件測試的方法通常分為______測試方法和黑盒測試方法。
32.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);
}
33.以下程序運行后的輸出結(jié)果是______。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
pfintf("%d\n",x);
}
34.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。
35.若x和y都是double型變量,且x的初值為3.0,y的初值為2.0,則表達式pow(y,fabs(x))的值為【】。
36.已知字符'A'的ASCII代碼值為65,以下程序運行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。
#include<stdio.h>
main()
{chara,b;
a=getchar();seanf("%d",&b);
a=a-'A'+'0';b=b*2;
prinff("%c%c\n",a,b);
}
37.有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個數(shù)之后,然后將比這個數(shù)大的數(shù)順序后移一個位置,在空出的位置上將該數(shù)插入。請在程序中的空白處填上一條語句或一個表達式。
#defineN100
main()
{floata[N+1],x;
inti,p;
for(i=0;i<N;i++)
scanf("%f"&a[i]);
scanf("%f",&x);
for(i=0,p=N;i<N;i++)
if(x<a[i])
{【】;
break;}
for(i=N-1;【】;i-)
a[i+1]=a[i];
a[p]=x;
for(i=0;【】;i++)
{printf("%8.2f",a[i]);
if(i%5=0)
printf("\n");
}
}
38.下面程序的運行結(jié)果是【】。
voidswap(int*a,int*b)
{
int*tp;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
39.問題處理方案的正確而完整的描述稱為______。
40.下面的程序可對指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)
#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(【】);
}
三、1.選擇題(20題)41.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
42.有以下程序:mam(){inti=10,j=1;printf("%d,%d\n",i--,++j);}執(zhí)行后輸出的結(jié)果是()。
A.9,2B.10,2C.9,1D.10,1
43.下述對C語言字符數(shù)組的描述中錯誤的是()
A.字符數(shù)組可以存放字符串
B.字符數(shù)組中的字符串可以整體輸入、輸出
C.可以在賦值語句中通過賦值運算符“=”對字符數(shù)組整體賦值
D.不可以用關(guān)系運算符對字符數(shù)組中的字符串進行比較
44.沒有定義語句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次輸出x數(shù)組6個元素中的值,不能完成此操作的語句是
A.for(i=0;i<6;i++)printf("%2d",*(p++));
B.for(i=0;i<6;i++)printf("%2d",*(p+i);
C.for(i=0;i<6;i++)printf("%2d",*p++);
D.for(i=0;i<6;i++)printf("%2d",(*p)++);
45.棧和隊列的共同特點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同點
46.下列程序的輸出結(jié)果是()。point(char*pt);main(){charb[4]={'a','c','s','f},*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}
A.sB.cC.fD.a
47.以下敘述中錯誤的是
A.在程序中凡是以"#"開始的語句行都是預(yù)處理命令行
B.預(yù)處理命令行的最后不能以分號表示結(jié)束
C.#defineMAX是合法的宏定義命令行
D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進行的
48.有下列程序段:intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是()。
A.4,4B.2,2C.4,5D.2,4
49.以下能正確定義一維數(shù)組的選項是______。
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";
50.關(guān)系代數(shù)運算是以______為基礎(chǔ)的運算。
A.關(guān)系運算B.謂詞運算C.集合運算D.代數(shù)運算
51.若有下列說明,則()不是對strcpy庫函數(shù)的正確的調(diào)用。strcpy庫函數(shù)用于復(fù)制一個字符串:char*strl="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";
A.languageB.lnugC.有語法錯誤D.lang
52.下列的程序用來輸出兩個字符串前7個字符中對應(yīng)相等的字符及其位置號,程序空白處應(yīng)該填寫的是()。#include<stdio.h>main(){chars1[]="chinese",s2[]="japnese";inti;for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)if(s1[i]==s2[i]&&i<7)__________________;}
A.putchar(s2[i]);putchar(i)
B.puts(s1[i],i)
C.printf("%c%d\n",s2[i],i)
D.printf("%c",s1[i]);printf("%d\n",i)
53.有以下程序#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf(“%s%s”,p,q);printf(“%s%s\n”,p,q);}若從鍵盤輸入:abcdef<回車>,則輸出結(jié)果是
A.defdefB.abcdefC.abcdD.dd
54.以下程序段的輸出結(jié)果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}輸入數(shù)據(jù)如下:(此處<CR>代表回車符)aaa<CR>bbb<CR>
A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb
55.在最壞情況下,下列排序方法中時間復(fù)雜度最小的是()。
A.冒泡排序B.快速排序C.插入排序D.堆排序
56.以下程序的功能是進行位運算:main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%d\n",a,B);}程序運行后的輸出結(jié)果是()。
A.43B.73C.70D.40
57.若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是()。
A.a,point,*&a
B.&*a,&a,*point
C.*&point,*point,&a
D.&a,&*point,point
58.下列關(guān)于隊列的敘述中正確的是______。A.在隊列中只能插入數(shù)據(jù)B.在隊列中只能刪除數(shù)據(jù)C.隊列是先進先出的線性表D.隊列是先進后出的線性表
59.下面程序的輸出結(jié)果是______。#include<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti:for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}
A.SOB.SPC.SPOPKD.SHOB
60.設(shè)有定義:intn=0,*p=&n,**q=&p;則以下選項中,正確的賦值語句是()A.p=1;B.*q=2;C.q=p;D.*p=5;
四、選擇題(20題)61.以下敘述不正確的是()。
A.在C程序中,逗號運算符的優(yōu)先級最低
B.在C程序中,APH和aph是兩個不同的變量
C.若a和b類型相同,在計算賦值表達式a=b后,b的值將放入a中,而b的值不變
D.當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值
62.定義如下變量和數(shù)組:
則下面語句的輸出結(jié)果是()。
A.951B.741C.753D.963
63.算法的空間復(fù)雜度是指()。
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
64.
65.若有定義語句:“inta=3,b=2,c=1;”,以下選項中錯誤的賦值表達式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
66.結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是()。
A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)
B.分支結(jié)構(gòu)、等價結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
C.多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價結(jié)構(gòu)
D.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
67.
68.有以下程序:
在VC6.0平臺上編譯運行,程序運行后的輸出結(jié)果是()。
A.10,6B.4,4C.2,4D.4。8
69.以下程序的輸出結(jié)果是()。
main
{intx=0.5;charz='a';
printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3
70.
71.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
72.若有定義:“int*P,x=0,*p,p=&x;”,則語句“printf("%d\n",*p);”的輸出結(jié)果是()。
A.隨機值B.0C.x的地址D.P的地址
73.讀出以下語句的輸出結(jié)果是()。
intx=10,y=10;
printf(“%d%d\n”,x--,--y);
A.1010B.99C.910D.109
74.
75.下列條件語句中,輸出結(jié)果與其他語句不同的是()。
A.if(a)printf("%dn",x);elseprint[("%d\n",y)
B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)
C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)
D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)
76.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是
A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序易讀性
77.
78.有如下程序段:inta=14,b=15,x;charc=A;x=(a&&b)&&(c<B):執(zhí)行該程序后,x的值為()。A.trueB.falseC.0D.1
79.以下程序的輸出結(jié)果是()。
#include<stdio.h>
voidmain()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
80.以下敘述中錯誤的是()。A.C程序在運行過程中所有計算都以二進制方式進行
B.C程序在運行過程中所有計算都以十進制方式進行
C.所有C程序都需要編譯鏈接無誤后才能運行
D.C程序中整型變量只能存放整數(shù),實型變量只能存放浮點數(shù)
五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:在字符串str中找出ASCⅡ碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后順序移動。例如,調(diào)用proc()函數(shù)之前給字符串輸入DcybkdGT,調(diào)用后字符串中的內(nèi)容為yDcbkdOT。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.函數(shù)fun的功能是:將s所指字符串中下標為偶數(shù)同時ASCIl值為奇數(shù)的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCIl碼值為奇數(shù),在數(shù)組中的下標為偶數(shù),因此必須刪除;而字符l的ASCIl碼值為奇數(shù),在數(shù)組中的下標為奇數(shù),因此不應(yīng)當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDFl2345”。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.AB選項中,如給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù);C選項中,chara[2]={"","B"};不合法,應(yīng)為chara[2]={′A′,′B′};;D選項中,字符數(shù)組只能在定義的時候可以用字符串常量來初始化,但不能夠先定義字符數(shù)組,然后再用字符串常量進行賦值。因此A選項正確。
2.C解析:當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后繼續(xù)執(zhí)行兩次if語句,i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故此時第一次執(zhí)行'printf('%d',i);'語句,即輸出32。
3.C
4.B詳細解答:
數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)元素及其之間的相互關(guān)系和數(shù)據(jù)運算的一門學科,它包含3個方面的內(nèi)容,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和數(shù)據(jù)的運算。
5.C
6.B解析:我們嚴格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。所以答案是選項B。A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。測試有單元測試、集成測試、確認測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。
7.B解析:變量b和c中分別存放字符a和A的ASCII碼,當i的值對2求余非零時輸出ASCII碼為i+b)的字符;當i的值對2求余為零時輸出ASCII碼為i+c的字符。分析程序可知本題選B。
8.D
9.B本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一個i,內(nèi)層j的循環(huán)都要使j~0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內(nèi)循環(huán)體執(zhí)行6*4=24次。
10.BC語言中,數(shù)組名本身就是一個指針,指向數(shù)組內(nèi)存的起始位置,選項A正確;已經(jīng)定義的數(shù)組被分配了內(nèi)存空間,所以可以讀入數(shù)據(jù)到數(shù)組中,未賦初值的指針沒有分配內(nèi)存空間,不可以讀入數(shù)據(jù),選項B錯誤;可以將指針指向一個同類型的數(shù)組,選項C正確;指針指向一個數(shù)組后,可以通過移動指針,指向該數(shù)組中的任意一個元素,選項D正確。故本題答案為B選項。
11.A
12.A執(zhí)行fun(a)語句時,P指向的是字符串數(shù)組a的第一個字符串“Morning”,p自加1之后,p指向字符串數(shù)組a的第2個字符串“Afternoon”。
13.C冒泡排序的基本思想是:將相鄰的兩個元素進行比較,如果反序,則交換;對于一個待排序的序列,經(jīng)一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數(shù)據(jù)的序列,共需n-1趟排序,第i趟對從l到n-i個數(shù)據(jù)進行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數(shù)是(n-1)+(n-2)+…+l,結(jié)果為n(n-1)/2。本題的正確答案是選項C。
14.A解析:C程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種基本的結(jié)構(gòu)組成,這三種結(jié)構(gòu)可以組成任何復(fù)雜的C程序,即可以完成任何復(fù)雜的任務(wù)。
15.D
16.AC語言中規(guī)定else總是和之前與其最近的且不帶else的if配對。題目中,“if(a=1)b=1;c=2;”默認省略了else,導(dǎo)致下一句else沒有匹配語句。故本題答案為A選項。
17.A
18.D數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),用的存儲結(jié)構(gòu)有順序和鏈式結(jié)構(gòu)。用不同的存儲結(jié)構(gòu),其處理的效率是不同的。
19.A解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標準有兩個;一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要求模塊的內(nèi)聚程度盡量地高。
20.A結(jié)構(gòu)體變量初始化的具體成員值使用花括號標注,選項A錯誤。故本題答案為A選項。
21.過程過程
22.s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57解析:根據(jù)題意,if語句的條件應(yīng)當是判斷數(shù)組元素s[i]是否為數(shù)字,故正確答案為:s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57,其中48是字符0的ASCII碼值,57是字符9的ASCII碼值。
23.log2n
24.s+n-1p1<p2s+n-1\r\np1<p2解析:判斷是否“回文”字符串,應(yīng)該使用兩個字符型指針,一個從前往后遍歷字符串,另一個從后往前遍歷字符串,直到它們中途相遇,如果每次兩個指針所指的字符都相同,則為“回文”字符串。程序中已經(jīng)使p1=s,即指向字符串的第一個字符了,所以p2應(yīng)該指向s的最后一個字符,故第一空應(yīng)填s+n-1。比較兩個指針時,如果有一次不相同,則跳出循環(huán),因為此時已可肯定不是“回文”字符串。如果是while循環(huán)的條件p1<p2不滿足時自然結(jié)束的循環(huán),則每次比較都是相同的,兩個指針是中途相遇了才結(jié)束比較。兩種情況的區(qū)別就是pl<p2是否成立。故第二空應(yīng)該填p1<p2。
25.關(guān)系關(guān)系
26.概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)
27.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。
28.(!feof(fp))或feof(fp):=0(!feof(fp))或feof(fp):=0
29.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
30.100010100010解析:首先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。
31.白盒白盒解析:軟件測試的方法分為白盒測試方法和黑盒測試方法.
32.1616解析:本題中a+=8相當于a=a+8。對表達式逐步進行求解:在a+=(a=8)中,首先a被賦值為8,語句等價于a+=8;即a=a+8;結(jié)果為a=16。
33.因為在條件表達式(a<b)?a:b中,比較表達式a<b為真,所以x的值等于a的值等于1,后面兩個條件表達式中的比較表達式都為真,所以最終x的值等于1。\r\n\r\n
34.存儲結(jié)構(gòu)
35.88解析:fabs函數(shù)功能是求x的絕對值,計算結(jié)果為double型。pow功能是計算x的y次方的值,計算結(jié)果同樣為double型。所以本題表達式相當于2.0的3.0次方,結(jié)果為8.000000。
36.1B1B解析:本題輸入B33,字符'B'被輸入給字符變量a,33賦給b,執(zhí)行a=a-'A'+'0';得到a的值'1';執(zhí)行b=b*2;得到b值66,最后以字符型輸出為1B。
37.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本題主要考查了插入排序。由于程序中的數(shù)組在開始己經(jīng)按從小到大順序排序排好。在插入時,首先要查到第一個大于恃插入數(shù)的數(shù)組下標,即當待插入元素小于數(shù)組中當前元素時,記下數(shù)組的當前下標p,并結(jié)束循環(huán),故第一空目的是為了記下數(shù)組下標,應(yīng)填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動—位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應(yīng)填>i=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應(yīng)為i<=N。(注:本題有多種答案,以上僅提供一種)
38.3535解析:在主函數(shù)中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數(shù)調(diào)用“swap(p,q)”,把p和q中的地址值傳給了形參指針.變量a和b,a和b分別指向了實參x和y。在函數(shù)swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數(shù)調(diào)用返回后x和y依舊是原來的值。
39.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。
40.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現(xiàn)過程是將相鄰兩個字符進行比較,如果當前字符小于下—個字符,則通過中間變量temp將字符兩兩交換,所以第一空應(yīng)填:str[i],第二空應(yīng)填:str[i+1]。最終打印輸出得到的字符串str,所以第三空應(yīng)填:'%s',str。
41.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點的集合,對應(yīng)任意一棵非空樹,它具有以下幾點重要的性質(zhì)。
①有且僅有一個特定的稱為根的結(jié)點。
②當n>1時,其余結(jié)點可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。
因此,本題的正確答案有且只有一個。
42.B解析:++、--運算符在變量之前是先使變量的值加1或減1,然后再使用變量的值:如果在變量之后則先使用變量之前的值,再把變量的值加1或減1。顯然,程序中表達式“i--”的值為10,“++j”的值為2,所以最后輸出的值為10和2,所以,B選項為所選。
43.C
44.D解析:本題首先定義了一個一維數(shù)組并初始化,接著定義了一個指針變量p指向數(shù)組x。因此可以通過指針p的下移,即每次加1引用數(shù)組x中的元素,來指向數(shù)組中的每個元素,這樣循環(huán)6次即可引用數(shù)組的每個元素。選項A、B和選項C滿足要求,而在選項D中表達式為(*p)++,該表達式是先取*p的值然后將其值加1,而沒有將指針下移一位。
45.C解析:考查棧和隊列概念的掌握。棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種'后進先出'的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種'先進先出'的線性表。模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項C),沒有這種耦合方式。
46.C解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)point的參數(shù)為字符指針,當執(zhí)行函數(shù)point時,剛開始指針p指向“a”,經(jīng)過+3操作后,指針p指向“f”,所以最后的輸出結(jié)果是f。
47.D解析:C語言中的預(yù)處理命令以符號#開頭,這些命令是在程序編譯之前進行處理的,選項D)的描述錯誤。
48.D解析:首先定義了一個指向一維數(shù)組b的指針p,一個指向指針p的指針變量q,輸出*(p++)是先輸出*p即b[0]的值,再將指針p指向數(shù)組的下一個元素b[1],輸出**q是輸出指針p所指單元的內(nèi)容,即b[1]的值。
49.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。
50.C解析:關(guān)系代數(shù)是以集合代數(shù)為基礎(chǔ)女發(fā)展起來的,它是以關(guān)系代數(shù)作為運算對象的一組高級運算的集合。它的基本操作是并、交、差、笛卡爾積,另外還包括針對數(shù)據(jù)庫環(huán)境專門設(shè)計的操作,包括對關(guān)系進行垂直分割(投影)、水平分割(選擇)、關(guān)系的結(jié)合(連接)等。
51.B解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址。
第1次for循環(huán),p=a,p指向數(shù)組的第1個元素,*p是取指針p所指地址的內(nèi)容,輸出1;第2次for循環(huán),p=p+2,則p指向數(shù)組的第3個元素,*p是取指針p所指地址的內(nèi)容,輸出n;第3次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出u;第4次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出g,結(jié)束循環(huán)。
52.C解析:putchar(s)的功能是把字符s輸出到標準輸出設(shè)備;puts(s1)是把s1指向的字符串輸出到標準輸出設(shè)備。
53.A解析:本題首先定義兩個字符型指針變量p和q,通過malloc()函數(shù)申請20個字符的存儲空間,并把它的首地址賦給p,再把p的值賦給q,p和q指向同一個存儲區(qū)。在scanf()語句中讀取字符串到p和q指向的字符串,先把“abc”讀取到P指向的存儲區(qū)中,第一個空格是結(jié)束標記,第二個空格是分隔符,再把“def”存放到q指向的存儲區(qū),把原先的內(nèi)容覆蓋。所以p和q指向的存儲區(qū)中內(nèi)容是“def”,所以最后輸出為def,def。
54.B解析:scanf是標準輸入函數(shù),在輸入字符串a(chǎn)aa時,實際的內(nèi)容為“aaa\\0”,“\\0”是由系統(tǒng)自動加入的:gets的功能是從終端讀入一行字符,即一直讀到換行符為止,并由系統(tǒng)自動以“/0”代替換行符。
55.D解析:在最壞情況下:冒泡排序需要的比較次數(shù)為n(n-1)/2;快速排序需要的比較次數(shù)也為n(n-1)/2;插入排序需要的比較次數(shù)也為n(n-1)/2;堆排序需要比較的次數(shù)為O(nlog2n)??芍谧顗那闆r下,堆排序的時間復(fù)雜度最小,本題的正確答案為選項D。
56.A解析:本題考查位運算。位運算的對象應(yīng)為二進制的形式。7的二進制表示為00000111,3的二進制表示為00000011,7與3相異或得00000100,即十進制數(shù)4,表達式“~4&3”先進行位反操作,再進行位與,即11111011&00000011=00000011,即十進制數(shù)3。所以應(yīng)輸出為4和3。
57.D本題主要考查指針變量對數(shù)值的引用。在題目中,首先定義了整型指針變量point和一個整型變量a,變量a的初值為4,然后是指針變量指向a,或者說將變量a所在存儲單元的地址值賦給指針變量。
在選項A中,很顯然,不全是地址,只有point表示地址,而*&a等價于*(&a),表示取一個數(shù)值。
在選項B中,也不都表示地址,其中*point表示數(shù)值,其他兩個表示地址。
在選項C中,與選項B類似,其中的*point表示數(shù)值。
在選項D中,都表示地址,是題目的選擇答案。
58.C隊列是指允許在一端進行插入、而在另一端進行刪除的線性表,選項A和選項B錯誤。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,最先插入的元素將最先能夠被刪除,反之,最后插入的元素將最后才能被刪除。所以,隊列又稱為“先進先出”或“后進后出”的線性表,它體現(xiàn)了“先來先服務(wù)”的原則,選項C正確,選項D錯誤。
59.A解析:p[0]存放的是“BOOL\\0”的首地址:p[1]存放的是“OPK\\0”的首址等。在printf語句中輸出的*p[i]表示p[i]字符串的第—個字符。在for循環(huán)中,i的初值為3,那么輸出的第—個字符為“S”,接著兩次i--,則輸出的值為*p[1],即字符“O”,所以本題的輸出為SO。
60.D解析:本題考核的知識點是指針變量定義和賦值語句的基本應(yīng)用。在使用一個指針變量之前,先要用聲明語句對其進行定義,在定義了一個指針變量之后,系統(tǒng)就為這個指針變量分配了一個存儲單元,用它來存放地址。在C語言中有兩個有關(guān)指針的運算符:&運算符,為取地址運算符,*運算符是指針運算符,*p代表p所指向的變量。本題中首先定義了整型變量n,其初值為0,接著定義一個指針變量p并讓它指向n,然后定義了一個指向指針的指針變量q并讓它指向p,選項A中將常量1賦給指針p不正確;選項B也是將常量2賦給*p,故選項B不正確;選項C中P不是指向指針的指針變量,而將他賦值給一個指向指針的指針變量小顯然不正確,所以,4個選項中選項D符合題意。
61.D在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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版借調(diào)員工跨部門溝通協(xié)作協(xié)議3篇
- 硝酸在物流行業(yè)的應(yīng)用標準
- 港口碼頭改造基礎(chǔ)設(shè)施施工合同
- 煙草種植園生物質(zhì)發(fā)電合同
- 婚慶策劃維修保修期服務(wù)承諾書
- 消防局屋頂防水修繕協(xié)議
- 服裝紡織計量監(jiān)督規(guī)章
- 居民區(qū)給水系統(tǒng)安裝合同范本
- 2024年船舶修造吊裝勞務(wù)承包合同3篇帶眉腳
- 2024年物業(yè)公司物業(yè)服務(wù)合同3篇帶眉腳
- 減少分娩損傷技術(shù)規(guī)范
- 水溶液中的離子平衡體系 保護珊瑚礁
- 結(jié)婚函調(diào)報告表
- -衛(wèi)生資格-副高-護理學-副高-章節(jié)練習-護理學總論-護理管理(單選題)(共500題)
- 電阻率測量報告
- GB/T 33859-2017環(huán)境管理水足跡原則、要求與指南
- GB/T 18838.5-2015涂覆涂料前鋼材表面處理噴射清理用金屬磨料的技術(shù)要求第5部分:鋼絲切丸
- 《美的集團財務(wù)分析報告(2020-2022)【論文】》
- 《秦統(tǒng)一中國》教學反思
- 施耐德變頻器atv212說明書
- 國家開放大學《企業(yè)集團財務(wù)管理》形考任務(wù)1-4參考答案
評論
0/150
提交評論