一、選擇題
(1)假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
A)log2n
B)n2
C)O(n1.5)
D)n(n-1)/2
(2)算法分析的目的是
A)找出數(shù)據(jù)結(jié)構(gòu)的合理性
B)找出算法中輸入和輸出之間的關(guān)系
C)分析算法的易懂性和可靠性
D)分析算法的效率以求改進(jìn)
(3)線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是
A)每個(gè)元素都有一個(gè)直接前件和直接后件
B)線性表中至少要有一個(gè)元素
C)表中諸元素的排列順序必須是由小到大或由大到小
D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
(4)在單鏈表中,增加頭結(jié)點(diǎn)的目的是
A)方便運(yùn)算的實(shí)現(xiàn)
B)使單鏈表至少有一個(gè)結(jié)點(diǎn)
C)標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置
D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?shí)現(xiàn)
(5)軟件工程的出現(xiàn)是由于
A)程序設(shè)計(jì)方法學(xué)的影響
B)軟件產(chǎn)業(yè)化的需要
C)軟件危機(jī)的出現(xiàn)
D)計(jì)算機(jī)的發(fā)展
(6)軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于
A)硬件資源
B)通信資源
C)支持軟件
D)輔助資源
(7)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示
A)模塊之間的調(diào)用關(guān)系
B)程序的組成成分
C)控制程序的執(zhí)行順序
D)數(shù)據(jù)的流向
(8)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點(diǎn)是
A)數(shù)據(jù)分布性和邏輯整體性
B)位置透明性和復(fù)制透明性
C)分布性
D)數(shù)據(jù)冗余
(9)關(guān)系表中的每一橫行稱為一個(gè)
A)元組
B)字段
C)屬性
D)碼
(10)下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是
A)層次模型
B)網(wǎng)狀模型
C)關(guān)系模型
D)以上3個(gè)都是
(11)以下敘述不正確的是
A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成
B)一個(gè)C源程序必須包含一個(gè)main函數(shù)
C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說明只能位于一條語句的后面
(12)在C語言中,int,char和short三種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)
A)由用戶自己定義
B)均為2個(gè)字節(jié)
C)是任意的
D)由所用機(jī)器的機(jī)器字長決定
(13)以下敘述正確的是
A)在C程序中,每行中只能寫一條語句
B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)
C)在C程序中,無論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤地表示
D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符
(14)C語言中的標(biāo)識符只能由字母,數(shù)字和下劃線三種字符組成,且第一個(gè)字符
A)必須為字母
B)必須為下劃線
C)必須為字母或下劃線
D)可以是字母,數(shù)字和下劃線中任一字符
(15)已知各變量的類型說明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
則以下不符合C語言語法的表達(dá)式是
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
(16)x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是
A)INPUT x、y、z;
B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);
D)read("%d%d%d",&x,&y,&z);
(17)設(shè)x、y均為整型變量,且x=10 y=3,則以下語句的輸出結(jié)果是
printf("%d,%d\n",x--,--y);
A)10,3
B)9,3
C)9,2
D)10,2
(18)以下程序的輸出結(jié)果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);}
A)1
B)0
C)非0的數(shù)
D)-1
(19)執(zhí)行下列程序時(shí)輸入:123<空格>456<空格>789<回車> 輸出結(jié)果是
main()
{ char s[100]; int c, i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
(20)下面有關(guān)for循環(huán)的正確描述是
A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
C)在for循環(huán)中,不能用break語句跳出循環(huán)體
D)for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
(21)以下程序的輸出結(jié)果是
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4
B)x=8
C)x=6
D)x=12
(22)設(shè)有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運(yùn)行程序段后輸出0
B)運(yùn)行程序段后輸出1
C)程序段中的控制表達(dá)式是非法的
D)程序段執(zhí)行無限次
(23)對下Ⅰ,Ⅱ兩個(gè)語句描述正確的是
Ⅰ.while(1)Ⅱ.for(;;)
A)都是無限循環(huán)
B)Ⅰ是無限循環(huán),Ⅱ錯(cuò)誤
C)Ⅰ循環(huán)一次,Ⅱ錯(cuò)誤
D)以上答案都錯(cuò)
(24)若有以下定義,則能使值為3的表達(dá)式是
int k=7,x=12;
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
(25)設(shè)有:
int a=1,b=2,c=3,d=4,m=2,n=2;
執(zhí)行 (m=a>b)&&(n=c>d)后n的值是
A)1
B)2
C)3
D)4
(26)以下描述中正確的是
A)由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B)do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式)后面不能寫分號
C)在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D)do-while循環(huán)中,根據(jù)情況可以省略while
(27)以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;i if(a[i] return(p);}
在下劃線處應(yīng)填入的是
A)i=p
B)a[p]=a[i]
C)p=j
D)p=I
(28)以下敘述正確的是
A)函數(shù)可以嵌套定義但不能嵌套調(diào)用
B)函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C)函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D)函數(shù)可以嵌套調(diào)用但不可以嵌套定義
(29)若有說明語句
char a[]="It is mine";
char *p="It is mine";
則以下不正確的敘述是
A)a+1表示的是字符t的地址
B)p指向另外的字符串時(shí),字符串的長度不受限制
C)p變量中存放的地址值可以改變
D)a中只能存放10個(gè)字符
(30)以下程序的運(yùn)行結(jié)果是
sub(int x,int y,int *z)
{*z=y-x;}
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("M,M,M\n",a,b,c);}
A)5,2,3
B)-5,-12,-7
C)-5,-12,-17
D)5,-2,-7
(31)若二維數(shù)組a有m列,則計(jì)算任一元素a[i][j]在數(shù)組中相對位置的公式為 (假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上)
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
(32)下列說法正確的是
int i,x;
for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x);
A)最多的執(zhí)行10次
B)最多執(zhí)行9次
C)是無限循環(huán)
D)循環(huán)體一次也不執(zhí)行
(33)若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
則對數(shù)組元素的錯(cuò)誤引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2)
(34)若有說明:int a[3][4]={0};則下面正確的敘述是
A)只有元素a[0][0]可得到初值0
B)此說明語句不正確
C)數(shù)組a中各元素都可得到初值,但其值不一定為0
D)數(shù)組a中每個(gè)元素均可得到初值0
(35)對下面程序描述正確的一項(xiàng)是 (每行程序前面的數(shù)字表示行號)
1 main()
2 {
3 float a[3]={0.0};
4 int i;
5 for(i=0;i<3;i++)scanf("%d",&a[i]);
6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
7 printf("%f\n",a[0]);
8 }
A)沒有錯(cuò)誤
B)第3行有錯(cuò)誤
C)第5行有錯(cuò)誤
D)第7行有錯(cuò)誤
(36)以下不正確的說法是
C語言規(guī)定:
A)實(shí)參可以是常量,變量或表達(dá)式
B)形參可以是常量,變量或表達(dá)式
C)實(shí)參可以為任何類型
D)形參應(yīng)與其對應(yīng)的實(shí)參類型一致
(37)已有如下數(shù)組定義和f函數(shù)調(diào)用語句,則在f函數(shù)的說明中,對形參數(shù)組array的正確定義方式為
int a[3][4];
f(a);
A)f(array[3][4])
B)f(int array[3][])
C)f(int array[][4])
D)f(int array[][])
(38)下面程序的輸出結(jié)果為
main()
{ int a,b;b=(a=3*5,a*4,a*5);
printf("%d",b);}
A)60
B)75
C)65
D)無確定值
(39)在位運(yùn)算中,操作數(shù)右移一位,其結(jié)果相當(dāng)于
A)操作數(shù)乘以2
B)操作數(shù)除以2
C)操作數(shù)乘以4
D)操作數(shù)除以4
(40)有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A)a.next=q;
B)p.next=&b;
C)p->next=&b;
D)(*p).next=q;
(41)下面程序的輸出結(jié)果是
struct st
{ int x;
int *y;
} *p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf("%d\n",++p->x);
printf("%d\n",(++p)->x);
printf("%d\n",++(*p->y));}
A)10
20
20
B)50
60
21
C)51
60
21
D)60
70
31
(42)下面程序的輸出結(jié)果是
#include
#include
main()
{char *p1="abc",*p2="ABC",str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);}
A)xyzabcABC
B)zabcABC
C)xyabcABC
D)yzabcABC
(43)以下程序的輸出結(jié)果是
long fun( int n)
{ long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;}
main()
{ printf("%ld\n", fun(3)); }
A)1
B)2
C)3
D)4
(44)以下所列的各函數(shù)首部中,正確的是
A)void play(var :Integer,var b:Integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
(45)不合法的main函數(shù)命令行參數(shù)表示形式是
A)main(int a,char *c[])
B)main(int arc,char **arv)
C)main(int argc,char *argv)
D)main(int argv,char *argc[])
(46)有如下程序
main()
{char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
該程序的輸出結(jié)果是
A)69825
B)63825
C)6385
D)693825
(47)以下程序的輸出結(jié)果是
union myun
{struct
{ int x, y, z; } u;
int k;} a;
main()
{a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);}
A)4
B)5
C)6
D)0
(48)以下程序的輸出結(jié)果是
main()
{ char x=040;
printf("%o\n",x<<1);}
A)100
B)80
C)64
D)32
(49)C 語言中,系統(tǒng)的標(biāo)準(zhǔn)輸入文件是指
A)鍵盤
B)顯示器
C)軟盤
D)硬盤
(50)下面的程序執(zhí)行后,文件test中的內(nèi)容是
#include
void fun(char *fname,char *st)
{ FILE *myf; int i;
myf=fopen(fname,"w" );
for(i=0;i fclose(myf);}
main()
{ fun("test","new world"); fun("test","hello,");}
A)hello,
B)new worldhello,
C)new world
D)hello, rld 二、填空題
(1)在算法正確的前提下,評價(jià)一個(gè)算法的兩個(gè)標(biāo)準(zhǔn)是 【1】 。
(2)將代數(shù)式 Z=x2+y2a+b 轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為 【2】 。
(3)軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了 【3】 的原理來設(shè)計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。
(4) 【4】 是數(shù)據(jù)庫設(shè)計(jì)的核心。
(5)在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè) 【5】 。
(6)以下程序段的輸出結(jié)果是【6】 。
int x=17,y=26;
printf ("%d",y/=(x%=6));
(7)關(guān)系表達(dá)式x
(8)若有如下定義,double a[100];則a數(shù)組元素的下標(biāo)上限是【8】 。
(9)下面程序的輸出結(jié)果【9】 。
main ()
{enum team {y1=4,y2,y3};
printf ("%d",y3);}
(11)若有以下程序段:
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
則執(zhí)行后,c3中的值是【11】 。
(12) 若有以下定義:
char a;int b;
float c; double d;
則表達(dá)式a*b+d-c值的類型為【12】 。
(13)設(shè)有代碼“static int a[3][4]={{1}, {2}, {3}};”,則a[1][1]和a[2][1]的值為【13】 。
(14)以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個(gè)數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?BR> void fun(char *w, char x, int *n)
{ int i, p;
p=0;
w[*n]= x;
while(x > w[p])p++;
for(i=*n; i>p; i--)w[i]=【14】;
w[p]=x;
++*n;}
(15)設(shè)int a, b=10;執(zhí)行a=b<<2+1;后a的值是【15】 。
(16)以下程序的輸出結(jié)果是【16】。
main()
{ int x=100, a=10, b=20, ok1=5, ok2=0;
if(aelse if(ok2)x=10;
else x=-1;
printf("%d\n", x);}
(17)以下程序的輸出結(jié)果是【17】。
main()
{ int y=9;
for(; y>0; y--)
if (y%3==0)
{printf("%d", --y); continue;}
}
(18)以下函數(shù)的功能是【18】。
float av(a, n)
float a[];
int n;
{ int i; float s;
for(i=0, s=0; ireturn s/n;}
(19)以下程序的輸出結(jié)果是【19】。
#define PR(ar)printf("%d,",ar)
main()
{ int j, a[]={1, 3, 5, 7, 9, 11, 15}, *p=a+5;
for(j=3; j; j--)
switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3:PR(*(--p));
}
printf("\n");
}
(20)以下程序的功能是:處理由學(xué)號和成績組成的學(xué)生記錄,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,它的功能是:把分?jǐn)?shù)的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中注意:分?jǐn)?shù)高的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)學(xué)生的人數(shù)。請?zhí)羁铡?BR> #include
#define N 16
typedef struct
{char num[10];
int s ;
} STREC;
int fun (STREC *a, STREC *b)
{int i,j=0,max=a[0].s;
for(i=0;iif(maxfor(i=0;iif(【20】)b[j++]=a[i];
return j;
}
main ()
{STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}
};
STREC h[N];
int i, n;FILE *out;
n=fun(s,h);
printf("The %d highest score :\n",n);
for (i=0; iprintf("%s M\n ",h[i].num,h[i].s);
printf("\n");
out=fopen("out15.dat", "w");
fprintf(out, "%d\n",n);
for(i=0; ifprintf(out, "M\n ",h[i].s);
fclose(out);
}
(1)假設(shè)線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為
A)log2n
B)n2
C)O(n1.5)
D)n(n-1)/2
(2)算法分析的目的是
A)找出數(shù)據(jù)結(jié)構(gòu)的合理性
B)找出算法中輸入和輸出之間的關(guān)系
C)分析算法的易懂性和可靠性
D)分析算法的效率以求改進(jìn)
(3)線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是
A)每個(gè)元素都有一個(gè)直接前件和直接后件
B)線性表中至少要有一個(gè)元素
C)表中諸元素的排列順序必須是由小到大或由大到小
D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件
(4)在單鏈表中,增加頭結(jié)點(diǎn)的目的是
A)方便運(yùn)算的實(shí)現(xiàn)
B)使單鏈表至少有一個(gè)結(jié)點(diǎn)
C)標(biāo)識表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置
D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?shí)現(xiàn)
(5)軟件工程的出現(xiàn)是由于
A)程序設(shè)計(jì)方法學(xué)的影響
B)軟件產(chǎn)業(yè)化的需要
C)軟件危機(jī)的出現(xiàn)
D)計(jì)算機(jī)的發(fā)展
(6)軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于
A)硬件資源
B)通信資源
C)支持軟件
D)輔助資源
(7)在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示
A)模塊之間的調(diào)用關(guān)系
B)程序的組成成分
C)控制程序的執(zhí)行順序
D)數(shù)據(jù)的流向
(8)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點(diǎn)是
A)數(shù)據(jù)分布性和邏輯整體性
B)位置透明性和復(fù)制透明性
C)分布性
D)數(shù)據(jù)冗余
(9)關(guān)系表中的每一橫行稱為一個(gè)
A)元組
B)字段
C)屬性
D)碼
(10)下列數(shù)據(jù)模型中,具有堅(jiān)實(shí)理論基礎(chǔ)的是
A)層次模型
B)網(wǎng)狀模型
C)關(guān)系模型
D)以上3個(gè)都是
(11)以下敘述不正確的是
A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成
B)一個(gè)C源程序必須包含一個(gè)main函數(shù)
C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說明只能位于一條語句的后面
(12)在C語言中,int,char和short三種類型數(shù)據(jù)在內(nèi)存中所占用的字節(jié)數(shù)
A)由用戶自己定義
B)均為2個(gè)字節(jié)
C)是任意的
D)由所用機(jī)器的機(jī)器字長決定
(13)以下敘述正確的是
A)在C程序中,每行中只能寫一條語句
B)若a是實(shí)型變量,C程序中允許賦值a=10,因此實(shí)型變量中允許存放整型數(shù)
C)在C程序中,無論是整數(shù)還是實(shí)數(shù),都能被準(zhǔn)確無誤地表示
D)在C程序中,%是只能用于整數(shù)運(yùn)算的運(yùn)算符
(14)C語言中的標(biāo)識符只能由字母,數(shù)字和下劃線三種字符組成,且第一個(gè)字符
A)必須為字母
B)必須為下劃線
C)必須為字母或下劃線
D)可以是字母,數(shù)字和下劃線中任一字符
(15)已知各變量的類型說明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
則以下不符合C語言語法的表達(dá)式是
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
(16)x,y,z被定義為int型變量,若從鍵盤給x,y,z輸入數(shù)據(jù),正確的輸入語句是
A)INPUT x、y、z;
B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);
D)read("%d%d%d",&x,&y,&z);
(17)設(shè)x、y均為整型變量,且x=10 y=3,則以下語句的輸出結(jié)果是
printf("%d,%d\n",x--,--y);
A)10,3
B)9,3
C)9,2
D)10,2
(18)以下程序的輸出結(jié)果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);}
A)1
B)0
C)非0的數(shù)
D)-1
(19)執(zhí)行下列程序時(shí)輸入:123<空格>456<空格>789<回車> 輸出結(jié)果是
main()
{ char s[100]; int c, i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
(20)下面有關(guān)for循環(huán)的正確描述是
A)for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況
B)for循環(huán)是先執(zhí)行循環(huán)體語句,后判斷表達(dá)式
C)在for循環(huán)中,不能用break語句跳出循環(huán)體
D)for循環(huán)的循環(huán)體語句中,可以包含多條語句,但必須用花括號括起來
(21)以下程序的輸出結(jié)果是
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4
B)x=8
C)x=6
D)x=12
(22)設(shè)有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
則
A)運(yùn)行程序段后輸出0
B)運(yùn)行程序段后輸出1
C)程序段中的控制表達(dá)式是非法的
D)程序段執(zhí)行無限次
(23)對下Ⅰ,Ⅱ兩個(gè)語句描述正確的是
Ⅰ.while(1)Ⅱ.for(;;)
A)都是無限循環(huán)
B)Ⅰ是無限循環(huán),Ⅱ錯(cuò)誤
C)Ⅰ循環(huán)一次,Ⅱ錯(cuò)誤
D)以上答案都錯(cuò)
(24)若有以下定義,則能使值為3的表達(dá)式是
int k=7,x=12;
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
(25)設(shè)有:
int a=1,b=2,c=3,d=4,m=2,n=2;
執(zhí)行 (m=a>b)&&(n=c>d)后n的值是
A)1
B)2
C)3
D)4
(26)以下描述中正確的是
A)由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B)do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式)后面不能寫分號
C)在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D)do-while循環(huán)中,根據(jù)情況可以省略while
(27)以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;i if(a[i] return(p);}
在下劃線處應(yīng)填入的是
A)i=p
B)a[p]=a[i]
C)p=j
D)p=I
(28)以下敘述正確的是
A)函數(shù)可以嵌套定義但不能嵌套調(diào)用
B)函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C)函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D)函數(shù)可以嵌套調(diào)用但不可以嵌套定義
(29)若有說明語句
char a[]="It is mine";
char *p="It is mine";
則以下不正確的敘述是
A)a+1表示的是字符t的地址
B)p指向另外的字符串時(shí),字符串的長度不受限制
C)p變量中存放的地址值可以改變
D)a中只能存放10個(gè)字符
(30)以下程序的運(yùn)行結(jié)果是
sub(int x,int y,int *z)
{*z=y-x;}
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("M,M,M\n",a,b,c);}
A)5,2,3
B)-5,-12,-7
C)-5,-12,-17
D)5,-2,-7
(31)若二維數(shù)組a有m列,則計(jì)算任一元素a[i][j]在數(shù)組中相對位置的公式為 (假設(shè)a[0][0]位于數(shù)組的第一個(gè)位置上)
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
(32)下列說法正確的是
int i,x;
for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x);
A)最多的執(zhí)行10次
B)最多執(zhí)行9次
C)是無限循環(huán)
D)循環(huán)體一次也不執(zhí)行
(33)若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
則對數(shù)組元素的錯(cuò)誤引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2)
(34)若有說明:int a[3][4]={0};則下面正確的敘述是
A)只有元素a[0][0]可得到初值0
B)此說明語句不正確
C)數(shù)組a中各元素都可得到初值,但其值不一定為0
D)數(shù)組a中每個(gè)元素均可得到初值0
(35)對下面程序描述正確的一項(xiàng)是 (每行程序前面的數(shù)字表示行號)
1 main()
2 {
3 float a[3]={0.0};
4 int i;
5 for(i=0;i<3;i++)scanf("%d",&a[i]);
6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
7 printf("%f\n",a[0]);
8 }
A)沒有錯(cuò)誤
B)第3行有錯(cuò)誤
C)第5行有錯(cuò)誤
D)第7行有錯(cuò)誤
(36)以下不正確的說法是
C語言規(guī)定:
A)實(shí)參可以是常量,變量或表達(dá)式
B)形參可以是常量,變量或表達(dá)式
C)實(shí)參可以為任何類型
D)形參應(yīng)與其對應(yīng)的實(shí)參類型一致
(37)已有如下數(shù)組定義和f函數(shù)調(diào)用語句,則在f函數(shù)的說明中,對形參數(shù)組array的正確定義方式為
int a[3][4];
f(a);
A)f(array[3][4])
B)f(int array[3][])
C)f(int array[][4])
D)f(int array[][])
(38)下面程序的輸出結(jié)果為
main()
{ int a,b;b=(a=3*5,a*4,a*5);
printf("%d",b);}
A)60
B)75
C)65
D)無確定值
(39)在位運(yùn)算中,操作數(shù)右移一位,其結(jié)果相當(dāng)于
A)操作數(shù)乘以2
B)操作數(shù)除以2
C)操作數(shù)乘以4
D)操作數(shù)除以4
(40)有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后的語句是
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A)a.next=q;
B)p.next=&b;
C)p->next=&b;
D)(*p).next=q;
(41)下面程序的輸出結(jié)果是
struct st
{ int x;
int *y;
} *p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf("%d\n",++p->x);
printf("%d\n",(++p)->x);
printf("%d\n",++(*p->y));}
A)10
20
20
B)50
60
21
C)51
60
21
D)60
70
31
(42)下面程序的輸出結(jié)果是
#include
#include
main()
{char *p1="abc",*p2="ABC",str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);}
A)xyzabcABC
B)zabcABC
C)xyabcABC
D)yzabcABC
(43)以下程序的輸出結(jié)果是
long fun( int n)
{ long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;}
main()
{ printf("%ld\n", fun(3)); }
A)1
B)2
C)3
D)4
(44)以下所列的各函數(shù)首部中,正確的是
A)void play(var :Integer,var b:Integer)
B)void play(int a,b)
C)void play(int a,int b)
D)Sub play(a as integer,b as integer)
(45)不合法的main函數(shù)命令行參數(shù)表示形式是
A)main(int a,char *c[])
B)main(int arc,char **arv)
C)main(int argc,char *argv)
D)main(int argv,char *argc[])
(46)有如下程序
main()
{char ch[2][5]={"6937","8254"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>′\0′;j+=2)
s=10*s+p[i][j]-′0′;
printf("%d\n",s);}
該程序的輸出結(jié)果是
A)69825
B)63825
C)6385
D)693825
(47)以下程序的輸出結(jié)果是
union myun
{struct
{ int x, y, z; } u;
int k;} a;
main()
{a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);}
A)4
B)5
C)6
D)0
(48)以下程序的輸出結(jié)果是
main()
{ char x=040;
printf("%o\n",x<<1);}
A)100
B)80
C)64
D)32
(49)C 語言中,系統(tǒng)的標(biāo)準(zhǔn)輸入文件是指
A)鍵盤
B)顯示器
C)軟盤
D)硬盤
(50)下面的程序執(zhí)行后,文件test中的內(nèi)容是
#include
void fun(char *fname,char *st)
{ FILE *myf; int i;
myf=fopen(fname,"w" );
for(i=0;i fclose(myf);}
main()
{ fun("test","new world"); fun("test","hello,");}
A)hello,
B)new worldhello,
C)new world
D)hello, rld 二、填空題
(1)在算法正確的前提下,評價(jià)一個(gè)算法的兩個(gè)標(biāo)準(zhǔn)是 【1】 。
(2)將代數(shù)式 Z=x2+y2a+b 轉(zhuǎn)換成程序設(shè)計(jì)中的表達(dá)式為 【2】 。
(3)軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了 【3】 的原理來設(shè)計(jì)軟件,這就是軟件工程誕生的基礎(chǔ)。
(4) 【4】 是數(shù)據(jù)庫設(shè)計(jì)的核心。
(5)在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè) 【5】 。
(6)以下程序段的輸出結(jié)果是【6】 。
int x=17,y=26;
printf ("%d",y/=(x%=6));
(7)關(guān)系表達(dá)式x
(8)若有如下定義,double a[100];則a數(shù)組元素的下標(biāo)上限是【8】 。
(9)下面程序的輸出結(jié)果【9】 。
main ()
{enum team {y1=4,y2,y3};
printf ("%d",y3);}
(11)若有以下程序段:
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
則執(zhí)行后,c3中的值是【11】 。
(12) 若有以下定義:
char a;int b;
float c; double d;
則表達(dá)式a*b+d-c值的類型為【12】 。
(13)設(shè)有代碼“static int a[3][4]={{1}, {2}, {3}};”,則a[1][1]和a[2][1]的值為【13】 。
(14)以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個(gè)數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?BR> void fun(char *w, char x, int *n)
{ int i, p;
p=0;
w[*n]= x;
while(x > w[p])p++;
for(i=*n; i>p; i--)w[i]=【14】;
w[p]=x;
++*n;}
(15)設(shè)int a, b=10;執(zhí)行a=b<<2+1;后a的值是【15】 。
(16)以下程序的輸出結(jié)果是【16】。
main()
{ int x=100, a=10, b=20, ok1=5, ok2=0;
if(aelse if(ok2)x=10;
else x=-1;
printf("%d\n", x);}
(17)以下程序的輸出結(jié)果是【17】。
main()
{ int y=9;
for(; y>0; y--)
if (y%3==0)
{printf("%d", --y); continue;}
}
(18)以下函數(shù)的功能是【18】。
float av(a, n)
float a[];
int n;
{ int i; float s;
for(i=0, s=0; ireturn s/n;}
(19)以下程序的輸出結(jié)果是【19】。
#define PR(ar)printf("%d,",ar)
main()
{ int j, a[]={1, 3, 5, 7, 9, 11, 15}, *p=a+5;
for(j=3; j; j--)
switch(j)
{ case 1:
case 2: PR(*p++); break;
case 3:PR(*(--p));
}
printf("\n");
}
(20)以下程序的功能是:處理由學(xué)號和成績組成的學(xué)生記錄,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,它的功能是:把分?jǐn)?shù)的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中注意:分?jǐn)?shù)高的學(xué)生可能不只一個(gè),函數(shù)返回分?jǐn)?shù)學(xué)生的人數(shù)。請?zhí)羁铡?BR> #include
#define N 16
typedef struct
{char num[10];
int s ;
} STREC;
int fun (STREC *a, STREC *b)
{int i,j=0,max=a[0].s;
for(i=0;iif(maxfor(i=0;iif(【20】)b[j++]=a[i];
return j;
}
main ()
{STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}
};
STREC h[N];
int i, n;FILE *out;
n=fun(s,h);
printf("The %d highest score :\n",n);
for (i=0; iprintf("%s M\n ",h[i].num,h[i].s);
printf("\n");
out=fopen("out15.dat", "w");
fprintf(out, "%d\n",n);
for(i=0; ifprintf(out, "M\n ",h[i].s);
fclose(out);
}