2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下定義,則對a數組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

2.

3.

4.

5.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

6.檢查軟件產品是否符合需求定義的過程稱為______。

A.確認測試B.集成測試C.驗證測試D.驗收測試

7.C語言中char類型數據占字節(jié)數為()。

A.3B.4C.1D.2

8.以下對C語言函數的有關描述中,正確的是

A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參

B.C函數既可以嵌套定義又可以遞歸調用

C.函數必須有返回值,否則不能使用函數

D.函數必須有返回值,返回值類型不定

9.一個有n個頂點的連通無向圖至少有()條邊。

A.n-1B.nC.n+1D.n+2

10.若有以下說明和定義:則對函數fun的正確調用語句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

11.廣義表(a,b,c,d)的表頭是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

12.下列關于c語言用戶標識符的敘述中正確的是()。

A.用戶標識符中可以出現下劃線和中劃線(減號)

B.用戶標識符中不可以出現中劃線,但可以出現下劃線

C.用戶標識符中可以出現下劃線,但不可以放在用戶標識符的開頭

D.用戶標識符中可以出現下劃線和數字,它們都可以放在用戶標識符的開頭

13.下列數據結構中,按先進后出原則組織數據的是

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

14.在下面棧的基本運算中,不是加工型運算的是______。

A.初始化B.進棧C.退棧D.判???/p>

15.某某二叉樹的中序序列和后序序列正好相反,則該二叉樹一定是______的二叉樹

A.空或只有一個結點B.高度等于其結點數C.任一結點無左孩子D.任一結點無右孩子

16.二叉樹中第5層上的結點個數最多為________

A.8B.15C.16D.32

17.

下列程序的輸出結果是()。

#include<stdio.h>

main

{inta=0,i;

for(i=1;i<5;i++)

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

18.冒泡排序在最壞情況下的比較次數是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

19.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];則b的值是()。

A.5B.6C.9D.8

20.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是

A.x++;B.y++;C.c++;D.D++;

二、2.填空題(20題)21.下面程序的功能是調用sub函數計算數組a中字符串的長度,請?zhí)羁铡?/p>

sub(chars[])

{intn;

for(n=0;【】n++);

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

22.以下條件表達式可計算:1+|a|的值,請?zhí)羁?。a>=0?【】:【】

23.以下程序的輸出結果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

24.軟件危機出現于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。

25.以下程序的輸出結果是【】。

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

printf("%d\n",t);

}

26.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA"m,"BB","CC:,"DD"};

printf("%s%s%s\n,aa[em1],aa[em2],aa[em3]);

}

27.一個算法的空間復雜度是指該算法所耗費的【】。

28.在樹形結構中,樹根結點沒有______。

29.算法的工作量大小和實現算法所需的存儲單元多少分別稱為算法的【】。

30."printf("%d\n",strlen("\t\"'\023\xABC\n"));"語句的輸出結果是______。

31.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。

32.下列程序的輸出結果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

33.對數據元素之間的邏輯關系的描述是()。

34.請在以下程序第一行的下劃線處填寫適當內容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

35.設有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

36.以下程序的輸出結果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

37.以下函數用來求出兩整數之和,并通過形參將結果傳回,請?zhí)畛渫暾?/p>

voidfunc(intx,inty,【】z)

{*z=x+y;

}

38.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

39.下面rotate函數的功能:將n行n列的矩陣A轉置為A',請?zhí)羁铡?/p>

#defineN4

voidrotate(inta[][N])

{inti,j,t;

for{i=0;i<N;j++}

for{j=0;【】;j++}

{t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

40.指針變量p和數組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執(zhí)行語句p=&a[2];后,*p指向的字符串是______。

三、1.選擇題(20題)41.下列敘述中正確的是A.軟件測試的主要目的是發(fā)現程序中的錯誤

B.軟件測試的主要目的是確定程序中錯誤的位置

C.為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作

D.軟件測試是證明軟件沒有錯誤

42.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入三個整數分別賦給變量a、b、d的語句是()

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

43.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結果是()。

A.6,1B.2,1C.6,0D.2,0

44.下列程序的輸出結果是#include"stdio.h”"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

45.以下程序的輸出結果是______。main(){inta=3;printf("%\n",(a+=a-=a*a));}

A.{B.1C.2D.-12

46.以下所列的各函數首部中,正確的是______。

A.voidplay(Var:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

47.下列敘述中錯誤的是()。

A.在C語言中,函數中的自動變量可以賦初值,每調用一次賦一次初值

B.在C語言中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數形參的存儲類型是自動(auto)類型的變量

48.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結果是()。

A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,

49.已有定義:intx=3,y=4,z=5;,則表達式!(x+y)+z-1&&y+z/2的值是

A.6B.0C.2D.1

50.下列描述正確的是()。

A.C語句能嵌套定義函數,但不可以嵌套調用函數

B.C語句不能嵌套定義函數,也不可以嵌套調用函數

C.C語句能嵌套定義函數,也可以嵌套調用函數

D.C語句不能嵌套定義函數,但可以嵌套調用函數

51.有以下程序

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");

}

程序的運行結果是

A.0987654321B.4321098765C.5678901234D.0987651234

52.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A.2B.3C.5D.4

53.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

54.若要求從鍵盤讀入含有窄格字符的字符串,應使用函數()。

A.getc()B.gets()C.getchar()D.scanf()

55.鏈表不具有的特點是()

A.不必事先估計存儲空間B.可隨機訪問任一元素C.插入刪除不需要移動元素D.所需空間與線性表長度成正比

56.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

57.對于基本類型機同的兩個指針變量之間,不能進行的動算是()

A.<B.=C.+D.-

58.數據結構作為計算機的一門學科,主要研究數據的邏輯結構、對各種數據結構進行的運算,以及()。A.A.數據的存儲結構B.計算方法C.數據映象D.邏輯存儲

59.兩次運行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

A.4和2B.4和1C.4和0D.3和1

60.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

四、選擇題(20題)61.有以下程序:

則以下函數調用語句錯誤的是()。

A.

B.

C.

D.

62.(47)在結構化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是()

A.詳細設計

B.需求分析

C.總體設計

D.編程調試

63.在JavaScript語言中,要定義局部變量則可以()。

A.由關鍵字private在函數內定義

B.由關鍵字private在函數外定義

C.由var在函數內定義

D.由關鍵字var在函數外定義

64.若程序中有宏定義行:

65.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。

A.-1B.-32768C.1D.32768

66.

67.

68.軟件生命周期中所花費用最多的階段是()。

A.詳細設計B.軟件編碼C.軟件測試D.軟件維護

69.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

70.若有定義:floatx=1.5;inta=1,b=3,c--2;,則正確的switch語句是()。

71.設循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F經過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數為()。

A.20B.0或35C.15D.16

72.

73.

74.若a是數值類型,則邏輯表達式(a==1)Il(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

75.現有定義inta;doubleb;floatc;chark;,則表達式a/b+C—k值的類型為:()。

A.intB.doubleC.floatD.char

76.以下定義數組的語句中錯誤的是()。

77.下列敘述中正確的是()。

A.循環(huán)鏈表是非線性結構

B.雙向鏈表是非線性結構

C.只有一個根結點的數據結構不一定是線性結構

D.有一個以上根結點的數據結構不一定是非線性結構

78.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內和switch語句體內

D.在循環(huán)體內使用break語句和continue語句的作用相同

79.

80.有以下程序:

voidmain()

{inta=15,b=21,m=0;

switch(a%3)

{case0:m++;break;

case1:m++;

switch(b%2)

{defaule:m++;

case0:m++;break;

}

}

printf("%d\n",m);

}

程序運行后的輸出結果是()。

A.1B.2C.3D.4

五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是按以下遞歸公式求函數值。例如,當給n輸入3時,函數值為60;當給n輸入6時,函數值為480。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫函數proc,該函數的功能是:將M行N列的二維數組中的數據,按行的順序依次放到一維數組中,一維數組中數據的個數存放在形參n所指的存儲單元中。例如,若二維數組中的數據為132333431424344415253545則一維數組中的內容應該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidproc(int(*s)[103,int*b,int*n,intrain.intnn){ }voidmain{intarr[10][10]={{33,33,33,33),{44,44,44,44},{55,55,55,55}),i,j;inta[l00]={o),n=o;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",arr[i][j]):printf("\n");}proc(arr,a,&n,3,4):printf("TheAarray:\n");for(i=0;i<n;i++)printf("%3d",a[i]):printf("\n\n");}

參考答案

1.D本題考查如何引用數組元素的地址。選項A)中,p5引用的是af51的地址,而數組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤;選項B)中,*a1指的是將數組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數組的首地址。

2.D

3.C

4.D

5.D本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

6.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內部結構出發(fā)設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎上,根據模塊結構圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現與接口有關的問題。集成測試可以發(fā)現概要設計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應參與設計測試用例,通常情況下,主要使用生產中的實際數據進行測試,測試數據通過用戶接口輸入。

(4)系統(tǒng)測試是將已經通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設和網絡等其他因素結合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現問題定義時犯下的錯誤。

7.CChar類型數據占1個字節(jié)。

8.A解析:C語言中的函數可以進行遞歸調用,但不能在函數中定義函數,即函數不能嵌套定義。函數可以沒有返回值,若有返回值,則返回值類型必須確定。

9.A

10.A題干中,函數fun接收一個整型指針參數,返回值為int類型。main函數首先定義一個函數指針a,將函數fun的地址賦給a,所以a是指向函數fun的指針,可以通過a調用函數fun。選項A中,通過a調用函數fun,可以使用(*a),接收的參數是整型變量c的地址,正確;選項B中,參數x是一個數組,錯誤;選項C中,調用b函數,由于程序沒有給出函數b的定義,因此這里調用b是錯誤的,而且函數b是沒有參數的,這里調用b的時候傳入了參數,所以C錯誤;選項D中,由于b是一個函數,不能作為整型指針變量傳給fun函數,因此D錯誤。本題答案為A選項。

11.A

12.B解析:在C語言中,合法的標識符由字母,數字和下劃線組成(故選項A不正確),并且第一個字符必須為字母或者下劃線(故選項B和選項D不正確).所以,B選項為所選.

13.B解析:棧是限定在二端進行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,而不允許插入與刪除的另一端稱為棧底。棧頂元素總是最后被插入的元素,從而也是最先能被刪除的元素;棧底元素總是最先被插入的元素,從而也是最后才能被刪除的元素,即棧是按照“先進后出”或“后進先出”的原則組織數據的。注意:隊列組織數據的原則是“先進先出”或“后進后出”。注意:數據結構中,棧和隊列組織數據的原則。

14.D

15.C

16.C

17.A

\n本題考查switch語句。當i一1時,執(zhí)行case1,因為沒有遇到break語句,所以依次往下運行,“a=a+2=2,a=a+3=5”;當i=2時,執(zhí)行case2,因為沒有遇到break語句,所以依次往下執(zhí)行,“a=a+2=7,a=a+3=10”;當i=3時,執(zhí)行case3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a—a+2—13,a—a+3一l6:當i=4時,執(zhí)行default,a=a+3=19,結束循環(huán)。

18.C冒泡排序的基本思想是:將相鄰的兩個元素進行比較,如果反序,則交換;對于一個待排序的序列,經一趟排序后,最大值的元素移動到最后的位置,其他值較大的元素也向最終位置移動,此過程稱為一趟冒泡。對于有n個數據的序列,共需n-1趟排序,第i趟對從l到n-i個數據進行比較、交換。冒泡排序的最壞情況是待排序序列逆序,第l趟比較n-1次,第2趟比較n-2次。依此類推,最后趟比較1次,一共進行n-l趟排序。因此,冒泡排序在最壞情況下的比較次數是(n-1)+(n-2)+…+l,結果為n(n-1)/2。本題的正確答案是選項C。

19.C解析:p=&a[3]將指針指向數組a的第4個元素,p[5]則是數組a的第9個元素,而a[8]=9,所以b=9。

20.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。

21.s[n]!='\0';或s[n];nk=sub(a);s[n]!='\\0';或s[n];\r\nn\r\nk=sub(a);解析:函數sub()通過for循環(huán)計算字符串的長度,當字符串沒有結束時循環(huán),因此判斷循環(huán)與否的條件是看字符串是否結束。故第1空應該填寫s[n];或其他等價表達式。循環(huán)結束返回字符串長度值,循環(huán)變量n中累計了循環(huán)的次數即字符串的長度,故第2空應該填n。主函數中的空白處應該是一條調用函數sub()的語句,將字符串的首地址作為實參傳遞給形參,并將返回值賦值給變量k。故第3空應該填k=sub(a);。

22.1+a1-a1+a,1-a解析:考查條件運算符的使用。因為題目中求的是1+|a|的值,即1和a的絕對值之和,所以根據數學中求絕對值的規(guī)則;當a>=0時,絕對值取本身,當a<0時,絕對值取相反數,再結合條件運算符的計算規(guī)則,可得到本題的答案為a>=0。

23.1010解析:整型指針最初被賦的值是數組arr的頭指針,即指向數組的第一個元素30,p++后,指針指向數組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當于a[1+3],即10。因此,輸出應為100。

24.軟件工程學軟件工程學

25.77解析:在C語言中,宏定義是直接替換的,所以在對表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。

在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。

26.DDBBCCDDBBCC解析:C語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進而可知,在printf()打印函數中,要打印的數組元素是aa[3]、aa[1]、aa[2],因此最后的打印結果應當為“DDBBCC”。

27.存儲空間存儲空間解析:空間復雜度是指算法在執(zhí)行過程中臨時占用的存儲空間大小,包括:①算法本身所占用的存儲空間;②算法的輸入輸出數據所占用的存儲空間;③算法在運行過程中臨時占用的存儲空間。

28.前件前件

29.時間復雜度和空間復雜度時間復雜度和空間復雜度

30.66解析:strlen()函數的作用是計算字符串的長度并作為函數的返回值,這里的長度不包括串尾的結束標志\'\\0\'。

\'\\t\'是轉義字符,代表橫向跳若干格:\'\\\''是轉義字符,代表雙引號:\'\\023\'只代表一個字符,而不管轉義字符后面有幾個字符;\'\\xAB\'是以兩位十六進制數AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉義字符,代表回車換行。

5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

31.-24-24解析:本題考查賦值運算符a+=b等價于a=a+b;a-=a*a等價于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

32.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數為4次,每次a+=3即每次a的值增3,但因為fun函數中變量a為static類型,所以每次調用完于函數之后,變量a所做的改變都要保存。

33.數據的邏輯結構數據的邏輯結構解析:數據的邏輯結構是對數據元素之間的邏輯關系的描述,它可以用一個數據元素的集合和定義在此集合中的若干關系來表示。

34.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數中調用了一個max函數,而max函數是在調用之后定義的,所以要求填空的內容應該是對函數進行聲明的語句。由max函數的定義可知此函數是double型的,因此空格處應該填doublemax或externdoublemax。

35.6060解析:程序中定義a是一個3行2列的二維數組,p是指向兩個元素的一維數組指針,并讓p指向二維數組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

36.3535解析:函數swap(int*a,int*b)的功能是實現*a和*b中兩個數據的交換,在主函數中調用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結果為35。

37.int*int*解析:從函數體中可看出,2是一個指向整型的指針,該函數的形參z是傳地址調用。

38.黑盒軟件測試的方法有三種:動態(tài)測試、靜態(tài)測試和正確性證明。設計測試實例的方法一般有兩類:黑盒測試法和白盒測試法。在使用黑盒法設計測試實例時,測試人員將程序看成一個“黑盒”,即不關心程序內部是如何實現的,只是檢查程序是否符合它的“功能說明”,所以使用黑盒法設計的測試用例完全是根據程序的功能說明來設計的。

39.j<=ij<=i解析:由題意可知第一個空應填入j<=i,第二個空應填入a[i][j]=a[j][i]。

40.cc。cc。解析:a是指針數組,每個數組元素存放的是字符數據的地址,數組a的3個元素分別指向字符串常量'aa'、'bb'和'cc',指針p賦予數組元素a[2]的值,即指向第3個字符串。

41.A解析:本題考查軟件工程中測試的目的和方法。僅就軟件測試而言,它的目的是發(fā)現軟件的中的錯誤,但是,發(fā)現錯誤并不是最終目的,最終目的是通過測試發(fā)現錯誤之后還必須診斷并改正錯誤,這就是調試的目的。

由于測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當的。因此,在軟件測試階段通常由其他人員組成測試小組來完成測試工作。因此,經過上述分析可知選項A的說法是正確的,而選項B、C、D的說法是錯誤的。

42.A

43.B解析:本題的考點是關于C語言的整數運算和邏輯運算。由于d初值為25,“a=d/10%9中d/10”整除結果是2,再用9求余結果仍是2,因此a的值為2。而對于“b=a&&(-1)”,由于a值為2不為0,-1也不為0,因此“a&&(-1)”結果為真,b值是1。輸出結果應該是2、1。正確選項是B。

44.B解析:continue語句的作用是跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進行循環(huán)條件的判定。當能被2整除時,a就會增1,之后執(zhí)行continue語句,直接執(zhí)行到for循環(huán)體的結尾,進行i++,判斷循環(huán)條件。

45.D解析:賦值運算符的結合方向是自右至左,所以表達式a+a-=a*a先運算最右邊的a*a得9,再運算a=a-9,即a=3-9,所以此時a的值由3變成了-6,最后運算a=a+(-6),即a-(-6)+(-6)=-12。

46.C解析:C語言中函數首部中的各參數必須分開單獨定義,因此選項C才是正確的。而選項A和D是其他語言的函數定義方式。

47.C解析:外部變量在編譯時由系統(tǒng)分配永久的內存空間,所以外部變量的類型不是自動存儲類別。

48.A解析:在C語言中所謂函數的遞歸是指在調用一個函數的過程中,又出現了直接或間接調用該函數本身,直接調用該函數本身的稱為函數遞歸,而間接調用該函數稱為函數的間接遞歸調用。由程序可以看出函數f(a,i,j)為一遞歸函數,其功能是當i<j時,將數組中的元素a[i]和a[j]交換,然后再調用函數f(a,i+1,j-1),將數組中a[i+1]和a[j--]交換,這樣一直遞歸到數組下標i=j,可見該遞歸函數的作用是使數組中首尾元素依次互換。主函數中定義了一個長度為5的數組aa并初始化,然后調用f(a,0,4),將數組a中的元素依次互換,故最后for循環(huán)輸出的數組aa中各元素的值為5、4、3、2、1,所以,4個選項中選項A符合題意。

49.D解析:本題考查的知識點是!和&&的運算規(guī)則.本題中,&&左邊的表達式!(x+y)為!(3+7),結果為假,即為0。再加上2,然后減一,相當于0+5-1=4。左邊等于4,&&右邊的表達式y(tǒng)+z/2相當于4+5/2為6,所以整個表達式相當于4&&6為真,即為1,所以選項D正確。

50.D解析:C語句不能嵌套定義函數,但可以嵌套調用函數。

51.C解析:函數fun(int*s,intn1,intn2)的功能是對數組s中的元素進行首尾互相調換。所以在主函數中,當fun(a,0,3)執(zhí)行完后,數組a[12]={4,3,2,1,5,6,7,8,9,0};再執(zhí)行fun(a,4,9),數組a[12]={4,3,2,1,0,9,8,7,6,5};再執(zhí)行fun(a,0,9)后,數組a[12]={5,6,7,8,9,0,1,2,3,4}。

52.A解析:條件表達式“a?b:c”的含義是:當a為真時,其值等于表達式b的值;當a為假時,其值等于表達式c的值。

表達式運算過程:第1個表達式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達式:w=2<y=4為真,所以返回m的值,即m=2。

53.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側表達式的值賦給:左側的變量,執(zhí)行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數,而選項A中26.8不為整數,故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

54.B解析:scanf()語句中用“空格”間隔不同的字符串,空格將被全部忽略掉,所以用scanf()函數不能輸入空格;getchar()函數用于輸入字符,其調用形式為:ch=getchar(),getchar()函數從終端讀入一個字符作為函數值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入Enter鍵時,讀入才開始執(zhí)行。gets()函數的調用形式為:gets(str_adr),其中str_adr是存放輸入字符串的起始地址,可以是字符數組名、字符數組元素的地址或字符指針變量。ge

55.B解析:鏈表采用的是鏈式存儲結構,它克服了順序存儲結構的缺點:它的結點空間可以動態(tài)申請和釋放;它的數據元素的邏輯次序靠結點的指針來指示,不需要移動數據元素。但是鏈式存儲結構也有不足之處:①每個結點中的指針域需額外占用存儲空間;②鏈式存儲結構是一種非隨機存儲結構。

56.D解析:需求分析常用的工具有數據流圖(DFD)、數據字典(DD)、判定樹和判定表。PAD(問題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細設計的常用工具,不是需求分析的工具。

57.C

58.A解析:數據結構作為計算機的一門學科,主要研究和討論以下三個方面的問題:①數據集合中各數據元素之間所固有的邏輯關系,即數據的邏輯結構;②在對數據進行處理時,各數據元素在計算機中的存儲關系,即數據的存儲結構;③對各種數據結構進行的運算。

59.A解析:本題考查ifelse語句。首先scanf函數通過鍵盤讀入x的值。當x=3時,第一個if語句,先判斷條件,取x的值3和2比較,然后將x的值加1,發(fā)現條件成立,執(zhí)行下列的printf語句,輸出x的值4。當x=1時,第一個if語句,先判斷條件,取x的值1和2比較,然后將x的值加1(x的值變?yōu)?),發(fā)現條件不成立,執(zhí)行下列的else語句,先輸出x的值2,再將x的值減1。

60.C

61.C在語句”k=*f(a,b)”中,由于””的優(yōu)先級高于”*”,所以”*f(a,b);”表示其返回類型為指針的帶有兩個整型參數的函數。

62.C注:總體設計也就是概要設計

63.C

64.A常量定義在編譯時替換,所以答案選擇A)。

65.D整型的數據占4個字節(jié),即-2147483648~2147483648,32768在其表達的范圍之內,所以原樣輸出。

66.B

67.B

68.D解析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。本題中,詳細設計、軟件編碼和軟件測試都屬于軟什開發(fā)階段;維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長,花費代價最大的一個階段.軟件工程學的一個目的就是提高軟件的可維護性,降低維護的代價。

69.C解析:軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又進一步劃分為若干個階段。軟件定義時期的基本任務是確定軟件系統(tǒng)的工程需求。軟件定義可分為軟件系統(tǒng)的可行性研究和需求分析兩個階段。軟件開發(fā)時期是具體設計和實現在前一時期定義的軟件,它通常由下面五個階段組成:概要設計、詳細設計、編寫代碼、組裝測試和確認測試。軟件維護時期的主要任務是使軟件持久地滿足用戶的需要。即當軟件在使用過程中發(fā)現錯誤時應加以改正;當環(huán)境改變時應該修改軟件,以適應新的環(huán)境;當用戶有新要求時應該及時改進軟件,以滿足用戶的新要求。根據上述對軟件生命周期的介紹,可知選項C中的軟件維護不是軟件生命周期開發(fā)階段的任務。因此,本題的正確答案是C。

70.AB)選項的“switch((int)x);”語句中不應該有最后的分號。switch(exprl)中1雛Jexprl

能用浮點類型或lon9類型,也不能為一個字符串,因此c)錯誤。case后面只能是常量表達式,因此D)錯誤。

71.BQ(1:35)則隊列的存儲空間為35;對空條件:front=rear(初始化時:front=rear),隊滿時:(rear+1)%n==front,n為隊列長度(所用數組大小),因此當執(zhí)行一系列的出隊與入隊操作,front=rear.則隊列要么為空,要么為滿。

72.D

73.D

74.A邏輯或”I|”要求只要兩邊的運算對象有一個非零,結果就為真。雖然不知道a的值,但是若a為1,則左邊運算對象為1;若a的值不是1,則右邊運算對象的值為1,所以總能保證一邊非零,所以結果為真,即1。

75.B雙目運算中兩邊運算量類型轉換規(guī)律:

運算數1\t\t\t\r\n\t\t\t\t\t運算數2\t\t\t\t\r\n\t\t\t\t\t轉換結果類型\t\t\t\t\r\n\t\t\t\t\t短整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t短整型一>長整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t長整型\t\t\t\t\r\n\t\t\t\t\t整型一>長整型\t\t\t\t\r\n\t\t\t\t\t字符型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t字符型一>整型\t\t\t\t\r\n\t\t\t\t\t有符號整型\t\t\t\t\r\n\t\t\t\t\t無符號整型\t\t\t\t\r\n\t\t\t\t\t有符號整型一>無符號整型\t\t\t\t\r\n\t\t\t\t\t整型\t\t\t\t\r\n\t\t\t\t\t浮點型\t\t\t\t\r\n\t\t\t\t\t整型一>浮點型\t\t\t\t\r\n\t在a/b的時候,a,b的類型不一致,根據類型轉換規(guī)則,把整型轉換成double類型,之后的加、減類似。轉化規(guī)則為char,short一>int->unsigned->long->double←float。

76.AA)選項中定義的數組為2行4列,而賦值時賦成了3行,因此出錯。

77.C線性結構指的是數據元素之間存在著“一對一”線性關系的數據結構,這樣的結構中只有一個根節(jié)點,如循環(huán)鏈表和雙向鏈表;非線性結構指的是數據元素之間存在著“一對多”非線性關系的數據結構,這樣的結構中可能有一個根節(jié)點(如樹形結構),也可能有多個根節(jié)點(如網狀結構)。

78.C解析:只能在循環(huán)體內和switch語句體內使用break語句。當break出現在循環(huán)體的switch語句體內時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。

79.A

80.Aa=15,a%3=0,執(zhí)行case0語句標號,m++編程1,break;退出結構,所以m的值為1.

81.(1)錯誤:fun(intn);

正確:fun(intn)

(2)錯誤:if(n=1)

正確:if(n==1)

【解析】根據C語言的語法規(guī)則,函數定義之后是不加分號的。由整個程序看,函數fun()是函數定義。因此“fun(intn);”應改為“fun(intn)”;表達式n-1表示的是將1賦給變量n,顯’然是不對的。這里應該判斷變量n是否等于l,因此“if(n=1)”應改為“if(n==1)”。

82.voidproc(int(*s)[10],int*b,int*n,intmm,intnn){inti,j,k=0;for(i=0;i<mm;i++)//i是表示其行的下標for(j=0;j<nn;j++)//j是表示其列的下標b[k++]=s[i][j];//把其放到b的一維數組中*n=k;//把b數組的長度通過形參n傳回到主函數中}【解析】要將M行N列的二維數組中的數據,按行的順序依次放到一維數組中,可以通過首先行循環(huán),然后列循環(huán)取出二維數組中的每一個元素,并將其放入一維數組中。最后,將一維數組的長度通過形參返回到主函數當中。</y&&!z||1>2021-2022年河南省商丘市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下定義,則對a數組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

2.

3.

4.

5.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

6.檢查軟件產品是否符合需求定義的過程稱為______。

A.確認測試B.集成測試C.驗證測試D.驗收測試

7.C語言中char類型數據占字節(jié)數為()。

A.3B.4C.1D.2

8.以下對C語言函數的有關描述中,正確的是

A.在C語言中調用函數時,只能把實參的值傳給形參,形參的值不能傳送給實參

B.C函數既可以嵌套定義又可以遞歸調用

C.函數必須有返回值,否則不能使用函數

D.函數必須有返回值,返回值類型不定

9.一個有n個頂點的連通無向圖至少有()條邊。

A.n-1B.nC.n+1D.n+2

10.若有以下說明和定義:則對函數fun的正確調用語句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);

11.廣義表(a,b,c,d)的表頭是()。

A.aB.(a)C.(b,c,d)D.((b,c,c))

12.下列關于c語言用戶標識符的敘述中正確的是()。

A.用戶標識符中可以出現下劃線和中劃線(減號)

B.用戶標識符中不可以出現中劃線,但可以出現下劃線

C.用戶標識符中可以出現下劃線,但不可以放在用戶標識符的開頭

D.用戶標識符中可以出現下劃線和數字,它們都可以放在用戶標識符的開頭

13.下列數據結構中,按先進后出原則組織數據的是

A.線性鏈表B.棧C.循環(huán)鏈表D.順序表

14.在下面棧的基本運算中,不是加工型運算的是______。

A.初始化B.進棧C.退棧D.判???/p>

15.某某二叉樹的中序序列和后序序列正好相反,則該二叉樹一定是______的二叉樹

A.空或只有一個結點B.高度等于其結點數C.任一結點無左孩子D.任一結點無右孩子

16.二叉樹中第5層上的結點個數最多為________

A.8B.15C.16D.32

17.

下列程序的輸出結果是()。

#include<stdio.h>

main

{inta=0,i;

for(i=1;i<5;i++)

{switch(i)

{case0:

case3:a+=1;

case1;

case2:a+=2;

default:a+=3;

}

}

printf("%d",a);

}

A.19B.1C.6D.8

18.冒泡排序在最壞情況下的比較次數是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

19.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];則b的值是()。

A.5B.6C.9D.8

20.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是

A.x++;B.y++;C.c++;D.D++;

二、2.填空題(20題)21.下面程序的功能是調用sub函數計算數組a中字符串的長度,請?zhí)羁铡?/p>

sub(chars[])

{intn;

for(n=0;【】n++);

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

22.以下條件表達式可計算:1+|a|的值,請?zhí)羁铡>=0?【】:【】

23.以下程序的輸出結果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

24.軟件危機出現于60年代末,為了解決軟件危機,人們提出了【】的原理來設計軟件,這就是軟件工程誕生的基礎。

25.以下程序的輸出結果是【】。

#defineMAX(x,y)(x)>(y)?(x)L:(y)

main()

{inta=5,b=2,C=3,d=3,t;

t=MAX(a+b,c+D)*10;

printf("%d\n",t);

}

26.下面程序的輸出是【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA"m,"BB","CC:,"DD"};

printf("%s%s%s\n,aa[em1],aa[em2],aa[em3]);

}

27.一個算法的空間復雜度是指該算法所耗費的【】。

28.在樹形結構中,樹根結點沒有______。

29.算法的工作量大小和實現算法所需的存儲單元多少分別稱為算法的【】。

30."printf("%d\n",strlen("\t\"'\023\xABC\n"));"語句的輸出結果是______。

31.若a是血型變量,且a的初值為4,則計算a+=a-=a*a表達式后a的值為______。

32.下列程序的輸出結果是______。

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

33.對數據元素之間的邏輯關系的描述是()。

34.請在以下程序第一行的下劃線處填寫適當內容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

scanf("%If%If",&x,&y);

printf("%If\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

35.設有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

36.以下程序的輸出結果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

37.以下函數用來求出兩整數之和,并通過形參將結果傳回,請?zhí)畛渫暾?/p>

voidfunc(intx,inty,【】z)

{*z=x+y;

}

38.若按功能劃分,軟件測試的方法通常分為白盒測試方法和【】測試方法。

39.下面rotate函數的功能:將n行n列的矩陣A轉置為A',請?zhí)羁铡?/p>

#defineN4

voidrotate(inta[][N])

{inti,j,t;

for{i=0;i<N;j++}

for{j=0;【】;j++}

{t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

40.指針變量p和數組a的說明如下:

int*a[3]={"aa","bb","cc"},**p;

執(zhí)行語句p=&a[2];后,*p指向的字符串是______。

三、1.選擇題(20題)41.下列敘述中正確的是A.軟件測試的主要目的是發(fā)現程序中的錯誤

B.軟件測試的主要目的是確定程序中錯誤的位置

C.為了提高軟件測試的效率,最好由程序編制者自己來完成軟件測試的工作

D.軟件測試是證明軟件沒有錯誤

42.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入三個整數分別賦給變量a、b、d的語句是()

A.scanf("%d%d%d",&a,&b,d);

B.scanf("%d%d%d",&a,&b,&d);

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

43.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序運行后的輸出結果是()。

A.6,1B.2,1C.6,0D.2,0

44.下列程序的輸出結果是#include"stdio.h”"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

45.以下程序的輸出結果是______。main(){inta=3;printf("%\n",(a+=a-=a*a));}

A.{B.1C.2D.-12

46.以下所列的各函數首部中,正確的是______。

A.voidplay(Var:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

47.下列敘述中錯誤的是()。

A.在C語言中,函數中的自動變量可以賦初值,每調用一次賦一次初值

B.在C語言中,在調用函數時,實參和對應形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數形參的存儲類型是自動(auto)類型的變量

48.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}執(zhí)行后輸出結果是()。

A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,

49.已有定義:intx=3,y=4,z=5;,則表達式!(x+y)+z-1&&y+z/2的值是

A.6B.0C.2D.1

50.下列描述正確的是()。

A.C語句能嵌套定義函數,但不可以嵌套調用函數

B.C語句不能嵌套定義函數,也不可以嵌套調用函數

C.C語句能嵌套定義函數,也可以嵌套調用函數

D.C語句不能嵌套定義函數,但可以嵌套調用函數

51.有以下程序

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");

}

程序的運行結果是

A.0987654321B.4321098765C.5678901234D.0987651234

52.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

A.2B.3C.5D.4

53.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

54.若要求從鍵盤讀入含有窄格字符的字符串,應使用函數()。

A.getc()B.gets()C.getchar()D.scanf()

55.鏈表不具有的特點是()

A.不必事先估計存儲空間B.可隨機訪問任一元素C.插入刪除不需要移動元素D.所需空間與線性表長度成正比

56.下列工具中為需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

57.對于基本類型機同的兩個指針變量之間,不能進行的動算是()

A.<B.=C.+D.-

58.數據結構作為計算機的一門學科,主要研究數據的邏輯結構、對各種數據結構進行的運算,以及()。A.A.數據的存儲結構B.計算方法C.數據映象D.邏輯存儲

59.兩次運行下列的程序,如果從鍵盤上分別輸入3和1,則輸出結果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

A.4和2B.4和1C.4和0D.3和1

60.閱讀以下程序及對程序功能的描述,其中正確的是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf(“Entertheinfilename:\n”);scanf(“%s”,infile);printf(“Entertheoutfilename:\n”);scanf(“%s”,outfile);if((in=foen(infile,“r”))==NULL)printf(“cannotopeninfile\n”);exit(0);if((out=fopen(outfile,“w”))==NULL)printf(“cannotopenoutfile\n”);exit(0);while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);A.程序完成將磁盤文件的信息在屏幕上顯示的功能

B.程序完成將兩個磁盤文件合二為一的功能

C.程序完成將一個磁盤文件復制到另一個磁盤文件中

D.程序完成將兩個磁盤文件合并并在屏幕上輸出

四、選擇題(20題)61.有以下程序:

則以下函數調用語句錯誤的是()。

A.

B.

C.

D.

62.(47)在結構化方法中,軟件功能分解屬于下列軟件開發(fā)中的階段是()

A.詳細設計

B.需求分析

C.總體設計

D.編程調試

63.在JavaScript語言中,要定義局部變量則可以()。

A.由關鍵字private在函數內定義

B.由關鍵字private在函數外定義

C.由var在函數內定義

D.由關鍵字var在函數外定義

64.若程序中有宏定義行:

65.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。

A.-1B.-32768C.1D.32768

66.

67.

68.軟件生命周期中所花費用最多的階段是()。

A.詳細設計B.軟件編碼C.軟件測試D.軟件維護

69.下列選項中不屬于軟件生命周期開發(fā)階段任務的是()。

A.軟件測試B.概要設計C.軟件維護D.詳細設計

70.若有定義:floatx=1.5;inta=1,b=3,c--2;,則正確的switch語句是()。

71.設循環(huán)隊列的存儲空間為Q(1:35),初始狀態(tài)為front=rear=35?,F經過一系列入隊與退隊運算后,front=15,rear=15,則循環(huán)隊列中的元素個數為()。

A.20B.0或35C.15D.16

72.

73.

74.若a是數值類型,則邏輯表達式(a==1)Il(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能確定

75.現有定義inta;doubleb;floatc;chark;,則表達式a/b+C—k值的類型為:()。

A.intB.doubleC.floatD.char

76.以下定義數組的語句中錯誤的是()。

77.下列敘述中正確的是()。

A.循環(huán)鏈表是非線性結構

B.雙向鏈表是非線性結構

C.只有一個根結點的數據結構不一定是線性結構

D.有一個以上根結點的數據結構不一定是非線性結構

78.下列敘述中正確的是()。

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內和switch語句體內

D.在循環(huán)體內使用break語句和continue語句的作用相同

79.

80.有以下程序:

voidmain()

{inta=15,b=21,m=0;

switch(a%3)

{case0:m++;break;

case1:m++;

switch(b%2)

{defaule:m++;

case0:m++;break;

}

}

printf("%d\n",m);

}

程序運行后的輸出結果是()。

A.1B.2C.3D.4

五、程序改錯題(1題)81.下列給定程序中,函數fun()的功能是按以下遞歸公式求函數值。例如,當給n輸入3時,函數值為60;當給n輸入6時,函數值為480。請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.請編寫函數proc,該函數的功能是:將M行N列的二維數組中的數據,按行的順序依次放到一維數組中,一維數組中數據的個數存放在形參n所指的存儲單元中。例如,若二維數組中的數據為132333431424344415253545則一維數組中的內容應該是132333431424344415253545。注意:部分源程序給出如下。請勿改動main函數和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidproc(int(*s)[103,int*b,int*n,intrain.intnn){ }voidmain{intarr[10][10]={{33,33,33,33),{44,44,44,44},{55,55,55,55}),i,j;inta[l00]={o),n=o;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",arr[i][j]):printf("\n");}proc(arr,a,&n,3,4):printf("TheAarray:\n");for(i=0;i<n;i++)printf("%3d",a[i]):printf("\n\n");}

參考答案

1.D本題考查如何引用數組元素的地址。選項A)中,p5引用的是af51的地址,而數組a只有5個元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯誤;選項B)中,*a1指的是將數組a的第一個元素加1;選項C)中,這種引用方式錯誤;選項D)中,&a[0]引用的是數組的首地址。

2.D

3.C

4.D

5.D本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

6.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內部結構出發(fā)設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎上,根據模塊結構圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現與接口有關的問題。集成測試可以發(fā)現概要設計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論