c語言練習試題及答案
選擇題
。1)算法的空間復雜度是指
A)算法程序的長度
B)算法程序中的指令條數(shù)
C)算法程序所占的存儲空間
D)執(zhí)行過程中所需要的存儲空間
。2)用鏈表表示線性表的優(yōu)點是
A)便于隨機存取
B)花費的存儲空間較順序存儲少
C)便于插入和刪除操作
D)數(shù)據(jù)元素的物理順序與邏輯順序相同
(3)數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的
A)存儲結構
B)物理結構
C)邏輯結構
D)物理和存儲結構
。4)結構化程序設計主要強調(diào)的是
A)程序的規(guī)模
B)程序的效率
C)程序設計語言的先進性
D)程序易讀性
。5)軟件設計包括軟件的結構、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指
A)模塊間的關系
B)系統(tǒng)結構部件轉換成軟件的過程描述
C)軟件層次結構
D)軟件開發(fā)過程
。6)檢查軟件產(chǎn)品是否符合需求定義的過程稱為
A)確認測試
B)集成測試
C)驗證測試
D)驗收測試
(7)數(shù)據(jù)流圖用于抽象描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數(shù)據(jù)流圖合法圖符的是
A)控制流
B)加工
C)數(shù)據(jù)存儲
D)源和潭
(8)應用數(shù)據(jù)庫的主要目的是
A)解決數(shù)據(jù)保密問題
B)解決數(shù)據(jù)完整性問題
C)解決數(shù)據(jù)共享問題
D)解決數(shù)據(jù)量大的`問題
。9)在數(shù)據(jù)庫設計中,將E-R圖轉換成關系數(shù)據(jù)模型的過程屬于
A)需求分析階段
B)邏輯設計階段
C)概念設計階段
D)物理設計階段
(10)在數(shù)據(jù)管理技術的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是
A)數(shù)據(jù)庫系統(tǒng)
B)文件系統(tǒng)
C)人工管理
D)數(shù)據(jù)項管理
。11)以下敘述中正確的是
A)構成C程序的基本單位是函數(shù)
B)可以在一個函數(shù)中定義另一個函數(shù)
C)main()函數(shù)必須放在其他函數(shù)之前
D)C函數(shù)定義的格式是K&R格式
。12)結構化程序所規(guī)定的三種最基本控制結構是
A)輸入、處理、輸出
B)樹形、網(wǎng)形、環(huán)形
C)順序、選擇、循環(huán)
D)主程序、子程序、函數(shù)
。13)一個C語言程序是由
A)一個主程序和若干子程序組成
B)函數(shù)組成
C)若干過程組成
D)若干子程序組成
(14)請選出可用作C語言用戶標識符的是
A)void,define,WORD
B)a3_b3,_123,IF
C)FOR,--abc,Case
D)2a,Do,Sizeof
。15)下列各數(shù)據(jù)類型不屬于構造類型的是
A)枚舉型
B)共用型
C)結構型
D)數(shù)組型
(16)在16位C編譯系統(tǒng)上,若定義long a;,則能給a賦40000的正確語句是
A)a=20000+20000;
B)a=4000*10;
C)a=30000+10000;
D)a=4000L*10L
。17)以下不正確的敘述是
A)在C程序中,逗號運算符的優(yōu)先級最低
B)在C程序中,APH和aph是兩個不同的變量
C)若a和b類型相同,在計算了賦值表達式a=b后b中的值將放入a中,而b中的值不變
D)當從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,對于實型變量只能輸入實型數(shù)值
。18)sizeof(float)是
A)一個雙精度型表達式
B)一個整型表達式
C)一種函數(shù)調(diào)用
D)一個不合法的表達式
(19)若x,i,j和k都是int型變量,則計算表達式x=(i=4,j=16,k=32)后,x的值為
A)4
B)16
C)32
D)52
。20)下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,請選擇填空。
#include
main()
{ int i=0,j,k;
do{i++;k=316-13*i;}while(______);
j=k/11;
printf("316=13*%d+11*%d",i,j);
}
A)k/11
B)k
C)k/11==0
D)k==0
。21)設有定義:int n=0,*p=&n,**q=&p,則下列選項中正確的賦值語句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
。22)下面程序的運行結果是
#include
main()
{ int y=10;
do{y--;}while(--y);
printf("%d\n",y--);
}
A)-1
B)1
C)8
D)0
。23)下面程序的輸出結果是
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}
A)3
B)4
C)1
D)2
(24)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3],b;b=p[5];
則b的值是
A)5
B)6
C)9
D)8
。25)設有int x=11;則表達式(x++*1/3)的值是
A)3
B)4
C)11
D)12
26)請選出以下語句的輸出結果
printf("%d\n",strlen("\t\"\065\xff\n"));
A)5
B)14
C)8
D)輸出項不合法,無正常輸出
。27)下列程序的輸出結果是
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d\n", d*y);
}
A)3
B)3.2
C)0
D)3.07
(28)下列程序的輸出結果是
int b=2;
int func(int *a)
{ b += *a; return(b);}
main()
{ int a=2, res=2;
res += func(&a);
printf("%d\n",res);
}
A)4
B)6
C)8
D)10
。29)下面能正確進行字符串賦值操作的是
A)char s[5]={"ABCDE"};
B)char s[5]={ ′A′, ′B′, ′C′, ′D′, ′E′};
C)char *s;s="ABCDE";
D)char *s;char a; scanf("%s",&s);
。30)執(zhí)行以下程序后,a,b的值分別為
main()
{ int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
A)-1,5
B)1,6
C)0,7
D)4,10
。31)設有數(shù)組定義: char array[]="China"; 則數(shù)組 array所占的空間為
A)4個字節(jié)
B)5個字節(jié)
C)6個字節(jié)
D)7個字節(jié)
。32)若已定義:
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 0≤i≤9, 則對a數(shù)組元素不正確的引用是
A)a[p-a]
B)*(&a[i])
C)p[i]
D)a[10]
。33)以下不正確的定義語句是
A)double x[5]={2.0,4.0,6.0,8.0,10.0};
B)int y[5]={0,1,3,5,7,9};
C)char c1[]={′1′,′2′,′3′,′4′,′5′};
D)char c2[]={′\x10′,′\xa′,′\x8′};
。34)若有以下程序
#include
int a[]={2,4,6,8};
main()
{ int i;
int *p=a;
for(i=0;i<4;i++)a[i]=*p;
printf("%d\n",a[2]);
}
上面程序輸出結果是
A)6
B)8
C)4
D)2
。35)下面程序段的運行結果是
char *format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A)for,"a+=b",ab
B)format,"a+=b"
C)a+=b,a=21,b=10
D)以上結果都不對
(36)C語言允許函數(shù)類型缺省定義,此時函數(shù)值隱含的類型是
A)float
B)int
C)long
D)double
。37)以下程序有語法錯誤,有關錯誤原因的正確說法是
main()
{ int G=5,k;
void prt_char();
...
k=prt_char(G);
...
}
A)語句 void prt_char();有錯,它是函數(shù)調(diào)用語句,不能用void說明
B)變量名不能使用大寫字母
C)函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾
D)函數(shù)名不能使用下劃線
(38)以下敘述中不正確的是
A)在不同的函數(shù)中可以使用相同的名字的變量
B)函數(shù)中的形式參數(shù)是局部變量
C)在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效
D)在一個函數(shù)內(nèi)的復合語句中定義的變量在本函數(shù)范圍內(nèi)有效
。39)有以下程序:
#include
union pw
{ int i;
char ch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}
程序的輸出結果是
A)13
B)14
C)208
D)209
。40)在16位IBM-PC機上使用C語言,若有如下定義
struct data
{ int i;
char ch;
double f;
} b;
則結構變量b占用內(nèi)存的字節(jié)數(shù)是
A)1
B)2
C)7
D)11
。41)下面程序的運行結果是
#include
main()
{ int a=1,b=10;
do
{b-=a;a++;}while(b--<0);
printf("a=%d,b=%d\n",a,b);
}
A)a=3,b=11
B)a=2,b=8
C)a=1,b=-1
D)a=4,b=9
。42)以下程序的輸出結果是
void reverse(int a[],int n)
{ int i,t;
for(i=0;i
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf(" %d\n ",s);
}
A)22
B)10
C)34
D)30
(43)有如下程序:
long fib(int n)
{ if(n>2)return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{ printf("%d\n",fib(3));}
該程序的輸出結果是
A)2
B)4
C)6
D)8
。44)假定以下程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG.EXE,如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入:
PROG ABCDEFGH IJKL<回車>,則輸出結果為
main( int argc, char *argv[])
{ while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
A)ABCDEFG
B)IJHL
C)ABCDEFGHIJKL
D)IJKLABCDEFGH
。45)以下程序有錯,錯誤原因是
main()
{ int *p,i;char *q,ch;
p=&i;
q=&ch;
*p=40;
*p=*q;
......
}
A)p和q的類型不一致,不能執(zhí)行*p=*q;語句
B)*p中存放的是地址值,因此不能執(zhí)行*p=40;語句
C)q沒有指向具體的存儲單元,所以*q沒有實際意義
D)q雖然指向了具體的存儲單元,但該單元中沒有確定的值,所以執(zhí)行*p=*q;沒有意義,可能會影響后面語句的執(zhí)行結果
。46)函數(shù) rewind 的作用是
A)使文件位置指針重新返回文件的開始位置
B)將文件位置指針指向文件中所要求的特定位置
C)使文件位置指針指向文件的末尾
D)使文件位置指針自動移至下一個字符位置
。47)設有以下說明語句
struct ex
{ int x ; float y; char z ;} example;
則下面的敘述中不正確的是
A)struct結構體類型的關鍵字
B)example是結構體類型名
C)x,y,z都是結構體成員名
D)struct ex是結構體類型名
。48)設有以下語句:
char x=3,y=6,z;
z=x^y<<2;
則z的二進制值是
A)00010100
B)00011011
C)00011100
D)00011000
。49)閱讀以下程序及對程序功能的描述,其中正確的描述是
#include
main()
{
FILE *in,*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{
printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{
printf("cannot open outfile\n");
exit(0);
}
while(! feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
A)程序完成將磁盤文件的信息在屏幕上顯示的功能
B)程序完成將兩個磁盤文件合二為一的功能
C)程序完成將一個磁盤文件復制到另一個磁盤文件中
D)程序完成將兩個磁盤文件合并并在屏幕上輸出
。50)C語言中,能識別處理的文件為
A)文本文件和數(shù)據(jù)塊文件
B)文本文件和二進制文件
C)流文件和文本文件
D)數(shù)據(jù)文件和二進制文件
參考答案:
01-05 D C C D B
06-10 A A C B A
11-15 A C B B A
16-20 D D B C B
21-25 D D A C A
26-30 A C B C C
31-35 C D B D C
36-40 B C D A D
41-45 B A B D D
46-50 A B B C B
【c語言練習試題及答案】相關文章: