




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023年山東省萊蕪市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.如果最常用的操作是取第i個結點及其前驅,最節省時間的存儲方式是()。
A.單鏈表B.雙向鏈表C.單循環鏈表D.順序表
2.在Internet中,域名服務器的主要功能是實現()的轉換。
A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問
3.設有定義“intx[10],*p=x,i;”,若要為數組x讀入數據,以下選項正確的是()。
A.for(i=0;i<10;i++)scanf(“%d”,p+i);
B.for(i=0;i<10;i++)scanf(“%d”,*p+i);
C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));
D.for(i=0;i<10;i++)scanf(“%d”,x[i]);
4.下列描述中正確的是()。
A.程序就是軟件
B.軟件開發不受計算機系統的限制
C.軟件既是邏輯實體,又是物理實體
D.軟件是程序、數據與相關文檔的集合
5.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運行該程序的輸出結果是______。
A.34B.42C.43D.33
6.具有10個葉子結點的二叉樹中有()個度為2的結點。
A.8B.9C.10D.11
7.有以下程序:#include<stdio.h>intf1(inta){returna*3;}intf2(int*b){return*b*5;}main(){intx=3,y=5;printf(“%d,%d\n”,f1(x),f2(&y));}程序的運行結果是()。
A.9,125B.9,25C.3,15D.3,45
8.用鄰接矩陣A表示有向圖G的存儲結構,則有向圖G中頂點i的入度為()。
A.第i行非0元素的個數之和B.第i列非0元素的個數之和C.第i行0元素的個數之和D.第i列0元素的個數之和
9.串的長度是______。A.A.串中不同字符的個數
B.串中不同字母的個數
C.串中所含字符的個數且字符個數大于零
D.串中所含字符的個數
10.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執行語句s;則以下選項中正確的是()。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
11.以下對C語言函數的有關描述中,正確的是
A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數既可以嵌套定義又可以遞歸調用
C.函數必須有返回值,否則不能使用函數
D.函數必須有返回值,返回值類型不定
12.下列敘述中正確的是()。
A.在C語言中,預處理命令行都以“#”開頭
B.預處理命令行必須位于C語言源程序的起始位置
C.“include<stdio.h>”必須放在C語言程序的開頭
D.C語言的預處理不能實現宏定義和條件編譯的功能
13.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執行后,c的值為()。A.6B.7C.8D.9
14.設x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
15.若棧采用順序存儲方式存儲,現兩棧共享空間V[1..m],top[i]代表第i個棧(i=1,2)棧頂,棧1的底在v[1],棧2的底在V[m],則棧滿的條件是()。
A.|top[2]-top[1]|=0
B.top[1]+1=top[2]
C.top[1]+top[2]=m
D.top[1]=top[2]
16.下列有關數據庫的描述,正確的是______。
A.數據庫是一個DBF文件B.數據庫是一個關系C.數據庫是一個結構化的數據集合D.數據庫是一組文件
17.數據處理的最小單位是()。
A.數據B.數據元素C.數據項D.數據結構
18.數據表A中有10000個元素,如果僅要求求出其中最大的10個元素,則采用()最節省時間。
A.堆排序B.希爾排序C.快速排序D.希爾排序
19.數據結構通常研究數據的()及運算。
A.物理結構和邏輯結構B.存儲和抽象C.理想和抽象D.理想與邏輯
20.下列描述中正確的是()。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產品的生產率問題
C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則
D.軟件工程只是解決軟件開發中的技術問題
二、2.填空題(20題)21.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯系屬于______的聯系。
22.以下程序的功能是計算。補足所缺語句。
longf(intn)
{inti;longs;
s=【】;
for(i=1;i<=n;i++)s=【】;
returns;
}
main()
{longs;intk,n;
scanf("%d",&n);
s=【】;
for(k=0;k<=n,k++)s=s+【】;
printf("%1d\n",s);
}
23.數據的安全性是指保護數據以防止【】用戶的使用造成的數據泄密和破壞。
24.下列程序執行后輸出的結果是【】。
f(inta)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
prinf("%d\n",k);
}
25.以下程序的功能是根據輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."。空白處需要填入的內容是
#include<stdio.h>
voidYesNo(charch)
{switch(ch)
{case′y′:
case′Y′:printf("\nThisisYES.\n");
case′n′:
case′N′:printf("\nThisisNO.\n");}
main()
{charch;
printf("\nEnterachary,Yorn,N:");
ch=【】;
printf("ch;%c",ch);
YesNo(ch);}
26.下列程序的功能是將字符串s中所有的字符c刪除。請填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
27.對數據元素之間的邏輯關系的描述是()。
28.數據庫系統的三級模式分別為______模式、內部級模式與外部級模式。
29.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
30.在面向對象方法中,類之間共享屬性和操作的機制稱為______。
31.以下程序中函數huiwen的功能是檢查一個寧符串是否是回文,當字符串是回文時,函數返回字符串:yes!,否則函數返回字符串:no!,并在主函數中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請填空______。
#include<string.h>
chat*huiwen(chat*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【】;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(!t或t!=0)return("yes!");
elsereturn("no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",huiwen(str));
}
32.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
33.軟件開發環境是全面支持軟件開發全過程的【】集合。
34.下列程序的輸出結果是______。
#include<stdio.h>
fun()
{staticinta=0;
a+=3;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<5;cc++)fun();
printf("\n");
}
35.以下程序的輸出結果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
36.以下程序運行后的輸出結果是【】。
#include<string.h>
char*ss(char*s)
{char*p;t;
p=s+1;t=*s;
while(*p){*(p-1)=*p;p++;}
*(p-1)=t;
returns;
}
main()
{char*p,str[10]="abcdergh";
p=ss(str);
printf("%s\n",p);
}
37.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成程序。
38.下列程序的輸出結果是______。
#include<stdio.h>
sb(ints[],intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8};
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
39.以下程序運行后的輸出結果是【】。
mam()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2=0)
*p='*';
p++;i++;
}
puts(A);
}
40.以下程序的輸出結果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
三、1.選擇題(20題)41.在C語言程序中,下列說法正確的是()。
A.函數的定義和函數的調用均可以嵌套
B.函數的定義不可以嵌套,但函數的調用可以嵌套
C.函數的定義可以嵌套,但函數的調用不可以嵌套
D.函數的定義和函數的調用均不可以嵌套
42.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序運行后的輸出結果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
43.下面程序段的運行結果是
char*s="abcde";
s+=2;printf("%d",s);
A.cdeB.字符′c′C.字符′c′的地址D.無確定的輸出結果
44.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,6,8,10,12,7,8,9,10,
C.1,2,3,4,10,12,14,16,9,10,
D.1,2,6,8,10,12,14,16,9,10,
45.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
46.以下正確的程序段是
A.charstr1[]="12345",str2[]="abcdef";
B.charstr[10],*st="abcde";strcat(str,st);
C.charstr[10]=""。*st="abcde";strcat(str,st);
D.char*st1="12345",*st2="abcde";strcat(st1,st2);
47.設有變量說明int(*p)[m],其中的標識符p是()。
A.m個指向整型變量的指針
B.指向m個整型變量的指針
C.一個指向具有m個整型元素的一維數組的指針
D.具有m個指針元素的一維指針數組,每個元素都指向整型變量
48.以下選項中不合法的標識符是A.printB.FORC.&aD._00
49.下列程序的輸出結果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}
A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi
50.以下對C語言函數的有關描述中,正確的是
A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數既可以嵌套定義又可以遞歸調用
C.函數必須有返回值,否則不能使用函數
D.函數必須有返回值,返回值類型不定
51.設inti=10,j=11,k=12,x=0;執行語句:if(i>5)if(j>100)if(k>11)X=3;elsex=4;elsex=5;后x的值是()。
A.0B.3C.4D.5
52.假定a和b為int型變量,則執行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);
A.9B.-2C.-1D.8
53.若執行下面的程序時,從鍵盤輸入5和2,則輸出結果是
main()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a<b)k=a%b;
elsek=b%a;
printf("%d\n",k);}
A.5B.3C.2D.0
54.以下敘述正確的是
A.在C語言中,只能用"/*"和"*/"對程序進行注釋
B.在C語言注釋語句中,"/"和"*"之間不可以有空格
C.注釋語句只能使用西文
D.在C程序中,注釋說明只能位于一條語句的后面
55.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
56.以下選項中非法的表達式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
57.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}則程序運行后向文件輸出的結果是()
A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh
58.以下程序的輸出結果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}
A.123456780B.123456780C.12345678D.147
59.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是
A.編譯出錯B.9C.21D.9
60.下列定義變量的語句中錯誤的是()。
A.int_int;B.doubleint_;C.charfor;D.floatUS$
四、選擇題(20題)61.待排序的關鍵碼序列為15,20,9,30,67,65,45,90,要按關鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關鍵碼15被放到第()個位置。
A.2B.3C.4D.5
62.設有定義:
則以下賦值語句中錯誤的是()。
A.data2=(2,6);
B.data2=datal;
C.data;real=datal.real;
D.data2.real=datal.unreal;
63.對建立良好的程序設計風格,下面描述正確的是
A.程序應簡單、清晰、可讀性好B.符號名的命名只需符合語法
C.充分考慮程序的執行效率D.程序的注釋可有可無
64.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
65.
66.以下敘述中正確的是()。
A.在C語言中,預處理命令行都以“#”開頭
B.預處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預處理不能實現宏定義和條件編譯的功能
67.
68.下列關于信息系統的敘述中,錯誤的是()。
A.廣播電視是一種雙向的、點到多點的信息交互系自
B.網絡聊天是一種雙向的,以信息交互為主要目的系統
C.電話是一種雙向的、點對點的、以信息交互為主要的的系統
D.雷達是一種以感測和識別為主要目的的系統
69.程序調試的目的是
A.發現程序中的錯誤B.改正程序中的錯誤C.驗證程序的正確性D.改善軟件的性能
70.下面描述中錯誤的是()。
A.系統總體結構圖支持軟件系統的詳細設計
B.軟件設計是將軟件需求轉換為軟件表示的過程
C.數據結構與數據庫設計是軟件設計的任務之一
D.PAD圖是軟件詳細設計的表示工具
71.
72.以下程序的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,3,4,10,12,14,16,9,10,
C.1,2,6,8,10,12,7,8,9,10,
D.1,2,6,8,10,12,14,16,9,10,
73.有以下程序:
若運行時輸入:246<;回車>;,則輸出結果為()。
A.204B.200C.240D.246
74.28.以下敘述中錯誤的是
A.對于float類型數組,不可以直接用數組名完成對數組進行整體輸入或輸出
B.數組名代表的是數組所占存儲區的首地址,其值是常量,是不可改變的
C.當執行程序時,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息
D.可以通過賦初值的方式確定數組元素的個數
75.在結構化程序設計方法中,下面內聚性最弱的是()。
A.邏輯內聚B.時間內聚C.偶然內聚D.過程內聚
76.關系數據庫管理系統所管理的關系是()。A.若干個二維表B.一個DBF文件C.一個DBC文件D.若干個DBC文件
77.有以下程序執行后的輸出結果是()。
A.3B.2C.1D.4
78.下列敘述中錯誤的是()。
A.一個C語言程序只能實現一種算法
B.c程序可以由多個程序文件組成
C.C程序可以由一個或多個函數組成
D.一個C函數可以單獨作為一個C稃序文件存存
79.已有定義:chara[]="xyz",b[]={′x′,′y′,′z′};,以下敘述中正確的是()。
A)數組a和b的長度相同B)a數組長度小于b數組長度
C)a數組長度大于b數組長度D)上述說法都不對
80.
下述程序的輸出結果是()。
#include<stdio.h>
voidmain
{intb[6]={2,4,6,8,10,12);
int*p=b,**q=&p;
printf("%d,",*(p++));
printf("%d,",**q);
}
A.4,4B.2,2C.4,5D.2,4
五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是:將長整型數中各位上為奇數的數依次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。例如,當s中的數為87653142時,t中的數為7531。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構!試題程序:
六、程序設計題(1題)82.函數fun的功能是:將S所指字符串中除下標為偶數同時ASCIl碼值也為偶數的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數組中。例如,若s所指字符串中的內容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數,因此應當刪除;字符8的ASCIl碼值為偶數,但在數組中的下標為奇數,因此也應當刪除;字符2的ASCIl碼值為偶數,在數組中的下標也為偶數,因此不應當刪除,其他依此類推。最后t所指的數組中的內容應是‘'246”。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。試題程序:
參考答案
1.D
2.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統DNS,運行域名系統的主機稱為域名服務器。域名服務器的主要功能是實現入網主機名字和IP地址的轉換。
3.AC語言中scanf函數的聲明為“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2個參數是地址。因此,從4個答案中可以判斷,只有選項A是p[i]的地址,其他的均是變量本身。故本題答案為A選項。
4.D\r\n軟件是與計算機操作相關的計算機程序、規程、規則,以及可能有的文件、文檔及數據;軟件開發要受到計算機系統的限制;軟件是一個邏輯實體,不是物理實體,軟件具有抽象性。因此選項D正確。
5.D解析:逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。
6.B
7.Bf1函數接收整型數a,將a的值乘以3,結果作為函數返回值返回;f2接收整型變量的地址,將地址中的值取出后乘以5,結果作為返回值返回;main函數定義兩個變量x、y,初值分別是3和5,所以調用f1(x)返回值為9,調用f2(&y)返回值為25。故本題答案為B選項。
8.B
9.D解析:串的長度指的是串中字符的個數,且其字符個數可以為零。選項D正確。
10.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數來完成,選項A錯誤;選項B不管大于還是小于都執行S,不符合題意;選項C正好相反,當s2大于s1時,執行語句S,可知選項D正確。
11.A解析:C語言中的函數可以進行遞歸調用,但不能在函數中定義函數,即函數不能嵌套定義。函數可以沒有返回值,若有返回值,則返回值類型必須確定。
12.A預處理命令以“#”開頭,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、C選項錯誤。C語言的預處理能夠實現宏定義和條件編譯的功能,所以D選項錯誤。故本題答案為A選項。
13.D本題考查兩個知識點,按位異或左移把b左移2位化成二進制c=a(b<<2)=a^(000010<<2)=a^001000=0000001^O01000=9,故選擇D。
14.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。
15.B
16.C解析:數據庫(Database,簡稱DB)是數據的集合,它具有統一的結構形式并存放于統一的存儲介質內,是多種應用數據的集成,并可被各個應用程序所共享。數據庫中的數據具有“集成”、“共事”之特點。
17.C解析:數據處理的最小單位是數據項;由若干數據項組成數據元素;而數據是指能夠被計算機識別、存儲和加工處理的信息載體;數據結構是指數據之間的相互關系和數據運算。故正確答案為選項C)。
18.B
19.A
20.C\r\n軟件工程是試圖用工程、科學和數學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調在軟件開發工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發成本和進度無法控制、軟件質量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發生產率的提高趕不上硬件的發展和應用需求的增長。軟件項目的管理、軟件產品的生產率、軟件開發中的技術都是軟件工程需要解決的部分問題。因此選項C正確。
21.1對多(或1:N)1對多(或1:N)
22.1s*i0f(k)
23.(非法)不合法(非法)不合法
24.77解析:在程序執行時,static變量僅初始化一次,下次使用時將使用上次保存的值。
25.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。題中要求根據輸入的字符調用函數YesNo來判斷輸入的字符是y(Y)還是n(N),字符的輸入可用字符輸入函數getchar。函數YesNo用來判斷一個字符是y(Y)還是n(N),主要用了一個switch多分支結構來比較輸入字符與字符\ue008'y',\ue009'Y'、,'n','N'是否相等來實現的。
26.S[j++]=s[i]S[j++]=s[i]解析:循環開始后如果數組s中儲存值與字符c相同,則i++直接跳過當前值;如果不相同,則將當前值賦予數組指定位置,并通過j++將下標加1,指向下一元素要存儲的位置。
27.數據的邏輯結構數據的邏輯結構解析:數據的邏輯結構是對數據元素之間的邏輯關系的描述,它可以用一個數據元素的集合和定義在此集合中的若干關系來表示。
28.概念(或概念級)概念(或概念級)
29.邊界值分析法邊界值分析法解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例。常用的黑箱測試有等價類劃分、邊界值分析法和錯誤推測法3種。
30.繼承繼承
31.str+strlen(str)-1str+strlen(str)-1解析:先從main函數開始看,它先讀入字符串,接下來肯定是要判斷這個字符串是否是回文,冉看huiwen函數,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括結束符‘/0‘),將p1左移,p2右移,直到這兩個指針相遇,如果在移動過程中發現p1!=p2,則該字符串不是回文,否則其是同文。因此。在空中填str+strlen(str)-1。
32.88解析:本程序定義了3個指針變量p1、p2、p,并且將,、b的地址分別賦給P1、p2,則*p1=a=2,*p2=b=4,所以表達式*p1*(*p2)的值是8。在賦值語句的左邊是*(p=&c),即使指針p指向了變量c,因而*(p)代表了c的存儲單元,賦值語句“*(p=&c)=*p1*(*p2);”是把整數8賦給了變量c。
33.軟件工具軟件工具
34.3691236912解析:本題考查最基本的for循環:for(cc=1;cc<5;cc++)規定循環次數為4次,每次a+=3即每次a的值增3,但因為fun函數中變量a為static類型,所以每次調用完于函數之后,變量a所做的改變都要保存。
35.2468
36.bcdefghabcdefgha解析:在本題定義的ss()函數中首先定義了一個指針p和一個字符變量t,然后讓p指向參數指針s的下一個位置s+1,并讓t保存s位置的字符。然后使用一個while循環將p指向的內容賦給它前面一個位置,即將參數s所指的字符串從第2個字符開始整體往前移動一位。循環結束時,p指向原s串的結束標志處,所以讓*(p-1)=t;即是將原s串的第1個字符復制到s串的最后一個位置。整個函數實現的是讓一個字符串循環左移一位。故主函數中最后輸出的字符串是'bcdefgha'。
37.自頂而下自頂而下
38.86518651解析:主程序中,第一次循環時,i=0,調用sb(s,x)子函數,此時n=3,x=s[n]=s[3]=8,然后將n減1變為2;第二次循環時,i=1,調用sb(s,x)子函數,因為將n定義為了靜態變量,所以此時n=2,返回x=s[n]=s[2]=6;第三次循環時,i=2,調用sb(s,x)子函數,此時n=1,返回x=s[n]=s[1]=5;第四次循環時,i=3,調用sb(s,x)子函數,此時n=0,返回x=s[n]=s[0]=1。此程序實際上是將數組s逆序輸出。
39.*2*4*6*8**2*4*6*8*解析:程序中定義了一個字符數組a,并初始化為123456789,接著定義了一個指針p并讓它指向數組a,緊接著執行了一個while循環,此循環的作用是:當i為偶數時,將“*”賦給a[i],p指向數組末尾,循環結束,此時數組中a[0]、a[2]、a[4]、a[6]和a[8]的值都為“*”,所以最后調用puts()函數輸出的a的值為*2*4*6*8*
40.SOSO解析:考查用指針引用字符串數組中元素的方法。題中需要注意兩個問題:一是for循環的修正表達式共執行兩次'i--'操作;二是*p[i]是對某個字符的引用。
41.B解析:本題考查函數調用的基本概念。因為函數的結果是個未知量,而函數定義時不能使用未知量,所以函數定義不可以嵌套,但函數的調用可以嵌套。
42.A解析:本題利用多重for循環的嵌套來實現對二維數組元素的按列排序。利用最外層循環來實現對列的控制。內部循環利用選擇法對數組元素按照從小到大的順序進行排列,最后輸出對角線上的元素值。
43.C解析:對于字符串指針,其保留的是整個串的首地址,即第一個字符的起始地址;當該指針做算術運算時,就是該指針根據其類型向后移動相應的存儲空間。
44.B解析:本題在調用函數時,實參是數組名也是把數組a的首地址傳遞給形參,由條件i=2且i<6得出函數將列以a[2]開始的4個元素(3、4、5、6)進行乘2操作,結果分別是a[2]=6、a[3]=8、a[4]=10、a[5]=12。a[0]、a[1]、a[6]、a[7]、a[8]、a[9]的值沒有發生變化。
45.C解析:^是按位異或運算,如果對應位不同則結果為1,相同則為0。
46.C解析:本題考查了一維字符數組的定義和初始化。選項C中str[10]初始化為空,可以不必進行類似''的空賦值,字符數組若沒有進行初始化賦值,默認的字符為空,并且定義完str數組后,應該用“,”分隔而不是“。”,所以選項C錯誤。
47.C解析:本題考查指向數組的指針變量的聲明。這里的p表示一個指向數組的指針;*p表示指針p指向地址的內容。
48.C解析:C語言中標識符的命名必須遵守一定的規則:標識符由字母、數字和下劃線組成,并且第一個字符必須是字母或下劃線。同時,在C語言的標識符中是區分大小寫字母的。C選項中的標識符以&開頭,不符合C語言中標識符的命名規則。
49.A
50.A解析:C語言中的函數可以進行遞歸調用,但不能在函數中定義函數,即函數不能嵌套定義。函數可以沒有返回值,若有返回值,則返回值類型必須確定。
51.D解析:首先判斷i>5,表達式的值為真,再判斷j>100,表達式的值為假,執行x=5。因此只有選項D正確。
52.D
53.C解析:本題考查簡單的if…else語句。先執行條件if(a<b),顯然不成立,在執行else語句。
54.B解析:在C語言程序段中可以對程序進行注釋,注釋部分必須用“/*”和“*/”括起來,其中,“/”和“*”之間不可有空格,注釋可以是西文,也可以是中文,注釋說明語同步以出現在程序的任意位置。綜上所述,本題的答案為B)。
55.D解析:需求分析常用的工具有數據流圖(DFD)、數據字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細設計的常用工具,不是需求分析的工具。
56.D解析:選項A)在C語言中是一個合法的關系表達式,但它并不代表數學式o<=x<100。計算0<=x<100時,從左到右結合,先計算0<=x,其結果只能是0或1,然后再比較0<100或1<100。根據運算符的優先級,選項B)先判斷j==0是否成立,其結果只能是0或1,然后再將0或1賦給i。選項C)中,(char)(65+3)為類型強制轉換,將整數型數據轉換為字符型。選項D)是將一個數據賦給一個表達式,等號左邊不合要求,所以錯誤。
57.B解析:本題對文件test輸出4個數據,第一個5原樣輸出,第二個238.41只保留小數點后1位,然后輸出一個‘,’,再連續輸出兩個字符‘B’和‘h’。所以最終的輸出結果是5238.4,Bh。應該選擇B。
58.C解析:p是指針數組,通過第1個循環的賦值,p[0]、p[1]、p[2]分別指向二維數組ch的第1行、第2行、第3行,因此輸出字符串“12345678”。
59.B解析:本題考查函數的綜合知識。首先,我們可以利用強制轉換類型轉換運算符將一個表達式轉換成所需類型。如:(double)a是將a轉換成double類型;(int)(x+y)是將x+y的值轉換成整型。
本題可按部就班地逐步運算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
60.D解析:$不能用做變量名,合法的標識符由字母、數字和下畫線組成。
61.A解析:選擇排序的基本思想是掃描整個線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個位置,元素15則放在第二個位置。
62.AA)選項中可以在聲明變量的同事為data2賦值,但是dala2=(2,6);應寫作data2={2,61。所以選擇A。
63.A具有良好的程序設計風格是一個程序員必不可少的素質。我們在編寫程序時要養成良好的程序設計習慣,對程序的要求不僅能夠在計算機上正確運行,而且要便于閱讀和被別人理解,便于程序的調試和維護。好的程序設計風格有助于提高程序的正確性、可讀性、可維護性和可用性。要使程序具有良好的風格,必須做到以下幾點:
(1)合理的標識符的命名。由于一個程序中必然有很多標識符,特別是在一個大型復雜的程序中,標識符可能成千上萬,對標識符作用的正確理解是讀懂程序的前提,如果程序員隨意命名標識符,程序的可讀性會很差。因此,在命名標識符時要注意其可理解性。
(2)在程序中添加一定的注釋。注釋是程序員與日后的程序讀者之間詢通的重要工具,它用自然語言或偽碼描述。它說明了程序的功能,特別是在維護階段,對理解程序提供了明確指導。因此,一定的注釋是程序必不可少的組成部分。
(3)程序的編輯風格。為了使程序的結構一目了然,可以在程序中利用空格、空行、縮進等技巧使程序層次清晰,便于對程序的理解。
(4)語句的結構。在結構化程序設計中,單個語句結構是編碼階段的任務,語句結構追求簡單直接,不能為了追求效率而使代碼復雜化。
總之,程序應簡單、清晰、可讀性和可理解性好。
64.C題目中給出的程序分為兩個部分:主函數main和函數f。在主函數中初始化定義了一個整型數組a,大小為6,并定義了兩個數組指針p,q。指針p指向數組第一個元素的地址,指針q指向數組最后一個元素的地址。主函數包含一個while語句,循環條件為p<q,while語句內部先調用了f函數,p、q指針為該函數的實參,隨后進行了p++操作和q--,即使p指針指向下一個元素的地址,q指針指向前一個元素的地址。由于是數組存儲,必然存在初始時,有p<q,當p>=q時,while語句結束。while語句后面是for語句,該語句的作用是輸出數組a[]中所有的數據。
f函數的形參為整型指針,函數的功能是使得輸入的指針變量所指向的數據進行交換,由于使用的是指針變量,故在f函數中對指針的操作結果會影響調用函數中(main)實參所指數據的改變,題目中f函數的調用實質是將main函數中的p、q指針所指的數據進行交換,也將導致數組a中相應的數據進行交換。結合while語句,也就是將數組a中的第1個數據與第6個數據進行交換,第2個數據與第5個數據進行交換,以此類推,得到結果10,8,6,4,2,1。
65.C
66.A預處理命令是以“#”號開頭的命令,它們不是C語言的可執行命令,這些命令應該在函數之外書寫,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、c錯誤。C語言的預處理能夠實現宏定義和條件編譯等功能,所以D錯誤。
67.D
68.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統。
69.B調試也稱排錯或糾錯。它與成功的測試形影相隨,測試成功的標志是發現錯誤。根據錯誤跡象,診斷錯誤的原因和位置,進而改正程序中的錯誤,這就是調試的任務。
調試分為靜態調試和動態調試,靜態調試就是指對源程序進行分析,然后確定可能出錯的地方并進行排錯。動態調試是指對程序的運行進行跟蹤并觀察其出錯點,然后進行排錯。
靜態調試通常可以采用如下兩種方法。
(1)輸出寄存器的內容
在測試中出現問題,設法保留現場信息。把所有的寄存器和主存中有關部分的內容打印出來(通常以八進制或十六進制的形式打印),進行分析研究。用這種方法調試,輸出的是程序的靜止狀態(程序在某一時刻的狀態),效率非常低,不得已才采用。
(2)為取得關鍵變量的動態值,在程序中插入打印語句。這是取得動態信息的簡單方法,并可檢驗在某事件后某個變量是否按預期要求發生了變化。此方法的缺點是可能輸出大量需要分析的信息,必須修改源程序才能插入打印語句,這可能改變關鍵的時序關系,引入新的錯誤。
動態調試通常利用程序語言提供的調試功能或專門的調試工具來分析程序的動態行為。一般程序語言和工具提供的調試功能有檢查主存和寄存器;設置斷點,即當執行到特定語句或改變特定變量的值時,程序停止執行,以便分析程序此時的狀態。
70.A詳細設計的任務是為軟件結構圖中而非總體結構圖中的每一個模塊確定實現算法和局部數據結構,用某種選定的表達工具表示算法和數據結構的細節,所以A錯誤。
71.C
72.C函數f的功能是將數組中第3、4、5、6個元素乘以2,因此f(a)操作的結果是將元素(3,4,5,6)乘以2,操作結束后,數組a為(1,2,6,8,10,12,7,8,9,10)。
73.A本題中輸入的3個數據2,4,6分別賦值給了x[0[0],x[1][0],x[2][0]。x[o][1]仍為初始時的0,所以打印輸出時的結果為A選項。
74.C選項A“對于float類型數組,不可以直接用數組名完成對數組進行整體輸入或輸出”,是正確的。C語言中規定,只有字符型的數組才可以用數組名完成對數組進行整體輸入或輸出,主要是因為沒有字符串型的變量,通常用一個字符數組來存放字符串。采用字符串方式后,便可用數組名對數組進行整體輸入和輸出。
選項B“數組名代表的是數組所占存儲區的首地址,其值是常量,是不可改變的”,是正確的。數組名本身是沒有方括號和下標的,它實際上是表示數組起始的地址,該地址在數組初始化時由系統分配。
選項C“當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出‘下標越界’的出錯信息”,是錯誤的。在某些編程語言中,下標的取值是不允許超出數組定義中所設的界限的。但是在C和C++中,編譯器不對下標的范圍進行檢查。不檢查下標范圍的目的有兩個,一個是提高運行效率,不檢查下標,程序編譯耗費時間少。另一個是能夠方便指針的使用,數組名并沒有包含該數組長度的信息,只包含地址信息,可以看成是一個指針,若檢查下標,將限制數組名的使用功能。
選項D“可以通過賦初值的方式確定數組元素的個數”是正確的。C語言規定,如果對數組中所有的元素賦初值,可以省略定義元素的個數。
75.C內聚按強度從低到高有以下幾種類型:
(1)偶然內聚,如果一個模塊的各成分之間毫無關系,則稱為偶然內聚,也就是說模塊完成一組任務,這些任務之間的關系松散,實際上沒有什么聯系。(2)邏輯內聚,幾個邏輯上相關的功能被放在同一模塊中,則稱為邏輯內聚。如一個模塊讀取各種不同類型外設的輸入。盡管邏輯內聚比偶然內聚合理一些,但邏輯內聚的模塊各成分在功能上并無關系,即使局部功能的修改有時也會影響全局,因此這類模塊的修改也比較困難。(3)時間內聚,如果一個模塊完成的功能必須在同一時間內執行(如系統初始化),但這些功能只是因為時間因素關聯在一起,則稱為時間內聚。
(4)過程內聚,如果一個模塊內部的處理成分是相關的,而且這些處理必須以特定的次序執行,則稱為過程內聚。
76.A解析:VisualFoxPro就是一種關系數據庫管理系統,一個“表”就是一個關系,一個關系就是一個二維表。關系數據庫管理系統可管理若干個二維表。
77.Ac的值為a乘以b的值,為3。所以答案選擇A)。
78.A一個C語言程序能實現多種算法,所以A)錯誤。
79.C數組a占4個字節,數組b占3個字節。所以數組a長度大于b長度。
80.D
\n首先定義了一個指向一維數組b的指針P,一個指向指針P的指針變量q;輸出*(p++)是先輸出*p,即b[O]的值,再將指針P指向數組的下一個元素b[1];輸出**q是輸出指針P所指單元的內容。
\n
81.(1)錯誤:t=0;
正確:*t=0;
(2)錯誤:if(d%2==0)
正確:if(d%2!=O)或if(d%2==1)
【解析】變量t定義為指針型變量,所以不能對t賦初值,不應該是t=0,而是*t=0;題目要求將長整型數中各位上為奇數的數依次取出,因此if語句里應該是d%2!=0。此題較簡單,考查的是指針變量作為函數參數和奇偶的判斷。
82.
2022-2023年山東省萊蕪市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(20題)1.如果最常用的操作是取第i個結點及其前驅,最節省時間的存儲方式是()。
A.單鏈表B.雙向鏈表C.單循環鏈表D.順序表
2.在Internet中,域名服務器的主要功能是實現()的轉換。
A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問
3.設有定義“intx[10],*p=x,i;”,若要為數組x讀入數據,以下選項正確的是()。
A.for(i=0;i<10;i++)scanf(“%d”,p+i);
B.for(i=0;i<10;i++)scanf(“%d”,*p+i);
C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));
D.for(i=0;i<10;i++)scanf(“%d”,x[i]);
4.下列描述中正確的是()。
A.程序就是軟件
B.軟件開發不受計算機系統的限制
C.軟件既是邏輯實體,又是物理實體
D.軟件是程序、數據與相關文檔的集合
5.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運行該程序的輸出結果是______。
A.34B.42C.43D.33
6.具有10個葉子結點的二叉樹中有()個度為2的結點。
A.8B.9C.10D.11
7.有以下程序:#include<stdio.h>intf1(inta){returna*3;}intf2(int*b){return*b*5;}main(){intx=3,y=5;printf(“%d,%d\n”,f1(x),f2(&y));}程序的運行結果是()。
A.9,125B.9,25C.3,15D.3,45
8.用鄰接矩陣A表示有向圖G的存儲結構,則有向圖G中頂點i的入度為()。
A.第i行非0元素的個數之和B.第i列非0元素的個數之和C.第i行0元素的個數之和D.第i列0元素的個數之和
9.串的長度是______。A.A.串中不同字符的個數
B.串中不同字母的個數
C.串中所含字符的個數且字符個數大于零
D.串中所含字符的個數
10.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執行語句s;則以下選項中正確的是()。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
11.以下對C語言函數的有關描述中,正確的是
A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數既可以嵌套定義又可以遞歸調用
C.函數必須有返回值,否則不能使用函數
D.函數必須有返回值,返回值類型不定
12.下列敘述中正確的是()。
A.在C語言中,預處理命令行都以“#”開頭
B.預處理命令行必須位于C語言源程序的起始位置
C.“include<stdio.h>”必須放在C語言程序的開頭
D.C語言的預處理不能實現宏定義和條件編譯的功能
13.設有以下語句:inta=1,b=2,c;c=a^(b<<2);執行后,c的值為()。A.6B.7C.8D.9
14.設x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
15.若棧采用順序存儲方式存儲,現兩棧共享空間V[1..m],top[i]代表第i個棧(i=1,2)棧頂,棧1的底在v[1],棧2的底在V[m],則棧滿的條件是()。
A.|top[2]-top[1]|=0
B.top[1]+1=top[2]
C.top[1]+top[2]=m
D.top[1]=top[2]
16.下列有關數據庫的描述,正確的是______。
A.數據庫是一個DBF文件B.數據庫是一個關系C.數據庫是一個結構化的數據集合D.數據庫是一組文件
17.數據處理的最小單位是()。
A.數據B.數據元素C.數據項D.數據結構
18.數據表A中有10000個元素,如果僅要求求出其中最大的10個元素,則采用()最節省時間。
A.堆排序B.希爾排序C.快速排序D.希爾排序
19.數據結構通常研究數據的()及運算。
A.物理結構和邏輯結構B.存儲和抽象C.理想和抽象D.理想與邏輯
20.下列描述中正確的是()。
A.軟件工程只是解決軟件項目的管理問題
B.軟件工程主要解決軟件產品的生產率問題
C.軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則
D.軟件工程只是解決軟件開發中的技術問題
二、2.填空題(20題)21.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯系屬于______的聯系。
22.以下程序的功能是計算。補足所缺語句。
longf(intn)
{inti;longs;
s=【】;
for(i=1;i<=n;i++)s=【】;
returns;
}
main()
{longs;intk,n;
scanf("%d",&n);
s=【】;
for(k=0;k<=n,k++)s=s+【】;
printf("%1d\n",s);
}
23.數據的安全性是指保護數據以防止【】用戶的使用造成的數據泄密和破壞。
24.下列程序執行后輸出的結果是【】。
f(inta)
{staticc=0;
c=a+c++;
return(c);
}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
prinf("%d\n",k);
}
25.以下程序的功能是根據輸入的"y"("Y")與"n"("N"),在屏幕上分別顯示出"ThisisYES."與"ThisisNO."。空白處需要填入的內容是
#include<stdio.h>
voidYesNo(charch)
{switch(ch)
{case′y′:
case′Y′:printf("\nThisisYES.\n");
case′n′:
case′N′:printf("\nThisisNO.\n");}
main()
{charch;
printf("\nEnterachary,Yorn,N:");
ch=【】;
printf("ch;%c",ch);
YesNo(ch);}
26.下列程序的功能是將字符串s中所有的字符c刪除。請填空。
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
27.對數據元素之間的邏輯關系的描述是()。
28.數據庫系統的三級模式分別為______模式、內部級模式與外部級模式。
29.常用的黑箱測試有等價類劃分法、【】和錯誤推測法3種。
30.在面向對象方法中,類之間共享屬性和操作的機制稱為______。
31.以下程序中函數huiwen的功能是檢查一個寧符串是否是回文,當字符串是回文時,函數返回字符串:yes!,否則函數返回字符串:no!,并在主函數中輸出。所謂回文即正向與反向的拼寫都一樣,例如:adgda。請填空______。
#include<string.h>
chat*huiwen(chat*str)
{char*p1,*p2;inti,t=0;
p1=str;p2=【】;
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if(!t或t!=0)return("yes!");
elsereturn("no!");
}
main()
{charstr[50];
printf("Input:");scanf("%s",str);
printf("%s\n",huiwen(str));
}
32.下列程序的輸出結果是______。
main()
{inta=2,b=4,c=6;
int*p1=&a,*p2=&b,*p;
*(p=&c)=*p1*(*p2);
printf("%d\n",c);
}
33.軟件開發環境是全面支持軟件開發全過程的【】集合。
34.下列程序的輸出結果是______。
#include<stdio.h>
fun()
{staticinta=0;
a+=3;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<5;cc++)fun();
printf("\n");
}
35.以下程序的輸出結果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
}
36.以下程序運行后的輸出結果是【】。
#include<string.h>
char*ss(char*s)
{char*p;t;
p=s+1;t=*s;
while(*p){*(p-1)=*p;p++;}
*(p-1)=t;
returns;
}
main()
{char*p,str[10]="abcdergh";
p=ss(str);
printf("%s\n",p);
}
37.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成程序。
38.下列程序的輸出結果是______。
#include<stdio.h>
sb(ints[],intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8};
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
39.以下程序運行后的輸出結果是【】。
mam()
{
chara[]="123456789",*p;
inti=0;
p=a;
while(*p)
{
if(i%2=0)
*p='*';
p++;i++;
}
puts(A);
}
40.以下程序的輸出結果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
三、1.選擇題(20題)41.在C語言程序中,下列說法正確的是()。
A.函數的定義和函數的調用均可以嵌套
B.函數的定義不可以嵌套,但函數的調用可以嵌套
C.函數的定義可以嵌套,但函數的調用不可以嵌套
D.函數的定義和函數的調用均不可以嵌套
42.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序運行后的輸出結果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
43.下面程序段的運行結果是
char*s="abcde";
s+=2;printf("%d",s);
A.cdeB.字符′c′C.字符′c′的地址D.無確定的輸出結果
44.有以下程序:voidf(intb[]){inti;for(i=2;i<6;i++)b[i]*=2;}main(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;f(A);for(i=0;i<10;i++)printf("%d,",a[i]);}程序運行后的輸出結果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.1,2,6,8,10,12,7,8,9,10,
C.1,2,3,4,10,12,14,16,9,10,
D.1,2,6,8,10,12,14,16,9,10,
45.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
46.以下正確的程序段是
A.charstr1[]="12345",str2[]="abcdef";
B.charstr[10],*st="abcde";strcat(str,st);
C.charstr[10]=""。*st="abcde";strcat(str,st);
D.char*st1="12345",*st2="abcde";strcat(st1,st2);
47.設有變量說明int(*p)[m],其中的標識符p是()。
A.m個指向整型變量的指針
B.指向m個整型變量的指針
C.一個指向具有m個整型元素的一維數組的指針
D.具有m個指針元素的一維指針數組,每個元素都指向整型變量
48.以下選項中不合法的標識符是A.printB.FORC.&aD._00
49.下列程序的輸出結果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}
A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi
50.以下對C語言函數的有關描述中,正確的是
A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參
B.C函數既可以嵌套定義又可以遞歸調用
C.函數必須有返回值,否則不能使用函數
D.函數必須有返回值,返回值類型不定
51.設inti=10,j=11,k=12,x=0;執行語句:if(i>5)if(j>100)if(k>11)X=3;elsex=4;elsex=5;后x的值是()。
A.0B.3C.4D.5
52.假定a和b為int型變量,則執行以下語句后,b的值為______。a=1;b=10;do{b-=a;a++;}while(b--<0);
A.9B.-2C.-1D.8
53.若執行下面的程序時,從鍵盤輸入5和2,則輸出結果是
main()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a<b)k=a%b;
elsek=b%a;
printf("%d\n",k);}
A.5B.3C.2D.0
54.以下敘述正確的是
A.在C語言中,只能用"/*"和"*/"對程序進行注釋
B.在C語言注釋語句中,"/"和"*"之間不可以有空格
C.注釋語句只能使用西文
D.在C程序中,注釋說明只能位于一條語句的后面
55.下列工具中為需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
56.以下選項中非法的表達式是()。
A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1
57.若有如下程序:#include"stdio.h"voidmain(){FILE*fp;fp=fopen("test","wb")fprintf(fp,"%d%.1f,%c%c",5,238.41,'B','h');fclose(fp);}則程序運行后向文件輸出的結果是()
A.5238.41BhB.5238.4,BhC.5,238.4,B,hD.5238.41Bh
58.以下程序的輸出結果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}
A.123456780B.123456780C.12345678D.147
59.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序運行后的輸出結果是
A.編譯出錯B.9C.21D.9
60.下列定義變量的語句中錯誤的是()。
A.int_int;B.doubleint_;C.charfor;D.floatUS$
四、選擇題(20題)61.待排序的關鍵碼序列為15,20,9,30,67,65,45,90,要按關鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關鍵碼15被放到第()個位置。
A.2B.3C.4D.5
62.設有定義:
則以下賦值語句中錯誤的是()。
A.data2=(2,6);
B.data2=datal;
C.data;real=datal.real;
D.data2.real=datal.unreal;
63.對建立良好的程序設計風格,下面描述正確的是
A.程序應簡單、清晰、可讀性好B.符號名的命名只需符合語法
C.充分考慮程序的執行效率D.程序的注釋可有可無
64.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
該程序的輸出結果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
65.
66.以下敘述中正確的是()。
A.在C語言中,預處理命令行都以“#”開頭
B.預處理命令行必須位于c源程序的起始位置
C.#include<stdi0.h>必須放在C程序的開頭
D.C語言的預處理不能實現宏定義和條件編譯的功能
67.
68.下列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 郴電國際招聘筆試真題2024
- 衢州市教育局直屬公辦學校招聘教師筆試真題2024
- 2025年機械原理理論試題
- 截一個幾何體-教學設計
- 人工智能倫理與技術發展-洞察闡釋
- 重慶精細鐵粉生產線項目可行性研究報告(范文模板)
- 污水處理企業經營管理方案
- 第一課 在美術世界中遨游 教材 教案 講義 教學設計 教學參考 教學案例(初一美術第十三冊(人美版))
- 坪山-龍湖產業協作示范園項目可行性研究報告
- 2025至2030年中國瓷器壁掛行業投資前景及策略咨詢報告
- 高中地理必修1期末試卷及答案-人教版-2024-2025學年
- 腦梗急救護理
- 學習貫徹二十屆三中全會精神測試題200(含答案)
- 2024年新人教版一年級數學下冊《教材練習10練習十附答案》教學課件
- 綜英4學習通超星期末考試答案章節答案2024年
- 低溫水電解制氫系統 穩動態及電能質量性能測試方法(征求意見稿)
- 人教版五年級音樂下冊保衛黃河課件模板
- 氣象行業天氣預報技能競賽理論試題庫資料(含答案)
- 一把手講安全課件:提升全員安全意識
- 校園環保之星事跡材料(7篇)
- (高清版)AQ∕T 3002-2021 阻隔防爆橇裝式加油(氣)裝置技術要求
評論
0/150
提交評論