當前位置:首頁 » 編程語言 » c語言期中考試試卷題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言期中考試試卷題

發布時間: 2023-06-16 03:33:05

c語言期中考試例題

不就是計算十個數的全排列

② 求一份大一c語言考試試卷,加答案

附件上傳失敗...

C語言期末考試題及答案(1)

1、構成C語言的基本單位是___B____。
過程?
函數?
語句?
命令?
2、設x為整型變數,不能正確表達數學關系:5<x<10的c語言表達式是__B___。
5
x>5&&x<10?
x==6||x==7||x==8||x==9?
!(x<=5)&&(x<10)?
3、在C語言中,邏輯運算符的優先順序從高到低的排列順序為__D___。
&&、||、!?
||、&&、!?
&&、!、||?
!、&&、||?
4、下面語句中,正確的是__D___。
printf("%c\n","student");?
printf("%c\n","c");?
printf("%s\n",&a);?
printf("%s\n","hello");?
5、對於for(表達式1;;表達式3)可以理解為__B___。
for(表達式1;0;表達式3)?
for(表達式1;1;表達式3)?
for(表達式1;表達式1;表達式3)?
for(表達式1;表達式3;表達式3)?
6、執行下面程序段的結果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); }
a=1,b=1?
a=2,b=1?
a=1,b=0?
a=2,b=2?
7、執行下面程序段的結果是__D___。 int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
8、設x=10,y=5;z=15,執行下面一段程序後z的結果是__C___。 If(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
9、如果一個函數被說明為static,那麼__B___。
該函數只能被main函數調用?
該函數能被當前文件的函數調用,但不能被其他文件的函數調用?
該函數不能被當前文件的函數調用,可以被其他文件的函數調用?
任何文件的函數都可以調用該函數?
10、下面關於局部變數的描述中,錯誤的是__D___。
函數的局部變數的有效范圍只能在本函數?
函數的形式參數也是局部變數?
局部變數的名稱不能和函數同名稱?
不同的函數中不能定義相同名稱的局部變數?
11、下列初始化字元數組的語句中,錯誤的是__A___。
char str[5]="hello";?
char str[]={'h','e','l','l','o','\0'};?
char str[5]={"hi"};?
char str[100]="";?
12、引用數組元素時,數組下標可以是__D___。
整型常量?
整型變數?
整型表達式?
以上均可?
13、 已知:char str[10],*p=str; 下面的語句中正確的是__B___。
str="ABC";?
p="ABC";?
*str="ABC";?
*p="ABC";?
14、下面語句中,錯誤的是___D__。
int i;int *p;p=&i;?
int i,*p;p=&a;?
int i,*p=&a;?
int i,*p;*p=i;?
15、下面對於結構體類型的描述正確的是__A___。
結構體類型的大小為各成員變數所佔內存的總和?
結構體類型變數與簡單數據類型變數的引用規則一致。?
結構體類型的大小為其成員中所佔內存空間最大的變數的大小?
結構體類型的大小為其最後一個成員中所佔內存空間的大小?
16、C語言規定:在一個源程序中,main函數的位置____C____。
必須在最開始?
必須在系統調用的庫函數的後面?
可以任意?
必須在最後?
17、表達式18/4*sqrt(4.0)/8值的數據類型是 ___C____。
int?
float?
double?
不確定?
18、在c語言中,char型數據在內存中的存儲形式是 ___D___。
補碼?
反碼?
原碼?
ASCII碼?
19、閱讀以下程序,當輸入的數據形式為:25,13,10<CR>時,正確的輸出結果為___D___。 main() { int x,y,z; scanf("%d%d%d",&x,&y,&z); printf("x+y+z=%d\n",x+y+z); }
x+y+z=48?
x+y+z=35?
x+z=35?
不能確定?
20、有如下程序 void main() { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(「%f\n」,y); } 該程序的輸出結果是( C )。
0.000000?
0.250000?
0.500000?
1.000000?
21、判斷char型變數s是否為小寫字母的正確表達式是__C____。
'a'<=s<='z'?
(s>='a')&(s<='z')?
(s>='a')&&(s<='z')?
('a'<=s)and('z'>=s)?
22、執行以下語句後,y 的值為___A___。 int x,y,z; x=y=z=0; ++x || ++y && ++z;
0?
1?
2?
不確定值?
23、有如下程序段: int number=0; while(number++<=3) printf(「%d\n」,number++); 則正確的執行結果是___C___。
2 3 4?
0 1 2?
1 3?
2 4?
24、有如下程序 void main() { int n=9; while(n>6) { n--; printf(「%d」,n); } } 該程序段的輸出結果是__B___。
987?
876?
8765?
9876?
25、要使以下程序段輸出10個整數,請在空格中填入一個整數。 for(i=0;i<=___B___;printf("%d\n",i+=2));
15?
18?
20?
10?
26、設函數fun的定義形式為: fun(char ch,float x){…} 則以下對函數fun的調用語句中正確的是___B___。
fun(「abc」,3)?
t=fun(『D』,5)?
fun(『ab』,3)?
fun(『78』,1)?
27、函數求sum(int n)的功能是計算自然數1到n的和,即1+2+…+n。 Main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 請從備選答案中選擇一答案,補全程序。
s=s+n;return s;?
s=s+i;return s;?
return s;?
return s+=I;?
28、設函數fun的定義形式為 int fun(int a[],int n) { int s=0,i=0; for(i=0;i<n;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(&a[2],2)); } 則程序的運行結果為___C___。
3?
5?
7?
9?
29、若有說明:int a[10];則對數組元素的正確引用是___D____。
a[10]?
a[3,5]?
a(5)?
a[10-10]?
30、以下不正確的定義語句是___B___。
double x[5]={2.0,4,0,6,0,8,0,10.0};?
int y[5]={0,1,3,5,7,9};?
char c1[]={'1','2','3','4','5'};?
char c2[]={'\x10','\xa','\x8'};?
31、下面程序的運行結果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c
SWA?
SW*?
SW*A?
SW?
32、以下能正確進行字元串賦值操作的是___D___。
char s[5]={"12345"};?
char s[5]={'1','2','3','4','5',『6』};?
char *s;*s="12345";?
char *s="12345";?
33、以下程序段的運行結果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; }
PROgram?
PROGRAM?
PRO?
proGRAM?
34、若有說明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,則以下敘述正確的是__C____。
*pc[0]代表的是字元串"aaa"的首地址?
*pc[0]代表的是字元'a'的首地址?
pc[0]代表的是字元串"aaa"的首地址?
pc[0]代表的是字元'a'的首地址?
35、下列程序的運行結果是___B___。 #include <stdio.h> #include <string.h> void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1<q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s
GAGGAGA?
AGAAGAG?
GFEDCBA?
AGADAGA?
36、定義如下的結構體描述同學信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假設此同學的序號為1002,姓名為黎明,班級為冶金3班,則描述正確的為___C__。
id=1002; name=黎明; class=冶金3班;?
id=1002; name=」黎明」; class=」冶金3班」;?
s.id=1002; s.name=」黎明」; s.class=」冶金3班」;?
s.id=1002; s.name=黎明; s.class=冶金3班;?
37、用來描述C程序中注釋的是__C___。
//?
?
**?
38、下列變數中合法的定義是__A___。
short _a=2-1?
long if=0xabcL?
double 1_d=1.5e2?
float a=1.5e2.7?
39、當c的值不為0時,能夠將c的值賦給變數a和b的是__C___
c=b=a?
(a=c)||(b=c)?
(a=c)&&(b=c)?
a=c=b?
40、設有以下程序段,執行後的輸出結果是___B__ int x=100,y=200; printf("%d",(x,y));
100?
200?
100,200?
編譯出錯
C語言期末考試題及答案(2)

1、若執行下面的程序時從鍵盤輸入10,則輸出是__B__ main( ) { int a; scanf(「%d」,&a); if(a++>10) printf(「%d\n」,++a); else printf("%d\n",a--); }
12?
11?
10?
9?
2、執行下面程序段的結果是__D___ int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
3、執行與句:for(n=0;n++<4; ); 後,變數n的值是__C__。
3?
4?
5?
不定?
4、以下關於循環的描述中,錯誤的是__D___。
可以用for語句實現的循環一定可以用while語句實現?
可以用while語句實現的循環一定可以用for語句實現?
可以用do…while語句實現的循環一定可以用while語句實現?
do…while語句與while語句的區別僅僅是關鍵字while的位置不同?
5、下面的描述錯誤的是__C__。
函數可以有多個形式參數?
函數可以沒有返回值?
函數內可以嵌套定義函數?
函數可以被其他函數調用?
6、函數返回值的類型是由__A__決定的。
定義函數時指定的返回類型?
函數中return語句的表達式類型?
主調函數的實際參數類型?
主調函數的返回值類型?
7、定義了一維int型數組a[10]後,下面錯誤的引用是__B__。
a[0]=1;?
a[10]=2;?
a[0]=5*2;?
a[1]=a[2]*a[0];?
8、定義了int型二維數組a[6][7]後,數組元素a[3][4]前的數組元素個數為__B__。
24?
25?
18?
17?
9、下面語句中,錯誤的是__D__。
int i; int *p; p=&i;?
int i,*p; p=&a;?
int i,*p=&a;?
int i,*p; *p=i;?
10、 已知int型二維數組a[3][4],數組元素a[1][2]的地址不能表達為__C__。
&a[1][2]?
a[1]+2?
*a[1]+2?
*(a+1)+2?
11、C語言中,5種基本數據類型的存儲空間長度的排列順序為___A___。
char
char=int
char
char=int=long int<=float
12、假設所有變數均為整型,則表達式(a=2,b=5,b++,a+b)的值是 ___B___。
7?
8?
6?
2?
13、若有說明語句:char c='\72';則變數c ___A___。
包含1個字元?
包含2個字元?
包含3個字元?
說明不合法,c的值不確定?
14、若x,y均定義為整型,z定義為double型,以下不合法的scanf函數調用語句是___C___。
scanf("%d%lx,%le",&x,&y,&z);?
scanf("%2d * %d%lf",&x,&y,&z);?
scanf("%x%*d%o",&x,&y,&z);?
scanf("%x%o%6.2f",&x,&y,&z);?
15、若輸入字元串:abcde<回車>,則以下while循環體將執行___A___次。 while((ch=getchar())=='e') printf("*");
1次?
死循環?
0次?
5次?
16、執行下面的程序段後,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n);
3?
63?
36?
2?
17、下面程序段中循環的執行次數是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a>=0);
10?
3?
5?
4?
18、下面程序段的運行結果是__D____。 x=2; do{printf("*");x--;}while(!x==0);
*?
***?
沒有輸出?
**?
19、下面程序段的運行結果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i<=10); printf("%d",a);
2?
-2?
3?
0?
20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b<0) c=0; else c++; printf("%d\n",c); } 該程序的輸出結果是___A___。
0?
1?
2?
3?
21、程序中對fun函數有如下說明 void fun(); 下面說明是錯誤的是___B___。
fun函數無返回值?
fun函數的返回值可以是任意的數據類型?
fun函數沒有形式參數?
void 可以省略?
22、函數求sum(int n)的功能是計算自然數1到n的和,即1+2+…+n。 main() { printf("The sum=%d\n",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i<=n;i++) _____B_____ } 請從備選答案中選擇一答案,補全程序。
s=s+n; return s;?
s=s+i; return s;?
return s;?
return s+=i;?
23、 有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___
4,3,7?
3,4,7?
5,2,7?
2,5,7?
24、若有說明:int a[][3]={1,2,3,4,5,6,7};則數組a第一維的大小是___B___。
2?
3?
4?
無確定值?
25、判斷字元串s1是否大於字元串s2,應當使用___D____。
if(s1>s2)?
if(strcmp(s1,s2))?
if(strcmp(s2,s1)>0)?
if(strcmp(s1,s2)>0)?
26、當運行以下程序時,從鍵盤輸入:AhaMA Aha<CR> <CR>表示回車,則下面程序的運行結果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c)
ahAMa?
AhAMa?
AhAMa ahA?
ahAMa ahA?
27、以下程序執行後a的值為___C____。main( ) { int a,m=2, k=1, *p=&k; a=p!=&m; printf("%d\n",a); }
-1?
0?
1?
2?
28、以下能正確讀入字元串的程序段是____C___。
char *p;scanf("%s", p);?
char str[10];scanf("%s", &str);?
char str[10], *p;p=str; scanf("%s", p);?
char str[10], *p=str;scanf("%s", p[1]);?
29、若有定義:int i, x[3][4];,則不能將x[1][1]的值賦給變數i的語句是___B___。
i=x[1][1] ?
i=*(*(x+1))?
i=*(*(x+1)+1)?
i=*(x[1]+1)?
30、下面程序的運行結果是____A___。 # include <stdio.h> # include <string.h> fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++<z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a
abdddfg?
afcdebg?
gbedcfa?
gfedcba?
31、用來描述C程序中注釋的是__C___
/ /?
?
* *?
32、對於"xy\n\102\\\'"字元串的長度是__B___
7?
6?
12?
13?
33、已知:int x=10;執行語句x-=x+x;後x的值是__A___
-10?
10?
-20?
20?
34、下列描述中,正確的是__A___
所有的輸入/輸出都是通過調用庫函數處理的?
所有的輸入/輸出都是通過輸入/輸出語句實現的?
getchar和putchar可以省略#include?
在輸入/輸出格式中的*表示跳過數據的含義?
35、設x=10,y=5;z=15,執行下面一段程序後z的結果是__C___ if(x>y) if(y>z)x=y; else z=y;
7?
6?
5?
4?
36、執行下面程序段的結果是__D___ int x=0; do { printf(「%2d」,x--); }while(x);
列印出321?
列印出23?
不列印任何結果?
陷入死循環?
37、以下關於switch語句和break語句的描述正確的是__D___
在switch語句中必須使用break語句?
break語句只能用於switch語句體中?
break語句只能用於循環語句中?
在switch語句中可以使用break語句?
38、與語句while(!x)等價的語句是__A___
while(x==0)?
while(x!=0)?
while(x!=1)?
while(~x)?
39、下面的描述錯誤的是__C___
?函數可以有多個形式參數?
?函數可以沒有返回值?
?函數內可以嵌套定義函數?
?函數可以被其他函數調用?
40、 下面關於局部變數的描述中,錯誤的是__D___
?函數的局部變數的有效范圍只能在本函數?
?函數的形式參數也是局部變數?
?局部變數的名稱不能和函數同名稱?
?不同的函數中不能定義相同名稱的局部變

③ 中南大學c語言試題

C
語言程序設計試卷
一、單項選擇題(每題1分,共20分)
1.
C語言規定:在一個源程序中,main函數的位置(

)。
A.
必須在最開始
B.
必須在系統調用的庫函數的後面
C.
可以任意
D.
必須在最後
2.
下面四個選項中,均是合法浮點數的選項是(

)。
A.
+1e+1
5e-9.4
03e2
B.
-.60
12e-4
-8e5
C.
123e
1.2e-.4
+2e-1
D.
-e3
.8e-4
5.e-0
3.
若a=-14,b=3,則條件表達式
a

#define
F(y)
8.19-y
#define
PRINT(a)
printf("%d",(int)(a))
void
main(void)
{
int
x=2;
PRINT(x*F(3));
}
A.
10
B.
13
C.
11
D.
報錯
11.
以下程序中編譯和運行結果均正確的一個是(

)。
A.
A.
void
main(void)
{
union
{
int
n;
float
x;
}
comm={1};
printf("%d",comm.n);
}
B.
B.
void
main(void)
{
union
{
int
n;
float
x;
}
comm={12.5};
printf("%f",comm.x);
}
C.
C.
void
main(void)
{
union
{
float
x;
int
n;
}
comm={12.5}
printf("%f",comm.x);
}
D.
D.
void
main(void)
{
union
{
int
n;
float
x;
}
comm=5;
printf("%

④ 中南大學c語言試題

C 語言程序設計試卷
一、單項選擇題(每題1分,共20分)
1. C語言規定:在一個源程序中,main函數的位置( ① )。
A. 必須在最開始
B. 必須在系統調用的庫函數的後面
C. 可以任意
D. 必須在最後

2. 下面四個選項中,均是合法浮點數的選項是( ① )。
A. +1e+1 5e-9.4 03e2
B. -.60 12e-4 -8e5
C. 123e 1.2e-.4 +2e-1
D. -e3 .8e-4 5.e-0

3. 若a=-14,b=3,則條件表達式 a<b? a:b+1的值為 。
A. -14 B. -13 C. 3 D. 4

4. 已知:int n,i=1,j=2;執行語句n=i<j?i++:j++;則i和j的值是( ① ).
A. 1,2 B. 1,3 C. 2,2 D. 2,3

5. 為了判斷兩個字元串s1和s2是否相等,應當使用( ① )
A. if (s1==s2) B. if(s1=s2)
C. if (strcmp(s1,s2))
D. if (strcmp(s1,s2)==0)

6. 以下正確的描述是( ① )。
A. 函數的定義可以嵌套,但函數的調用不可以嵌套。
B. 函數的定義不可以嵌套,但函數的調用可以嵌套。
C. 函數的定義和函數的調用均不可以嵌套。
D. 函數的定義和函數的調用均可以嵌套。

7. 在C語言中,下面對函數不正確的描述是( ① )。
A. 當用數組名作形參時,形參數組值的改變可以使實參數組之值相應改變。
B. 允許函數遞歸調用。
C. 函數形參的作用范圍只是局限於所定義的函數內。
D. 子函數必須位於主函數之前。

8. 如果在一個函數中的復合語句中定義了一個變數,則以下正確的說法是( ① )。
A. 該變數只在該復合語句中有效
B. 該變數在該函數中有效
C. 該變數在本程序范圍內均有效
D. 該變數為非法變數

9. 以下正確的函數形式是( ① )。
A. double fun(int x,int y) { z=x+y;return z;}
B. fun(int x,y) { int z; return z;}
C. fun(x,y) { int x,y; double z; z=x+y; return z;}
D. double fun( int x,int y) {double z; z=x+y; return z; }

10. 以下程序的輸出結果是( ① )。
#include<stdio.h>
#define F(y) 8.19-y
#define PRINT(a) printf("%d",(int)(a))
void main(void)
{
int x=2;
PRINT(x*F(3));
}
A. 10 B. 13 C. 11 D. 報錯

11. 以下程序中編譯和運行結果均正確的一個是( ① )。
A. A. void main(void)
{
union
{
int n;
float x;
} comm={1};
printf("%d",comm.n);
}
B. B. void main(void)
{
union
{
int n;
float x;
} comm={12.5};
printf("%f",comm.x);
}
C. C. void main(void)
{
union
{
float x;
int n;
} comm={12.5}
printf("%f",comm.x);
}
D. D. void main(void)
{
union
{
int n;
float x;
} comm=5;
printf("%d", comm.n);
}

12. 設有定義:int a=1,*p=&a; float b=2.0; char c='A'; 以下不合法的運算是( ① )。
A. p++; B. a--; C. b++; D. c--;

13. 以下程序中調用scanf函數給變數a輸入數值的方法是錯誤的,其錯誤原因是( ① )。
main()
{
int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);

}
A. *p表示的是指針變數p的地址
B. *p表示的是變數a 的值,而不是變數a的地址
C. *p表示的是指針變數p的值
D. *p只能用來說明p是一個指針變數

14. 若num、a、b和c都是int型變數,則執行表達式num=(a=4,b=16,c=32);後num的值為( ① )。
A. 4 B. 16 C. 32 D. 52

15. 已有如下定義和輸入語句,若要求a1,a2,c1,c2的值分別為10,20,A和B,當從第一列開始輸入數據時,正確的數據輸入方式是( ① ),(注: _ 表示空格)
int al,a2,char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
A. 10A_20_B B. 10_A_20_B C. 10A20B D. 10A20_B

16. 若有說明:int a[10]; 則對a數組元素的正確引用是( ① )。
A. a[10] B. a[3.5] C. a[5-3] D. a[-1]

17. 在C語言中, 一維數組的定義方式為:
類型說明符 數組名 ① ;
A. [整型常量表達式] B. [表達式]
C. [整型常量] D. [整型表達式]

18. 以下能對一維數組a進行正確初始化的語句是( ① )。
A. in a[10]=(0,0.0,0,0);
B. int a[10]={}; C. int a[]={0};
D. int a[10]={10*1};

19. 以下程序段( ① )。
x=-1;
do
{
x=x*x;
}
while(! x);
A. 是死循環 B. 循環執行二次
C. 循環執行一次 D. 有語法錯誤

20. 以下關於do-while循環的不正確描述是( ① )。
A. do-while的循環體至少執行一次
B. do-while循環由do開始,用while結束,在while(表達式)後面不能寫分號
C. 在do-while循環體中,一定要有能使while後面表達式的值變為零("假")的操作
D. do-while的循環體可以是復合語句

二、是非判斷題(每題1分,共15分)
1. C語言規定,標識符中的字母一般區分大、小寫。
2. 控制台標准輸入設備一般是指鍵盤。
3. 使用while和do-while循環時,循環變數初始化的操作應在循環語句之前處理。
4. 循環體中continue語句的作用是結束整個循環的執行。
5. 關系表達式的值是0或1。
6. 若有說明:int a[3][4]={0},則只有元素a[0][0]可得到初值0。
7. 字元串作為一維數組存放在內存中。
8. 字元數組中的一個元素存放一個字元。
9. 字元數組中的最後一個字元必須是'\0'。
10. 形參為指針變數時,實參必須是數組名。
11. 用數組名作函數參數時傳遞的是數組的值。
12. 全局變數可以被任何一個函數中的任何一個表達式使用。
13. 一個函數可以帶回一個整型值、字元值、實型值等,也可以帶回指針型的數據。
14. 表達式i++與++i在任何場合功能完全相同。
15. 在賦值表達式中,賦值號左邊的變數和右邊的表達式之值的數據類型可以不相同。

三、多項選擇題(每題1分,共5分)
1. 若要求在if 後一對圓跨括弧中表示a不等於0的關系,則不能正確表示這一關系
的表達式為( ① ).
A.a<>0
B.!a
C.a=0
D.a
E.a!=0

2. 選出所有合法的常量( ① )。
A.3e22.5
B.-e-3
C.-.1e-1
D.'BASIC'
E.'\045'
F.0fd
G.0xfdaL
H.e8
I.'\\'
J."\""

3. 以下關於函數原型說法錯誤的是:
(1)對變數的定義」和「聲明」是一回事,對函數的「定義」和「聲明」也是一回事。
(2)在聲明函數原型時,允許只寫出參數的類型,而不必寫出參數的名稱。
(3)如果在定義函數時不指定函數類型,系統會隱含指定函數類型為int型。
(4)調用一個函數時,函數名、實參個數、實參類型必須與函數原型一致。
(5)如果被調函數的定義出現在主調函數之前,可以不必加以聲明。
(6)所有的函數之間可以互相調用。
(7)在C語言中,所有函數都是平行的,一個函數不能從屬於另一個函數,即不能嵌套定義的。
(8)如果函數沒有返回值,在定義時可以省略函數類型。
(9)在C語言中,任何函數的定義都不允許為空。
(10)C語言規定,實參變數對形參變數的數據傳遞是「值傳遞」。

4. 請從下面關於指針的敘述中, 選出5個正確的敘述。
(1)指針即地址。
(2)指針須先賦值後使用。
(3)當指針p指向數組a的首址後,由於p[i]和a[i]都能引用數組元素,所以這里p和a是等價的。
(4)int *p表示定義了一個指向int類型數據的指針變數p。
(5)數組的指針是指數組的起始地址。
(6)若有定義int a[4],*p=a,則p++後p指向數組a所佔內存的第二個位元組。
(7)使用指針變數作函數參數採取的是"值傳遞"的方式。
(8)相同類型的指針可以進行減法運算。
(9)指針變數和許多變數一樣可以進行四則運算。
(10)指針p指向數組元素a[2],若要其指向a[4],執行p=p*2即可。

5. 以下關於數組的敘述中,5個最確切的說法是:
(1)在聲明一個數組變數時必須指定大小。
(2)必須用常量表達式來說明一個數組變數的大小。
(3)在對數組進行初始化時大括弧中的數據個數必須和數組的大小相同。
(4)有變數定義int a[3]={0,1,2},b[3];,可以用b=a,使數組b的每個元素和a的每個元素相等。
(5)在C語言中,可以將字元串作為字元數組來處理。
(6)定義了字元數組char c[11];為了給它賦值,可以用c="china";。
(7)如果有char s[15]={"I am a\0 student"};,則strlen(s)的值為6。
(8)C語言中,二維數組中元素排列的順序是:按行存放。
(9)在C語言中,不能對局部的數組變數進行初始化。
(10)在聲明時對數組進行進行初始化必須指定數組大小。

四、程序運行結果題(每題4分,共20分)
1. (4分)
下面程序的運行結果是( ① ) 。
#include<stdio.h>
void main(void)
{
int i;
char a[]="Time",b[]="Tom";
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
if (a[i]==b[i])
if (a[i]>='a' && a[i]<= 'z') printf("%c",a[i]-32);
else printf("%c",a[i]+32);
else printf("*");
}

2. (4分)
下面程序段的運行結果是( ① ) 。
i=1;s=3
do
{
s+=i++;
if (s%7==0) continue;
else ++i;
} whlie(s<15);
printf("%d",i);

3. (4分)
若運行時輸入:5999,則以下程序的運行結果(保留小數點後一位)是( ① )。
void main(void)
{
int x;
float y;
scanf("%d",&x);
if (x>=0 && x<=2999) y=18+0.12 * x;
if (x>=3000 && x<=5999) y=36+0.6*x;
if (x>=6000 && x<=10000) y=54+0.3*x;
printf("%6.1f",y);
}

4. (4分)
以下程序的運行結果是( ① )。
void main(void)
{
int a=1,k;
for(k=0;k<3;k++) printf("%4d",f1(a))
}
int f1(int x)
{
static int z=3,y=0;
y++;
z++;
return(x+y+z);
}

5. (4分)
以下程序的功能是計算函數F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,請選擇填空。
#include<stdio,h>
#include<math.h>
float fun1(float,float);
void main(void)
{
float x,y,z,sum;
scanf("%f%f%",&x,&y,&z);
sum=fun1( ① )+ fun1 ( ② );
printf("sum=%f\n",sum);
}
float fun1(float a,float b)
{
float num;
num=a/b;
return num;
}

五、程序填空題(每題2分,共20分)
1.下面程序的功能是用公式:π×π/6=1/(1×1)+1/(2×2)+1/(3×3)+......
求π的近似值, 直到最後一項的值小於10e-6為止。
#include <stdio.h>
#include <math.h>
void main(void)
{
long i=1;
① pi=0;
while (i*i<=10e+6) { pi= ② ; i++; }
pi=sqrt(6.0*pi);
printf("pi=%10.6f\n",pi);
}

2. 下面程序的功能是把以下給定的字元按其矩陣格式讀入數組str1中,並輸出行列號之和是3的數組元素。
void main(void)
{
char str1[4][3]={'A','b','C','d','E','f','G','h','I','j','K','i'
};
int x,y,z;
for(x=0;x<4;x++)
for(y=0; ① ;y++)
{
z=x+y;
if ( ② ) printf("%c\n",str1[x][y]);
}
}

3. 以下程序的功能是用遞歸方法計算學生的年齡,已知第一位學生年齡最小,為10歲,其餘學生一個比一個大2歲,求第5位學生的年齡。
遞歸公式如下:
age(1)=10
age(n)=age(n-1)+2 (n>1)
#include<stdio.h>
int age(int n)
{
int c;
if (n==1) c=10;
else c= ① ;
return c;
}

4. 以下程序的功能是判斷輸入的年份是否是閏年。
void main(void)
{
int year,yes;
scanf("%d",&year);
if (year%400==0) yes=1;
else if ( ① ) yes=1;
else ② ;
if(yes) printf("%d is ",year);
else printf("%d is not ",year);
printf("a leap year.\n");
}

5. 以下程序實現: 輸入三個整數,按從大到小的順序進行輸出。
void main(void)
{
int x,y,z,c;
scanf("%d %d %d",&x,&y,&z);
if ( ① ) { c=y;y=z;z=c;}
if ( ② ) { c=x;x=z;z=c;}
if ( ③ ) { c=x;x=y;y=c;}
printf("%d,%d,%d",x,y,z);
}

六、填空題(每題1分,共20分)
1. 在C語言中,一個float型數據在內存中所佔的位元組數為( ① )個位元組;一個double型數據在內存中所佔的位元組數為( ② )個位元組。

2. 若有定義:char c='\010'; 則變數C中包含的字元個數為( ① )。

3. C源程序的基本單位是( ① )。

4. 在C語言中(以16位PC機為例),一個char型數據在內存中所佔的位元組數為( ① );
一個int型數據在內存中所佔的位元組數為( ② )。

5. 已有定義:
int m;
float n,k;
char chl,ch2;
為使m=3, n=6.5, k=12.6, ch1='a', ch2='A', 輸入數據的格式為:
3 6.5 12.6aA
則對應的scanf語句是( ① );。

6. 執行下面的程序片段後,x的值是( ① )。
i=10; i++; x=++i;

7. 設a、b、c均是int 型變數,則執行以下for循環後,c的值為( ① )。
for(a=1,b=5;a<=b;a++) c=a+b;

8. 以下do-while語句中循環體的執行次數是( ① )。
a=10;
b=0;
do { b+=2; a-=2+b; } while (a>=0);

9. 設x和y均為int型變數,則以下for循環中的scanf語句最多可執行的次數是( ① )。
for (x=0,y=0;y!=123&&x<3;x++)
scanf ("%d",&y);

10. 若有以下定義和語句:
int *p[3],a[9],i;
for(i=0;i<3;i++) p[i]=&a[3*i];
則*p[0]引用的是數組元素( ① ); *(p[1]+1)引用的是數組元素( ② )。

11. 設a=3,b=4,c=5,則表達式a||b+c&&b==c的值是( ① )。

12. 進行邏輯與運算的運算符是( ① )。

13. 若a=6,b=4,c=2,則表達式!(a-b)+c-1&&b+c/2的值是( ① )。

14. 下面程序片段中循環體的執行次數是( ① )次。
for(i=1,s=0;i<11;i+=2) s+=i;

15. 若有以下定義和語句:
int a[4]={0,1,2,3},*p;
p=&a[2];
則*--p的值是( ① )。

16. 執行以下程序段後, s的值是( ① )
int a[]={5,3,7,2,1,5,3,10},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);

17. 執行以下程序段後,m的值是( ① )
int a[]={7,4,6,3,10},m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k+=2)
m=(*(ptr+k)<m)?*(ptr+k):m;

答案:

一、單項選擇題(20分)
1.~5.CBACD 6.~10.BDADB
11.~15.CABCC 16.~20.CACCB

二、是非判斷題(15分)
√√√×√ √√√×× × √

三、多項選擇題(5分)
1.ABC 2.CEGIJ 3.ADFHI 4.ABDEH 5.BEGHI

四、程序運行結果題(20分)
1. t*M
2. 8
3. 3635.4
4. 6 8 10
5. z+y,z-y^x+y,x-y

五、程序填空題(20分)
1. ①double ②pi+1.0/(i*i)
2. ①y<3 ②z==2
3. ①age(n-1)+2
4. ①year%4==0&&yeaar%100!=0 ②yes=0
5. ①z>y ②z>x ③y>x

六、填空題(20分)
1. ①4 / 四 ②8 / 八
2. ①1 / 1個
3. ①函數
4. ①1 / 一 ②2 / 二
5. ①scanf("%d%f%f%c%c",&m,&n,&k,&ch1,&ch2)
6. ①12
7. ①10
8. ①3..9. ①3..10. ①a[0] ②a[4]
11. ①112. ①&&13. ①1.14. ①5
15. ①1
16. ①16
17. ①6

⑤ c語言考試,求答案,急!!急!!

一、選擇題((1)—(40)每題1分,(41)—(50)每題2分,共60分)
下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。

(1) 在32位計算機中,一個字長所佔的位元組數為( )。
A) 1
B) 2
C) 4
D) 8

(2) 與十進制數511等值的十六進制數為( )。
A) 1FF
B) 2FF
C) 1FE
D) 2FE

(3) 能將高級語言編寫的源程序轉換成目標程序的是( )。
A) 編程程序
B) 編譯程序
C) 解釋程序
D) 鏈接程序

(4) 在計算機系統中,存儲一個漢字的國標碼所需要的位元組數為( )。
A) 1
B) 2
C) 3
D) 4

(5) 下列帶有通配符的文件名中,能表示文件ABC.TXT的是( )。
A) *BC.?
B) A?.*
C) ?BC.*
D) ?.?

(6) 在多媒體計算機系統中,不能用以存儲多媒體信息的是( )。
A) 光纜
B) 軟盤
C) 硬碟
D) 光碟

(7) DOS命令「COPY/?」的功能是( )。
A) 將當前盤當前目錄中的所有文件復制到當前盤的根目錄下
B) 將當前盤當前目錄中所有以單個字元命名的文件復制到當前盤的根目錄下
C) 以提示方式復制文件
D) 顯示COPY命令的幫助信息

(8) 在Windows環境下,若要將當前活動窗口存入剪貼板,則可以按( )。
A) Ctrl+PrintScreen鍵
B) Ctrl+PrintScreen鍵
C) Shift+PrintScreen鍵
D) PrintScreen鍵

(9) 在Windows環境下,單擊當前應用程序窗口中的「關閉」按鈕,其功能是( )。
A) 將當前應用程序轉為後台運行
B) 退出Windows後再關機
C) 退出Windows後重新啟動計算機
D) 終止當前應用程序的運行

(10) 在Windows環境中,粘貼按鈕是( )。
A) ctrl+A
B) ctrl+C
C) ctrl+X
D) ctrl+V

(11) 以下敘述中正確的是( )。
A) 構成C程序的基本單位是函數
B) 可以在一個函數中定義另一個函數
C) main()函數必須放在其它函數之前
D) 所有被調用的函數一定要在調用之前進行定義

(12) 以下選項中合法的實型常數是( )。
A) 5E2.0
B) E-3
C) .2E0
D) 1.3E

(13) 以下選項中合法的用戶標識符是( )。
A) long
B) _2Test
C) 3Dmax
D) A.dat

(14) 已知大寫字母A的ASCII碼值是65,小寫字母a的ASCII碼是97,則用八進製表示的字元常量『\101』是( )。
A) 字元A
B)字元a
C)字元e
D)非法的常量

(15) 以下非法的賦值語句是( )。
A) n=(i=2,++i);
B)j++;
C) ++(i+1);
D)x=j>0;

(16) 設a和b均為double型變數,且a=5.5、b=2.5,則表達式(int)a+b/b的值是( )。
A)6.500000
B)6
C) 5.500000
D) 6.000000

(17) 已知i、j、k為int型變數,若從鍵盤輸入:1,2,3<回車>,使i的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是( )。
A) scanf(「%2d%2d%2d」,&i,&j,&k);
B) scanf(「%d %d %d」,&i,&j,&k);
C) scanf(「%d,%d,%d」,&i,&j,&k);
D) scanf(「i=%d,j=%d,k=%d」,&i,&j,&k);

(18) 與數學式子 對應的C語言表達式是( )。
A) 3*x^n(2*x-1)
B) 3*x**n(2*x-1)
C) 3*pow(x,n)*(1/(2*x-1))
D) 3*pow(n,x)/(2*x-1)

(19) 設有定義:long x=-123456L;,則以下能夠正確輸出變數x值的語句是( )。
A)printf(「x=%d\n」,x);
B) printf(「x=%1d\n」,x);
C)printf(「x=%8dL\n」,x);
D)printf(「x=%LD\n」,x);

(20) 若有以下程序:
main()
{ int k=2,i=2,m;
m=(k+=i*=k);printf(「%d,%d\n」,m,i);
}
執行後的輸出結果是( )。
A) 8,6
B) 8,3
C) 6,4
D) 7,4

(21) 已有定義:int x=3,y=4,z=5;,則表達式!(x+y)+z-1 && y+z/2的值是( )。
A) 6
B) 0
C) 2
D) 1

(22) 有一函數, ,以下程序段中不能根據x值正確計算出y值的是( )。
A) if(x>0) y=1; B) y=0;
else if(x==0) y=0; if(x>0) y=1;
else y=-1; else if(x<0) y=-1;
C)y=0; D)if(x>=0)
if(x>=0); if(x>0) y=1;
if(x>0) y=1 ; else y=0;
else y=-1; else y=-1;

(23) 以下選項中,與k=n++完全等價的表達式是( )。
A) k=n,n=n+1
B) n=n+1,k=n
C) k=++n
D) k+=n+1

(24) 以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分並輸出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(「%f」,&score); sum+=score;}
ave=sum/4.0;
printf(「NO%d:%f\n」,n,ave);
}
}
上述程序運行後結果不正確,調試中發現有一條語句出現在程序中的位置不正確。這條語句是( )。
A) sum=0.0;
B) sum+=score;
C) ave=sun/4.0;
D) printf(「NO%d:%f\n」,n,ave);

(25) 有以下程序段
int n=0,p;
do{scanf(「%d」,&p);n++;}while(p!=12345 &&n<3);
此處do—while循環的結束條件是( )。
A) P的值不等於12345並且n的值小於3
B) P的值等於12345並且n的值大於等於3
C) P的值不等於12345或者n的值小於3
D) P的值等於12345或者n的值大於等於3

(26) 有以下程序
main()
{ int a=15,b=21,m=0;
switch(a%3)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ default:m++;
case 0:m++;break;
}
}
printf(「%d\n」,m);
}
程序運行後的輸出結果是( )。
A) 1
B) 2
C) 3
D) 4

(27) C語言中,函數值類型的定義可以預設,此時函數值的隱含類型是( )。
A) void
B) int
C) float
D) double

(28) 若有說明:int n=2,*p=&n,*q=p;,則以下非法的賦值語句是( )。
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;

(29) 有以下程序
float fun(int x,int y)
{ return(x+y); }
main()
{ int a=2,b=5,c=8;
printf(「%3.0f\n」,fun(int)fun(a+c,b),a-c));
}
程序運行後的輸出結果是( )。
A) 編譯出錯
B) 9
C) 21
D) 9.0

(30) 有以下程序
void fun(char *c,int d)
{ *c=*c+1;d=d+1;
printf(「%c,%c,」,*c,d);
}
main()
{ char a=』A』,b=』a』;
fun(&b,a); printf(「%c,%c\n」,a,b);
}
程序運行後的輸出結果是( )。
A)B,a,B,a
B) a,B,a,B
C) A,b,A,b
D) b,B,A,b

(31) 以下程序中函數sort的功能是對a所指數組中的數據進行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+1,j
if(a[i]
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++) print(「%d,」,aa[i]);
printf(『\n」);
}
程序運行後的輸出結果是( )。
A)1,2,3,4,5,6,7,8,9,10
B) 10,9,8,7,6,5,4,3,2,1,
C) 1,2,3,8,7.6.5.4.9,10
D) 1,2,10,9,8,7,6,5,4,3

(32) 有以下程序
int f(int n)
{ if (n==1) return 1;
else return f(n-1)+1;
}
main()
{ int i,j=0;
for(i=i;i<3;i++) j+=f(i);
printf(「%d\n」,j);
}
程序運行後的輸出結果是( )。
A) 4
B) 3
C) 2
D) 1

(33) 有以下程序
main()
{ char a[ ]={『a』,『b』,『c』,『d』, 『e』, 『f』, 『g』,『h』,『\0』}; int i,j;
i=sizeof(a); j=strlen(a);
printf(「%d,%d\b」i,j);
}
程序運行後的輸出結果是( )。
A)9,9
B)8,9
C)1,8
D)9,8

(34) 以下程序中函數reverse的功能是將a所指數組中的內容進行逆置。
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

(35) 有以下程序
main()
{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0
for(i=0;i<4;i++) s+=aa[i][1];
printf(「%d\n」,s);
}
程序運行後的輸出結果是( )。
A) 11
B) 19
C) 13
D) 20

(36) 有以下程序
#include
main()
{ char *p=「abcde\Ofghjik\0」;
printf(「%d\n」,strlen(p));
}
程序運行後的輸出結果是( )。
A) 12
B) 15
C) 6
D) 5

(37) 程序中頭文件typel.h 的內容是:
#define N 5
#define M1 N*3
程序如下:
#define 「type1.h」
#define M2 N*2
main()
{ int i;
i=M1+M2; printf(「%d\n」,i);
}
程序編譯後運行的輸出結果是:( )。
A) 10
B) 20
C) 25
D) 30

(38) 有以下程序
#include
main()
{ FILE *fp; int i=20,j=30,k,n;
fp=fopen(「d1.dat」「w」);
fprintf(fp,「%d\n」,i);fprintf(fp,「%d\n」j);
fclose(fp);
fp=fopen(「d1.dat」, 「r」);
fp=fscanf(fp,「%d%d」,&k,&n); printf(「%d%d\n」,k,n);
fclose(fp);
}
程序運行後的輸出結果是( )。
A) 20 30
B) 20 50
C) 30 50
D) 30 20

(39) 以下敘述中錯誤的是( )。
A) 二進制文件打開後可以先讀文件的末尾,而順序文件不可以
B) 在程序結束時,應當用fclose函數關閉已打開的文件
C) 在利用fread函數從二進制文件中讀數據時,可以用數組名給數組中所有元素讀入數據
D) 不可以用FILE定義指向二進制文件的文件指針

(40) 有以下程序
#include
main(int argc,char *argv[])
{ int i,len=0;
for(i=1;iprintf(「%d\n」,len);
}
程序編譯連接後生成的可執行文件是ex1.exe,若運行時輸入帶參數的命令行是:
ex1 abcd efg 10<回車>
則運行的結果是:( )。
A) 22
B) 17
C) 12
D) 9

(41) 有以下程序
int fa(int x)
{ return x*x; }
int fb(int x)
{ return x*x*x; }
int f(int (*f1)(),int (*f2)(),int x)
{ return f2(x)-f1(x); }
main()
{ int i;
i=f(fa,fb,2); printf(「%d\n」,i);
}
程序運行後的輸出結果是( )。
A) -4
B) 1
C) 4
D) 8

(42) 有以下程序
int a=3;
main()
{ int s=0;
{ int a=5; s+=a++; }
s+=a++;printf(「%d\n」,s);
}
程序運行後的輸出結果是( )。
A) 8
B) 10
C) 7
D) 11

(43) 有以下程序
void ss(char *s,char t)
{ while(*s)
{ if(*s==t) *s=t-『a』+』A』;
s++;
}
}
main()
{ char str1[100]=「abcddfefdbd」,c=』d』;
ss(str1,c); printf(「%s\n」,str1);
}
程序運行後的輸出結果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd

(44) 有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{ struct stu s[3]={{「20021」,90,95,85},
{「20022」,95,80,75},
{「20023」,100,95,90}},*p=s;
int i; float sum=0;
for(i=0;i<3,i++)
sum=sum+p->score[i];
printf(「%6.2f\n」,sum);
}
程序運行後的輸出結果是( )。
A) 260.00
B) 270.00
C) 280.00
D) 285.00

(45) 設有如下定義:
struck sk
{ int a;
float b;
}data;
int *p;
若要使P指向data中的a域,正確的賦值語句是( )。
A) p=&a;
B) p=data.a;
C) p=&data.a;
D) *p=data.a;

(46) 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{ struct NODE *p,*Q,*R;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf(「%d\n」,p->num+q->next->num);
}
程序運行後的輸出結果是( )。
A) 10
B) 20
C) 30
D) 40

(47) 若有以下說明和定義
typedef int *INTEGER;
INTEGER p,*q;
以下敘述正確的是( )。
A) P是int型變數
B) p是基類型為int的指針變數
C) q是基類型為int的指針變數
D) 程序中可用INTEGER代替int類型名

(48) 有以下程序
main()
{ unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf(「%d%d\n」,b,c);
}
程序運行後的輸出結果是( )。
A) –11 12
B) –6 –13
C) 12 24
D) 11 22

(49) 有以下程序
#include
main()
{ char *p,*q;
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(「%s%s」,p,q); printf(「%s%s\n」,p,q);
}
若從鍵盤輸入:abc def<回車>,則輸出結果是:( )。
A) def def
B) abc def
C) abc d
D) d d

(50) 以下程序中函數f的功能是將n個字元串按由大到小的順序進行排序。
#include
void f(char p[][10],int n)
{ char t[20]; int i,j;
for(i=0;ifor(j=i+1;jif(strcmp(p[i],p[j])<0)
{ strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}
}
main()
{ char p[][10]={「abc」,「aabdfg」,「abbd」,「dcdbe」,「cd」};int i;
f(p,5); printf(「%d\n」,strlen(p[0]));
}
程序運行後的輸出結果是( )。
A) 6
B) 4
C) 5
D) 3

二、填空題(每空2分,共40分)
請將答案分別寫在答題卡中序號為【1】至【20】的橫線上,答在試卷上不得分。

1、計算機軟體分為系統軟體和應用軟體,操作系統屬於 [1] 。

2、在DOS環境下,代表鍵盤和顯示器的設備文件名為 [2] 。

3、支持Internet基本服務的協議是 [3] 。

4、從Windows環境進入MS-DOS方式後,返回Windows環境的DOS命令為 [4] 。

5、某微型機的運算速度為2MIPS,則該微型機每秒執行 [5] 條指令。

6、設有定義:int n,*k=&n;以下語句將利用指針變數k讀寫變數n中的內容,請將語句補充完整。
scanf(「%d, 」 [6] );
printf(「%d\n」, [7] 。);

7、以下程序運行後的輸出結果是 [8] 。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(「%d,%d \n」,x,y);
}

8、以下程序運行後的輸出結果是 [9] 。
main()
{ int x=15;
while(x>10 && x<50)
{ x++;
if(x/3){x++;break;}
else continue;
}
printf(「%d\n」,x);
}


9、有以下程序:
#include
main()
{ char c;
while((c=getchar( ))!=』?』) putchar(--c);
}
程序運行時,如果從鍵盤輸入:Y?N?<回車>,則輸出結果為 [10] 。

10、以下程序運行後的輸出結果是 [11] 。
void fun(int x,int y)
{ x=x+y;y=x-y;x=x-y;
printf(「%d,%d,」,x,y); }
main()
{ int x=2,y=3;
fun(x,y);
printf(「%d,%d\n」,x,y);
}

11、以下函數的功能是計算s=1+ + +……+ ,請填空。
double fun(int n)
{ double s=0.0,fac=1.0; int i;
for(i=1,i<=n;i++)
{ fac=fac [12] ;
s=s+fac;
}
return s;
}


12 fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數,再求這N個最大值中的最小的那個數作為函數值返回。請填空。
#include
#define N 100
int fun(int(*a)[N])
{ int row,col,max,min;
for(row=0;row{ for(max=a[row][0],col=1;colif( [13] )max=a[row][col];
if( row==0)min=max;
else if( [14] )min=max;
}
return min;
}

13、函數sstrcmp()的功能是對兩個字元串進行比較。當s所指字元串和t所指字元串相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
#include
int sstrcmp(char *s,char *t)
{ while(*s&&*t&& *s== [15] )
{ s++;t++;}
return [16] ;
}

14、下面程序的運行結果是 [17] 。
#define N 10
#define s(x) x*x
#define f(x) (x*x)
main()
{ int i1,i2;
i1=1000/s(N); i2=1000/f(N);
printf(「%d %d\n」,i1,i2);
}

15、下面程序的運行結果是: [18] 。
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf(「%d%d\n」,*p,*q);
}

16、下面程序的運行結果是: [19] 。
typedef union student
{ char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{ STU a[5];
printf(「%d\n」,sizeof(a));
}

(17) 函數sstrcmp()的功能是對兩個字元串進行比較。當s 所指字元串和t所指字元相等時,返回值為0;當s所指字元串大於t所指字元串時,返回值大於0;當s所指字元串小於t所指字元串時,返回值小於0(功能等同於庫函數strcmp())。請填空。
#include <stdio.h>
int sstrcmp(char *s,char *t)
{while(*s&&*t&&*s==【19】)
{s++;t++; }
return 【20】;
}

⑥ c語言期中考試 急!!!!!!!正在考 能答幾個都行

第一個:odd是從0到1000之間所有偶數的和
even是從1到1000之間所有奇數的和
第二個:even是能被2整除的數的和
odd是不能被2整除的數的和
第一個odd和even都要從1加到1000
第二個只需要加一次較簡單

⑦ 求:C語言程序設計試卷及答案一份

一、選擇題(1~40題每題1分,41~50題每題2分,共60分)下列各題A、B、C、D四個選項中,只有一個選項是正確的。請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。

1.微型計算機的運算器、控制器及內存儲器組合在一起,稱之為()(本題分值:1分)
【正確答案】D
A.ALU
B.CPU
C.MPU
D.主機
2.下列存儲器中,存取速度最快的是()(本題分值:1分)
【正確答案】D
A.軟盤
B.硬碟
C.光碟
D.內存
3.系統軟體中最重要的是()(本題分值:1分)
【正確答案】A
A.操作系統
B.語言處理程序
C.工具軟體
D.資料庫管理系統
4、CPU處理的數據基本單位為字,一個字的字長()(本題分值:1分)
【正確答案】D
A.為8個二進制位
B.為16個二進制位
C.為32個二進制位
D.與CPU晶元的型號有關
5.列印當前屏幕內容應使用的控制鍵是()(本題分值:1分)
【正確答案】D
A.Scroll-Lock
B.Num-Lock
C.PgDn
D.PrtSc(Print Screen)
6.能將高級語言源程序轉換成目標程序的是()(本題分值:1分)
【正確答案】C
A.調試程序
B.解釋程序
C.編譯程序
D.編輯程序
7.二進制數1110111.11轉換成十進制數是()(本題分值:1分)
【正確答案】B
A.119.375
B.119.75
C.119.125
D.119.3
8.十六進制數FF.1轉換成十進制數是()(本題分值:1分)
【正確答案】A
A.255.0625
B.255.125
C.127.0625
D.127.125
9.中國國家計算機網路設施是()(本題分值:1分)
【正確答案】A
A.NCFC
B.CERNET
C.ISDN
D.Internet
10.控制鍵^C的功能為()(本題分值:1分)
【正確答案】A
A.終止當前操作
B.系統復位
C.暫停標准輸出設備的輸出
D.結束命令行
11.COMMAND.COM為命令處理程序,DOS系統啟動後,它()(本題分值:1分)
【正確答案】B
A.駐留在外存,需要時裝入內存
B.常駐內存,包含所有內部命令
C.不能處理外部命令
D.不能處理後綴為.EXE的可執行文件
12.為了將所有擴展名為.PAS的文件改成擴展名為.P,應使用命令()(本題分值:1分)
【正確答案】C
A.REN *.PAS .?AS
B.REN PAS P
C.REN *.PAS *.P
D.REN *.PAS *.P??
13.設當前盤中文件XY.C的路徑為\A\B\XU,當前目錄為\A\B。為了查看文件XY.C的內容,應使用命令()(本題分值:1分)
【正確答案】A
A.TYPE XU\XY.C
B.TYPE \XU\XY.C
C.DIR XU\XY.C
D.DIR \A\B\XU\XY.C
14.要將提示符改成當前盤當前目錄後加一個大於號「>」,應使用命令()(本題分值:1分)
【正確答案】B
A.PROMPT
B.PROMPT $ p $ g
C.PROMPT $ $
D.PROMPT C\>
15.在多媒體計算機系統中,CD-ROM屬於()(本題分值:1分)
【正確答案】D
A.感覺媒體
B.表示媒體
C.表現媒體
D.存儲媒體
16.設當前盤為C盤,將A盤根目錄下的文件目錄信息存放到當前盤當前目錄下的文件AB中,應使用命令()(本題分值:1分)
【正確答案】C
A.TYPE A:\>AB
B.DIR >AB
C.DIR A:\>AB
D.DIR \>AB
17.在位運算中,操作數每右移一位,其結果相當於()(本題分值:1分)
【正確答案】B
A.操作數乘以2
B.操作數除以2
C.操作數除以16
D.操作數乘以16
18.在當前盤當前目錄下有一個文件A.BAT,其內容為
CD \
MD \XYZ\AB\B\C
CD XYZ\AB\B
在正確執行上述文件後,接著執行下列命令時,不會發生錯誤的是()(本題分值:1分)
【正確答案】C
A.MD C
B.RD \XYZ
C.RD C
D.RD B
19.下列命令組中兩個DOS命令互相等價的是()(本題分值:1分)
【正確答案】D
A.TYPE AB.TXT與DIR AB.TXT
B.DISKCOMP A:B:與COMP A:.* B:*.
C.TYPE AB.TXT>>XY.TXT與COPY AB.TXT XY.TXT
D.TYPE AB.TXT>XY.TXT與COPY AB.TXT XY.TXT
20.設A盤為啟動盤,其目錄結構為
根目錄
DOS子目錄 COMAND.COM
USER子目錄 AUTOEXEC.BAT
其文件AUTOEXEC.BAT的內容如下:
MD \XYZ
CD \DOS\USER
則由A盤啟動成功後,A盤的當前目錄是()(本題分值:2分)
【正確答案】C
A.\DOS\USER
B.\XYZ
C.根目錄
D.\DOS
21.C語言提供的合法關鍵字是()(本題分值:1分)
【正確答案】C
A.switch
B.cher
C.case
D.default
22.在C語言中,合法的字元常量是()(本題分值:1分)
【正確答案】B
A.′\084′
B.′\x43′
C.′ab′
D.′\0′
23.若已定義x和y為double類型,則表達式: x=1,y=x+3/2的值是()(本題分值:1分)
【正確答案】C
A.1
B.2
C.2.0
D.2.5
24.合法的數組定義是()(本題分值:1分)
【正確答案】D
A.int a[]=〃string〃;
B.int a[5]={0,1,2,3,4,5};
C.char a=〃string〃;
D.char a[]={0,1,2,3,4,5};
25.設a為整型變數,不能正確表達數學關系10<a<15的C語言表達式是()(本題分值:1分)
【正確答案】A
A.10<a<15
B.a==11||a==12||a==13||a==14
C.a>10&&a<15
D.!(a<=10)&&!(a>=15)

26.若t為double類型,表達式t=1,t+5,t++的值是()(本題分值:1分)
【正確答案】C
A.1
B.6.0
C.2.0
D.1.0
27.若有定義和語句:
char s[10];s=〃abcd〃;printf(〃%s\n〃,s);
則結果是(以下μ代表空格)()(本題分值:1分)
【正確答案】D
A.輸出abcd
B.輸出a
C.輸出abcdμμμμμ
D.編譯不通過
28.若有定義和語句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf(〃%d,%d\n〃,*p,**pp);
則輸出結果是()(本題分值:1分)
【正確答案】D
A.10,10
B.10,20
C.20,10
D.20,20
29.若有以下定義和語句:
int u=010,v=0x10,w=10;
printf(〃%d,%d,%d\n〃,u,v,w);
則輸出結果是()(本題分值:1分)
【正確答案】A
A.8,16,10
B.10,10,10
C.8,8,10
D.8,10,10
30.若有以下定義和語句:
char c1=′b′,c2=′e′;
printf(〃%d,%c\n〃,c2-c1,c2-′a′+′A′);
則輸出結果是()(本題分值:1分)
【正確答案】B
A.2,M
B.3,E
C.2,E
D.輸出項與對應的格式控制不一致,輸出結果不確定
31.若有定義:int a[3][4];,()不能表示數組元素a[1][1]。(本題分值:1分)
【正確答案】D
A.*(a[1]+1)
B.*(&a[1][1])
C.(*(a+1))[1]
D.*(a+5)

32.若i、j已定義為int型,則以下程序段中內循環體的總的執行次數是()(本題分值:1分)
for(i=5;i>0;i--)
for(j=0;j<4;j++){…}
【正確答案】A
A.20
B.24
C.25
D.30
33.若有以下定義和語句:
char *s1=〃12345〃,*s2=〃1234〃;
printf(〃%d\n〃,strlen(strcpy(s1,s2)));
則輸出結果是()(本題分值:1分)
【正確答案】A
A.4
B.5
C.9
D.10
34.若有以下定義和語句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則不能表示a數組元素的表達式是()(本題分值:1分)
【正確答案】B
A.*p
B.a[10]
C.*a
D.a[p-a]
35.下面程序的輸出結果是()(本題分值:2分)
【正確答案】C
A.k=3 a=2 b=3
B.k=3 a=3 b=2
C.k=2 a=3 b=2
D.k=2 a=2 b=3
36.下面程序的輸出結果是()(本題分值:1分)
main()
{unsigned a=32768;
printf(〃a=%d\n〃,a);}
【正確答案】C
A.a=32768
B.a=32767
C.a=-32768
D.a=-1
37.執行下面語句後的輸出結果為()(本題分值:1分)
int i=-1;
if(i<=0) printf(〃****\n〃);
else printf(〃%%%%\n〃)
【正確答案】D
A.****
B.%%%%
C.%%%%c
D.有語法錯誤,不能正確執行
38.對於條件表達式(M)?(a++):(a--),其中的表達式M等價於()(本題分值:1分)
【正確答案】C
A.M==0
B.M==1
C.M!=0
D.M!=1
39.下述程序段的輸出結果是()(本題分值:1分)
int x=10;
int7nbspy=x++;
printf(〃%d,%d〃,(x++,y),y++);
【正確答案】A
A.11,10
B.11,11
C.10,10
D.10,11
40.若有以下的定義:
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a
則值為3的表達式是()(本題分值:1分)
【正確答案】A
A.p+=2,*(p++)
B.p+=2,*++p
C.p+=3,*p++
D.p+=2,++*p
41.假定所有變數均已正確說明,下列是程序段運行後x的值是()(本題分值:2分)
a=b=c=0;x=35;
if(!a) x--;
else if(b);
if(c) x=3;
else x=4;
【正確答案】B
A.34
B.4
C.35
D.3
42.在以下一組運算中,優先順序最高的運算符是()(本題分值:2分)
【正確答案】C
A.<=
B.=
C.%
D.&&
43.若有以下定義和語句:
int w[2][3],(*pw)[3];pw=w;
則對w數組元素的非法引用是()(本題分值:2分)
【正確答案】A
A.*(w[0]+2)
B.*(pw+1)[2]
C.pw[0][0]
D.*(pw[1]+2)
44.若有以下程序片段: char str[ ]=〃ab\n\012\\\\〃; printf(〃%d〃,strlen(str));
上面程序片段的輸出結果是()(本題分值:2分)
【正確答案】C
A.3
B.4
C.6
D.12
45.函數調用:strcat(strcpy(str1,str2),str3)的功能是()(本題分值:2分)
【正確答案】C
A.將串str1復制到串str2中後再連接到串str3之後
B.將串str1連接到串str2之後再復制到串str3之後
C.將串str2復制到串str1中後再將串str3連接到串str1之後
D.將串str2連接到串str1之後再將串str1復制到串str3中
46.以下對C語言函數的有關描述中,正確的是()(本題分值:2分)
【正確答案】A
A.在C中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B.C函數既可以嵌套定義又可以遞歸調用
C.函數必須有返回值,否則不能使用函數
D.C程序中有調用關系的所有函數必須放在同一個源程序文件中
47.以下敘述中不正確的是()(本題分值:2分)
【正確答案】C
A.在C中,函數中的自動變數可以賦初值,每調用一次,賦一次初值
B.在C中,在調用函數時,實參和對應形參在類型上只需賦值兼容
C.在C中,外部變數的隱含類別是自動存儲類別
D.在C中,函數形參可以說明為register變數

48.設有以下定義或語句,則輸出的結果是(用small模式編譯,指針變數佔2個位元組)()(本題分值:2分)
struct date
{long *cat;
struct date *next;
double dog;
}too;
printf(〃%d〃,sizeof(too));
【正確答案】D
A.20
B.16
C.14
D.12
49.設有定義:struct sk
{int a;float b;}data,*p;
若有p=&data;,則對data中的a域的正確引用是()(本題分值:2分)
【正確答案】B
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a
50.以下對枚舉類型名的定義中正確的是()(本題分值:2分)
【正確答案】B
A.enum a={one,two,three};
B.enum a{one=9,two=-1,three};
C.enum a={〃one〃,〃two〃,〃three〃};
D.enum a{〃one〃,〃two〃,〃three〃};
二、填空題(每空2分,共40分)請將答案分別寫在答題卡中序號【1】至【20】的橫線上,答在試卷上不得分。
1、與十進制數101等值的二進制數為。(本題分值:2分)
【正確答案】
【1】1100101
2、DOS命令分為內部命令與外部命令,XCOPY命令屬於命令。(本題分值:2分)
【正確答案】
【2】外部
3、設當前盤為A盤,當前系統提示符為「>」,在不改變當前盤的情況下,顯示C盤的當前目錄路徑,應使用命令。 (本題分值:2分)
【正確答案】
【3】CD C:
4、自動批處理文件名必須是。(本題分值:2分)
【正確答案】
【4】AUTOEXEC.BAT

5、設在當前盤當前目錄下有兩個文件W.TXT與P.TXT,現要將文件P.TXT連接到文件W.TXT的後面,若使用COPY命令,則完整的命令為。(本題分值:2分)
【正確答案】
【5】COPY W.TXT+P.TXT W.TXT
6、表示條件10<x<100或x<0的C語言表達式是。(本題分值:2分)
【正確答案】
【6】(x>10&& x<100)||x<0
或(10<x&&x<100)||x<0
或x<0 ||(x>10&&x<100)
或0>x ||(10<x&&x<100)
7、以下程序中,主函數調用了LineMax函數,實現在N行M列的二維數組中,找出每一行上的最籩怠G胩羈鍘?br> #define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j]) ;
printf(〃The max value in line is %d\n〃,);
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
;
}
(本題分值:6分)
【正確答案】
【7】p=j
【8】x[i][p]
【9】LineMax(x)
8、以下程序的功能是:從鍵盤上輸入若干個學生的成績,統計計算出平均成績,並輸出低於平均分的學生成績,用輸入負數結束輸入。請填空。
main()
{float x[1000],sum=0.0,ave,a;
int n=0,i;
printf(〃Enter mark:\n〃);scanf(〃%f〃,&a);
while(a>= 0.0 && n<1000)
{sum+=;x[n]=;
n++; scanf(〃%f〃,&a);
}
ave= ;
printf(〃Output:\n〃);
printf(〃ave=%f\n〃,ave);
for(i=0;i<n;i++)
if() printf(〃%f\n〃,x[i]);
}
(本題分值:8分)
【正確答案】
【10】a
【11】a
【12】sum/n或sum/(float)n或sum/(double)n
【13】x[i]<ave或!(x[i]>=ave)或ave>x[i]
9、執行以下程序,輸入-10的結果是,輸入5的結果是,輸入10的結果是,輸入30的結果是。
(本題分值:8分)
【正確答案】
【14】0
【15】5
【16】10
【17】5
10、以下程序的功能是。
main()
{int num[10]={10,1,-20,-203,-21,2,-2,-2,11,-21};
int sum=0,i;
for(i=0;i<10;i++)
if(num[i]>0)
sum=num[i]+sum;
printf(〃sum=%6d〃,sum);
}
(本題分值:2分)
【正確答案】
【18】計算數組num中大於零的數據之和
11、以下程序可以把從鍵盤上輸入十進制數(long型)以二到十六進制數的形式輸出,請填空。
#include
main()
{char
b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};
int c[64],d,i=0,base;
long n;
printf(〃Enter a number:\n〃); scanf(〃%1d〃,&n);
printf(〃Enter new base:\n〃); scanf(〃%1d〃,&base);
do
{c[i]=;
i++;
n=n/base;
}while(n!=0);
printf(〃The result is:\n〃);
for(--i;i>=0;--i)
{?d=c[i];
printf(〃%c〃,b);
}
}
(本題分值:4分)
【正確答案】
【19】n%base
【20】 [d]