一、選擇題
(1)循環(huán)鏈表的主要優(yōu)點是
A)不再需要頭指針了
B)從表中任一結(jié)點出發(fā)都能訪問到整個鏈表
C)在進行插入、刪除運算時,能更好的保證鏈表不斷開
D)已知某個結(jié)點的位置后,能夠容易的找到它的直接前件
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEA
C)DBCEA D)CDABE
(3)n個頂點的強連通圖的邊數(shù)至少有
A)n-1 B)n(n-1)
C)n D)n+1
(4)在結(jié)構(gòu)化程序設計思想提出之前,在程序設計中曾強調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的
A)安全性 B)一致性
C)可理解性 D)合理性
(5)模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準則是模塊的
A)抽象和信息隱蔽 B)局部化和封裝化
C)內(nèi)聚性和耦合性 D)激活機制和控制方法
(6)軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成
A)定義、開發(fā)、運行維護
B)設計階段、編程階段、測試階段
C)總體設計、詳細設計、編程調(diào)試
D)需求分析、功能定義、系統(tǒng)設計
(7)在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是
A)路徑的集合 B)循環(huán)的集合
C)目標的集合 D)地址的集合
(8)在數(shù)據(jù)管理技術(shù)發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有
A)特定的數(shù)據(jù)模型 B)數(shù)據(jù)無冗余
C)數(shù)據(jù)可共享 D)專門的數(shù)據(jù)管理軟件
(9)數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是
A)概念設計和邏輯設計
B)模式設計和內(nèi)模式設計
C)內(nèi)模式設計和物理設計
D)結(jié)構(gòu)特性設計和行為特性設計
(10)實體是信息世界中廣泛使用的一個術(shù)語,它用于表示
A)有生命的事物 B)無生命的事物
C)實際存在的事物 D)一切事物
(11)以下說法錯誤的是
A)一個算法應包含有限個步驟
B)在計算機上實現(xiàn)的算法是用來處理數(shù)據(jù)對象的
C)算法中指定的操作,不能通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)
D)算法的目的是為了求解
(12)下列選項中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是
A)順序結(jié)構(gòu)
B)跳轉(zhuǎn)分支結(jié)構(gòu)
C)選擇結(jié)構(gòu)
D)循環(huán)結(jié)構(gòu)
(13)已知int k,m=1;執(zhí)行語句k=-m++;后,k的值是
A)-1
B)0
C)1
D)2
(14)已知int m;float k;正確的語句是
A)(int k)%m
B)int(k)%m
C)int(k%m)
D)(int)k%m
(15)下面各選項中,均是C語言標識符的選項組是
A)33 we auto
B)_23 me _3ew
C)_43 3e_ else
D)ER -DF 32
(16)已知int k;float m=-3;執(zhí)行語句k=m%2;后,變量k的值是
A)-1
B)0
C)1
D)語句有錯誤
(17)不能進行++和--運算的數(shù)據(jù)類型為
A)指針
B)整型
C)長整型
D)常量
(18)已知int k=10,m=3,n;則下列語句輸出結(jié)果是
printf("%d\n",n=(k%m,k/m));
A)2
B)3
C)4
D)5
(19)已知int a;float b;所用的scanf調(diào)用語句格式為:
scanf("a//%d,b=%f",&a,&b);
為了將數(shù)據(jù)3和25.08分別賦給x和y,正確的輸入應當是
A)3,25.08
B)a=3,b=25.08
C)a//3,b=25.08
D)a//3b=25.08
(20)當k的值不為0時,在下列選項中能夠?qū)的值賦給變量m,n的是
A)m=k=n
B)(m=k)&&(n=k)
C)(m=k)||(n=k)
D)(k=m)&&(n=k)
(21)下列程序的運行結(jié)果是
#include "stdio.h"
main()
{ int x=-9,y=5,z=8;
if(x if(y<0)z=0;
else z+=1;
printf("%d\n",z);}
A)6
B)7
C)8
D)9
(22)現(xiàn)有定義int k=1;則執(zhí)行語句while(++k<4);后,k的值為
A)4
B)5
C)6
D)8
(23)以下程序的運行結(jié)果為
#include "stdio.h"
main()
{int m,n;
for(m=0,n=10;m printf("%d,%d\n",m,n);}
A)6,7
B)7,6
C)9,7
D)7,9
(24)閱讀下列程序,程序的輸出結(jié)果是
#include "stdio.h"
main()
{
int m,n;
float k;
for(m=6;m>2;m--)
{ k=0;
for(n=m;n>1;n--)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
(25)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{int i,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=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
(26)下列選項可以正確表示字符型常量的是
A)′\r′
B)"a"
C)"\897"
D)296
(27)下面對C語言的描述中,正確的是
A)函數(shù)一定有返回值,否則無法使用函數(shù)
B)C語言函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C)在C語言中,調(diào)用函數(shù)時,只能將實參的值傳遞給形參
D)C語言程序中有調(diào)用關系的所有函數(shù)都必須放在同一源程序文件中
(28)閱讀下面程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int m=4,n=2,k;
k=fun(m,n);
printf("%d\n",k);}
fun(int m,int n)
{return(m*m*m-n*n*n);}
A)64
B)8
C)56
D)0
(29)閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
main()
{ char fun(char,int);
char a=′A′;
int b=13;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
{char k;
k=a+b;
return k;}
A)A
B)M
C)N
D)L
(30)編寫求兩個雙精度數(shù)之和的函數(shù),選項中正確的是
A)double add(double a,double b)
{double s;
s=a+b;
return s; }
B)double add(double a,b)
{double s;
s=a+b;
return (s);}
C)double add(double a double b)
{double s;
s=a+b;
returns;}
D)double add(a,b)
{double a,b,s;
s=a+b;
return (s);}
(31)已知int a;則下面的說明指針變量p的語句正確的是
A)int p=&a
B)int *p=a
C)int *p=&a
D)int *p=*a
(32)已知char **t;則變量t是
A)指向char變量的指針
B)指向指針的char變量
C)指向指針的指針
D)以上說法都不對
(33)閱讀下面程序,執(zhí)行后的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;}
main()
{ int *a,*b,x=10,y=15;
a=&x;
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);}
A)10,15
B)5,15
C)5,10
D)15,10
(34)閱讀下面程序,在程序執(zhí)行后的結(jié)果為
#include "stdio.h"
int *fun(int *a,int *b)
{ int m;
m=*a;
m+=*b-3;
return(&m);}
main()
{int x=21,y=35,*a=&x,*b=&y;
int *k;
k=fun(a,b);
printf("%d\n",*k);}
A)53
B)21
C)35
D)14
(35)已知int a[10];則對a數(shù)組元素的正確引用是
A)a[10]
B)a
C)a+5
D)a[10-10]
(36)在C語言中,一維數(shù)組的定義方法為
類型說明符 數(shù)組名
A)[常量表達式]
B)[整型常量]
C)[整型變量]
D)[整型常量]或[整型表達式]
(37)閱讀下列程序,則運行結(jié)果為
#include "stdio.h"
fun()
{ static int x=5;
x++;
return x;}
main()
{ int i,x;
for(i=0;i<3;i++)
x=fun();
printf("%d\n",x);}
A)5
B)6
C)7
D)8
(38)下列程序的輸出結(jié)果是
#include "stdio.h"
#defineM(x,y)x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);}
A)2
B)3
C)4
D)5
(39)閱讀下面程序,則程序段的功能是
#include "stdio.h"
main()
{ int c[]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0 && t>c[j])
{c[j+1]=c[j];j--;}
c[j+1]=t;}
for(i=0;i<7;i++)
printf("%d ",c[i]);
putchar(′\n′);}
A)對數(shù)組元素的升序排列
B)對數(shù)組元素的降序排列
C)對數(shù)組元素的倒序排列
D)對數(shù)組元素的隨機排列
(40)閱讀下列程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6
B)62,5
C)56,5
D)3E,6
(41)下列選項中錯誤的說明語句是
A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
B)char a[]={"toyou\0"};
C)char a[]="toyou\0";
D)char a[]=′toyou\0′;
(42)下述對C語言字符數(shù)組的描述中錯誤的是
A)字符數(shù)組的下標從0開始
B)字符數(shù)組中的字符串可以進行整體輸入/輸出
C)可以在賦值語句中通過賦值運算符“=”對字符數(shù)組整體賦值
D)字符數(shù)組可以存放字符串
(43)閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為
#include "stdio.h"
#include "string.h"
main()
{char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);}
A)nice to meet you you
B)nice to
C)meet you you
D)nice to you
(44)閱讀下面程序,則執(zhí)行后的結(jié)果是
#include "stdio.h"
main()
{char str[]="tomeetme",*p;
for(p=str;p printf("\n");}
A)tomeetme
B)tmem
C)oete
D)tome
(45)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)如下:t to meet me<回車>
則程序輸出的結(jié)果是
#include "stdio.h"
main(argc,argv)
int argc;char *argv[];
{int i;
printf("%d\n",argc);}
A)3
B)4
C)2
D)以上答案都不正確
(46)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
long fun(int n)
{if(n>2)
return(fun(n-1)+fun(n-2));
else return(2);}
main()
{printf("%ld\n",fun(5));}
A)10
B)15
C)20
D)以上3個答案都不正確
(47)已知如下定義,則sizeof(a)的值是
struct{int i;
char c;
double a; } a;
A)8
B)9
C)10
D)11
(48)已知函數(shù)的原形如下,其中結(jié)構(gòu)體a為已經(jīng)定義過的結(jié)構(gòu),且有下列變量定義
struct a *f(int t1,int *t2,strcut a t3,struct a *t4)
struct a p,*p1;int i;
則正確的函數(shù)調(diào)用語句為
A)&p=f(10,&i,p,p1);
B)p1=f(i++,(int *)p1,p,&p);
C)p=f(i+1,&(i+2),*p,p);
D)f(i+1,&i,p,p);
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ printf("%d\n",12<<2);}
A)0
B)47
C)48
D)24
(50)假定當前盤符下有兩個文本文件,如下
文件名 a1.txt a2.txt
內(nèi)容 123# 321#
則下面程序段執(zhí)行后的結(jié)果為
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar(′\n′);}
A)123321
B)123
C)321
D)以上答案都不正確 二、填空題
(1)常用的黑箱測試有等價分類法、 【1】 、因果圖法和錯誤推測法4種。
解析: 黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法4種。
(2)測試的目的是暴露錯誤,評價程序的可靠性;而 【2】 的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
解析: 軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定;調(diào)試也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
(3)軟件維護活動包括以下幾類:改正性維護、適應性維護、 【3】 維護和預防性維護。
解析: 軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。改正性維護是指在軟件交付使用后,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應當進行的診斷和改正錯誤的過程;適應性維護是指為了使軟件適應變化,而去修改軟件的過程;完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性;預防性維護是為了提高軟件的可維護性、可靠性等,為以后的進一步改進軟件打下良好基礎。
(4)在面向?qū)ο蟮脑O計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【4】 。
解析: 在面向?qū)ο蠹夹g(shù)中,主要用到對象(object)、類(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來請求對象執(zhí)行某一處理或回答某些信息的要求。
(5)關鍵字ASC和DESC分別表示 【5】 的含義。
解析: ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語句中的ORDER子句中。
(6)定義int a=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為 【6】 。
【命題目的】考查對于基本運算符的掌握情況。
【解題要點】++和--做前綴使用的時候,先對變量進行增1或減1,之后進行其他的運算。
【考點鏈接】賦值運算符的優(yōu)先級僅僅高于逗號運算符。
(7)以下程序的輸出結(jié)果是 【7】 。
#include "stdio.h"
main()
{int a=065;
printf("%d\n",--a);
}
【命題目的】考查對于數(shù)據(jù)的格式化輸出的掌握情況。
【解題要點】八進制的65轉(zhuǎn)換為十進制的53之后減1輸出。
【考點鏈接】0開頭的是八進制整數(shù)。
(8)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【8】 。
#include "stdio.h"
main()
{int x,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
else printf("%d",y);
printf("%d\n",z);
}
【命題目的】考查對于if語句的掌握情況。
【解題要點】C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf("%d\n",z);語句。
(9)如下語句printf("%c\n",′B′+40);在執(zhí)行后的輸出結(jié)果是 【9】 。
【命題目的】考查對于字符常量運算的掌握情況。
【解題要點】在C程序中的字符量可參與任何整數(shù)運算。
【考點鏈接】%c是以字符的形式輸出。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{int a=30,b=20,z;
z=fun(a+b,a-b);
printf("%d\n",z);
}
fun(int a,int b)
{int z;
z=a/b;
return z;
}
【命題目的】考查對于函數(shù)的調(diào)用和返回值的掌握情況。
【解題要點】函數(shù)調(diào)用的時候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認為整形,當返回值為整型的函數(shù)放到主函數(shù)后面時,可以不需要事先說明就調(diào)用這個函數(shù)。
【考點鏈接】retrun既可以返回一個普通常量,也可以返回一個指針變量。
(11)下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個數(shù)中,求出的和最小的數(shù)據(jù),請?zhí)羁铡?BR> fun(int *p,int n)
{int *q;
int max,min;
max=min=*p;
for(q=p; 【11】 ;q++)
if( 【12】 )max=*q;
else if( 【13】 )min=*q;
}
【命題目的】考查對于函數(shù)的地址傳遞的掌握情況。
【解題要點】通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進行引用。
(12)下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請?zhí)羁铡?BR> fun(int x,int b[])
{ int k=0,r;
do{
r=x% 【14】 ;
b[ 【15】 ]=r;
x/= 【16】 ;
}while(x);
}
【命題目的】考查對于數(shù)組操作的綜合運用。
【解題要點】深刻理解十進制轉(zhuǎn)化為二進制的方法,即取余法;數(shù)組名作為實參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。
【考點鏈接】do…while循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。
(13)下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁铡?BR> void fun(char str[])
{int i,j, 【17】 ;
for(i=0,j= 【18】 ;i { k=str[i];
str[i]=str[j];
str[j]=k;
}
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(15)閱讀下列程序,則程序的輸出結(jié)果為【20】。
#include "stdio.h"
struct ty
{int data;
char c;
};
main()
{ struct ty a={30,′x′};
fun(a);
printf("%d%c",a.data,a.c);
}
fun(struct ty b)
{ b.data=20;
b.c=′y′;
}
【命題目的】考查對于結(jié)構(gòu)體的掌握情況。
【解題要點】本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。
(1)循環(huán)鏈表的主要優(yōu)點是
A)不再需要頭指針了
B)從表中任一結(jié)點出發(fā)都能訪問到整個鏈表
C)在進行插入、刪除運算時,能更好的保證鏈表不斷開
D)已知某個結(jié)點的位置后,能夠容易的找到它的直接前件
(2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是
A)ABCED B)DCBEA
C)DBCEA D)CDABE
(3)n個頂點的強連通圖的邊數(shù)至少有
A)n-1 B)n(n-1)
C)n D)n+1
(4)在結(jié)構(gòu)化程序設計思想提出之前,在程序設計中曾強調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的
A)安全性 B)一致性
C)可理解性 D)合理性
(5)模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準則是模塊的
A)抽象和信息隱蔽 B)局部化和封裝化
C)內(nèi)聚性和耦合性 D)激活機制和控制方法
(6)軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成
A)定義、開發(fā)、運行維護
B)設計階段、編程階段、測試階段
C)總體設計、詳細設計、編程調(diào)試
D)需求分析、功能定義、系統(tǒng)設計
(7)在軟件工程中,白箱測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是
A)路徑的集合 B)循環(huán)的集合
C)目標的集合 D)地址的集合
(8)在數(shù)據(jù)管理技術(shù)發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有
A)特定的數(shù)據(jù)模型 B)數(shù)據(jù)無冗余
C)數(shù)據(jù)可共享 D)專門的數(shù)據(jù)管理軟件
(9)數(shù)據(jù)庫設計包括兩個方面的設計內(nèi)容,它們是
A)概念設計和邏輯設計
B)模式設計和內(nèi)模式設計
C)內(nèi)模式設計和物理設計
D)結(jié)構(gòu)特性設計和行為特性設計
(10)實體是信息世界中廣泛使用的一個術(shù)語,它用于表示
A)有生命的事物 B)無生命的事物
C)實際存在的事物 D)一切事物
(11)以下說法錯誤的是
A)一個算法應包含有限個步驟
B)在計算機上實現(xiàn)的算法是用來處理數(shù)據(jù)對象的
C)算法中指定的操作,不能通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次后實現(xiàn)
D)算法的目的是為了求解
(12)下列選項中不是結(jié)構(gòu)化程序基本結(jié)構(gòu)的是
A)順序結(jié)構(gòu)
B)跳轉(zhuǎn)分支結(jié)構(gòu)
C)選擇結(jié)構(gòu)
D)循環(huán)結(jié)構(gòu)
(13)已知int k,m=1;執(zhí)行語句k=-m++;后,k的值是
A)-1
B)0
C)1
D)2
(14)已知int m;float k;正確的語句是
A)(int k)%m
B)int(k)%m
C)int(k%m)
D)(int)k%m
(15)下面各選項中,均是C語言標識符的選項組是
A)33 we auto
B)_23 me _3ew
C)_43 3e_ else
D)ER -DF 32
(16)已知int k;float m=-3;執(zhí)行語句k=m%2;后,變量k的值是
A)-1
B)0
C)1
D)語句有錯誤
(17)不能進行++和--運算的數(shù)據(jù)類型為
A)指針
B)整型
C)長整型
D)常量
(18)已知int k=10,m=3,n;則下列語句輸出結(jié)果是
printf("%d\n",n=(k%m,k/m));
A)2
B)3
C)4
D)5
(19)已知int a;float b;所用的scanf調(diào)用語句格式為:
scanf("a//%d,b=%f",&a,&b);
為了將數(shù)據(jù)3和25.08分別賦給x和y,正確的輸入應當是
A)3,25.08
B)a=3,b=25.08
C)a//3,b=25.08
D)a//3b=25.08
(20)當k的值不為0時,在下列選項中能夠?qū)的值賦給變量m,n的是
A)m=k=n
B)(m=k)&&(n=k)
C)(m=k)||(n=k)
D)(k=m)&&(n=k)
(21)下列程序的運行結(jié)果是
#include "stdio.h"
main()
{ int x=-9,y=5,z=8;
if(x if(y<0)z=0;
else z+=1;
printf("%d\n",z);}
A)6
B)7
C)8
D)9
(22)現(xiàn)有定義int k=1;則執(zhí)行語句while(++k<4);后,k的值為
A)4
B)5
C)6
D)8
(23)以下程序的運行結(jié)果為
#include "stdio.h"
main()
{int m,n;
for(m=0,n=10;m printf("%d,%d\n",m,n);}
A)6,7
B)7,6
C)9,7
D)7,9
(24)閱讀下列程序,程序的輸出結(jié)果是
#include "stdio.h"
main()
{
int m,n;
float k;
for(m=6;m>2;m--)
{ k=0;
for(n=m;n>1;n--)
k=k+m*n;
}
printf("%f\n",k);
}
A)5.000000
B)15.000000
C)25.000000
D)35.000000
(25)下列程序的輸出結(jié)果是
#include "stdio.h"
main()
{int i,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=4
B)a=4,b=5
C)a=5,b=4
D)a=5,b=5
(26)下列選項可以正確表示字符型常量的是
A)′\r′
B)"a"
C)"\897"
D)296
(27)下面對C語言的描述中,正確的是
A)函數(shù)一定有返回值,否則無法使用函數(shù)
B)C語言函數(shù)既可以嵌套定義又可以遞歸調(diào)用
C)在C語言中,調(diào)用函數(shù)時,只能將實參的值傳遞給形參
D)C語言程序中有調(diào)用關系的所有函數(shù)都必須放在同一源程序文件中
(28)閱讀下面程序段,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{int m=4,n=2,k;
k=fun(m,n);
printf("%d\n",k);}
fun(int m,int n)
{return(m*m*m-n*n*n);}
A)64
B)8
C)56
D)0
(29)閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是
#include "stdio.h"
main()
{ char fun(char,int);
char a=′A′;
int b=13;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
{char k;
k=a+b;
return k;}
A)A
B)M
C)N
D)L
(30)編寫求兩個雙精度數(shù)之和的函數(shù),選項中正確的是
A)double add(double a,double b)
{double s;
s=a+b;
return s; }
B)double add(double a,b)
{double s;
s=a+b;
return (s);}
C)double add(double a double b)
{double s;
s=a+b;
returns;}
D)double add(a,b)
{double a,b,s;
s=a+b;
return (s);}
(31)已知int a;則下面的說明指針變量p的語句正確的是
A)int p=&a
B)int *p=a
C)int *p=&a
D)int *p=*a
(32)已知char **t;則變量t是
A)指向char變量的指針
B)指向指針的char變量
C)指向指針的指針
D)以上說法都不對
(33)閱讀下面程序,執(zhí)行后的結(jié)果為
#include "stdio.h"
void fun(int *a,int *b)
{ int k;
k=5;
*a=k;
*b=*a+k;}
main()
{ int *a,*b,x=10,y=15;
a=&x;
b=&y;
fun(a,b);
printf("%d,%d\n",*a,*b);}
A)10,15
B)5,15
C)5,10
D)15,10
(34)閱讀下面程序,在程序執(zhí)行后的結(jié)果為
#include "stdio.h"
int *fun(int *a,int *b)
{ int m;
m=*a;
m+=*b-3;
return(&m);}
main()
{int x=21,y=35,*a=&x,*b=&y;
int *k;
k=fun(a,b);
printf("%d\n",*k);}
A)53
B)21
C)35
D)14
(35)已知int a[10];則對a數(shù)組元素的正確引用是
A)a[10]
B)a
C)a+5
D)a[10-10]
(36)在C語言中,一維數(shù)組的定義方法為
類型說明符 數(shù)組名
A)[常量表達式]
B)[整型常量]
C)[整型變量]
D)[整型常量]或[整型表達式]
(37)閱讀下列程序,則運行結(jié)果為
#include "stdio.h"
fun()
{ static int x=5;
x++;
return x;}
main()
{ int i,x;
for(i=0;i<3;i++)
x=fun();
printf("%d\n",x);}
A)5
B)6
C)7
D)8
(38)下列程序的輸出結(jié)果是
#include "stdio.h"
#defineM(x,y)x%y
main()
{ int a,m=12,n=100;
a=M(n,m);
printf("%d\n",a--);}
A)2
B)3
C)4
D)5
(39)閱讀下面程序,則程序段的功能是
#include "stdio.h"
main()
{ int c[]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0 && t>c[j])
{c[j+1]=c[j];j--;}
c[j+1]=t;}
for(i=0;i<7;i++)
printf("%d ",c[i]);
putchar(′\n′);}
A)對數(shù)組元素的升序排列
B)對數(shù)組元素的降序排列
C)對數(shù)組元素的倒序排列
D)對數(shù)組元素的隨機排列
(40)閱讀下列程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
main()
{ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf("%x,%x\n",c[2][2],*(*(c+1)+1));}
A)3e,6
B)62,5
C)56,5
D)3E,6
(41)下列選項中錯誤的說明語句是
A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′};
B)char a[]={"toyou\0"};
C)char a[]="toyou\0";
D)char a[]=′toyou\0′;
(42)下述對C語言字符數(shù)組的描述中錯誤的是
A)字符數(shù)組的下標從0開始
B)字符數(shù)組中的字符串可以進行整體輸入/輸出
C)可以在賦值語句中通過賦值運算符“=”對字符數(shù)組整體賦值
D)字符數(shù)組可以存放字符串
(43)閱讀下列程序,則在執(zhí)行后,程序的運行結(jié)果為
#include "stdio.h"
#include "string.h"
main()
{char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);}
A)nice to meet you you
B)nice to
C)meet you you
D)nice to you
(44)閱讀下面程序,則執(zhí)行后的結(jié)果是
#include "stdio.h"
main()
{char str[]="tomeetme",*p;
for(p=str;p printf("\n");}
A)tomeetme
B)tmem
C)oete
D)tome
(45)下面程序的文件名為t.exe,在DOS下輸入的命令行參數(shù)如下:t to meet me<回車>
則程序輸出的結(jié)果是
#include "stdio.h"
main(argc,argv)
int argc;char *argv[];
{int i;
printf("%d\n",argc);}
A)3
B)4
C)2
D)以上答案都不正確
(46)閱讀下面程序,則執(zhí)行后的結(jié)果為
#include "stdio.h"
long fun(int n)
{if(n>2)
return(fun(n-1)+fun(n-2));
else return(2);}
main()
{printf("%ld\n",fun(5));}
A)10
B)15
C)20
D)以上3個答案都不正確
(47)已知如下定義,則sizeof(a)的值是
struct{int i;
char c;
double a; } a;
A)8
B)9
C)10
D)11
(48)已知函數(shù)的原形如下,其中結(jié)構(gòu)體a為已經(jīng)定義過的結(jié)構(gòu),且有下列變量定義
struct a *f(int t1,int *t2,strcut a t3,struct a *t4)
struct a p,*p1;int i;
則正確的函數(shù)調(diào)用語句為
A)&p=f(10,&i,p,p1);
B)p1=f(i++,(int *)p1,p,&p);
C)p=f(i+1,&(i+2),*p,p);
D)f(i+1,&i,p,p);
(49)下面程序段的輸出為
#include "stdio.h"
main()
{ printf("%d\n",12<<2);}
A)0
B)47
C)48
D)24
(50)假定當前盤符下有兩個文本文件,如下
文件名 a1.txt a2.txt
內(nèi)容 123# 321#
則下面程序段執(zhí)行后的結(jié)果為
#include "stdio.h"
void fc(FILE *p)
{ char c;
while((c=fgetc(p))!=′#′)putchar(c);}
main()
{ FILE *fp;
fp=fopen("a1.txt","r");
fc(fp);
fclose(fp);
fp=fopen("a2.txt","r");
fc(fp);
fclose(fp);
putchar(′\n′);}
A)123321
B)123
C)321
D)以上答案都不正確 二、填空題
(1)常用的黑箱測試有等價分類法、 【1】 、因果圖法和錯誤推測法4種。
解析: 黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導出測試用例。常用的黑箱測試有等價分類法、邊值分析法、因果圖法和錯誤推測法4種。
(2)測試的目的是暴露錯誤,評價程序的可靠性;而 【2】 的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。
解析: 軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定;調(diào)試也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
(3)軟件維護活動包括以下幾類:改正性維護、適應性維護、 【3】 維護和預防性維護。
解析: 軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。改正性維護是指在軟件交付使用后,為了識別和糾正軟件錯誤、改正軟件性能上的缺陷、排除實施中的誤使用,應當進行的診斷和改正錯誤的過程;適應性維護是指為了使軟件適應變化,而去修改軟件的過程;完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性;預防性維護是為了提高軟件的可維護性、可靠性等,為以后的進一步改進軟件打下良好基礎。
(4)在面向?qū)ο蟮脑O計中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【4】 。
解析: 在面向?qū)ο蠹夹g(shù)中,主要用到對象(object)、類(class)、方法(method)、消息(message)、繼承(inheritance)、封裝(encapsulation)等基本概念。其中消息是用來請求對象執(zhí)行某一處理或回答某些信息的要求。
(5)關鍵字ASC和DESC分別表示 【5】 的含義。
解析: ASC表示升序排列,DESC表示降序排列,多用在索引定義和SELECT語句中的ORDER子句中。
(6)定義int a=5,b;,則執(zhí)行表達式b=++a*--a之后,變量b的值為 【6】 。
【命題目的】考查對于基本運算符的掌握情況。
【解題要點】++和--做前綴使用的時候,先對變量進行增1或減1,之后進行其他的運算。
【考點鏈接】賦值運算符的優(yōu)先級僅僅高于逗號運算符。
(7)以下程序的輸出結(jié)果是 【7】 。
#include "stdio.h"
main()
{int a=065;
printf("%d\n",--a);
}
【命題目的】考查對于數(shù)據(jù)的格式化輸出的掌握情況。
【解題要點】八進制的65轉(zhuǎn)換為十進制的53之后減1輸出。
【考點鏈接】0開頭的是八進制整數(shù)。
(8)閱讀下面程序,則執(zhí)行后的輸出結(jié)果是 【8】 。
#include "stdio.h"
main()
{int x,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
else printf("%d",y);
printf("%d\n",z);
}
【命題目的】考查對于if語句的掌握情況。
【解題要點】C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因為x不大于y,所以執(zhí)行printf("%d\n",z);語句。
(9)如下語句printf("%c\n",′B′+40);在執(zhí)行后的輸出結(jié)果是 【9】 。
【命題目的】考查對于字符常量運算的掌握情況。
【解題要點】在C程序中的字符量可參與任何整數(shù)運算。
【考點鏈接】%c是以字符的形式輸出。
(10)閱讀下面程序,則程序的執(zhí)行結(jié)果為 【10】 。
#include "stdio.h"
main()
{int a=30,b=20,z;
z=fun(a+b,a-b);
printf("%d\n",z);
}
fun(int a,int b)
{int z;
z=a/b;
return z;
}
【命題目的】考查對于函數(shù)的調(diào)用和返回值的掌握情況。
【解題要點】函數(shù)調(diào)用的時候,函數(shù)名字必須與所調(diào)用的函數(shù)名完全一致,形參與實參類型要一致,在沒有給出函數(shù)返回值類型的情況下,默認為整形,當返回值為整型的函數(shù)放到主函數(shù)后面時,可以不需要事先說明就調(diào)用這個函數(shù)。
【考點鏈接】retrun既可以返回一個普通常量,也可以返回一個指針變量。
(11)下面的程序?qū)崿F(xiàn)的是指針p所指向的地址的n個數(shù)中,求出的和最小的數(shù)據(jù),請?zhí)羁铡?BR> fun(int *p,int n)
{int *q;
int max,min;
max=min=*p;
for(q=p; 【11】 ;q++)
if( 【12】 )max=*q;
else if( 【13】 )min=*q;
}
【命題目的】考查對于函數(shù)的地址傳遞的掌握情況。
【解題要點】通過地址傳遞可以在被調(diào)函數(shù)中對調(diào)用函數(shù)中的變量進行引用。
(12)下面的函數(shù)fun的功能是將形參x的值轉(zhuǎn)換成二進制數(shù),所得二進制數(shù)的每一位放在一維數(shù)組中返回,二進制的最低位放在下標為0的元素中,其他依次類推,請?zhí)羁铡?BR> fun(int x,int b[])
{ int k=0,r;
do{
r=x% 【14】 ;
b[ 【15】 ]=r;
x/= 【16】 ;
}while(x);
}
【命題目的】考查對于數(shù)組操作的綜合運用。
【解題要點】深刻理解十進制轉(zhuǎn)化為二進制的方法,即取余法;數(shù)組名作為實參,在函數(shù)內(nèi)部可以直接修改調(diào)用函數(shù)中定義的數(shù)組的值。
【考點鏈接】do…while循環(huán),先執(zhí)行循環(huán)體,后判斷循環(huán)條件。
(13)下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁铡?BR> void fun(char str[])
{int i,j, 【17】 ;
for(i=0,j= 【18】 ;i { k=str[i];
str[i]=str[j];
str[j]=k;
}
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(14)閱讀下面程序,則程序的執(zhí)行結(jié)果為【19】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1||k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b;
}
}
main()
{ int x;
fun(6,&x);
printf("%d\n",x);
}
(15)閱讀下列程序,則程序的輸出結(jié)果為【20】。
#include "stdio.h"
struct ty
{int data;
char c;
};
main()
{ struct ty a={30,′x′};
fun(a);
printf("%d%c",a.data,a.c);
}
fun(struct ty b)
{ b.data=20;
b.c=′y′;
}
【命題目的】考查對于結(jié)構(gòu)體的掌握情況。
【解題要點】本題的參數(shù)傳遞屬于值傳遞,所以函數(shù)內(nèi)不能改變調(diào)用函數(shù)中的數(shù)據(jù)。