計算機C語言筆試題目及答案

才智咖 人氣:3.16W

想考計算機C語言筆試的同學要注意了,接下來是本站小編為大家精心蒐集的計算機C語言筆試題目及答案,供大家參考借鑑。

計算機C語言筆試題目及答案

一、 填空題(本大題共25小題,每小題2分,共50分)

1.以下C語言提供的合法的資料型別說明關鍵字為 d 。

A. Float B. Signed C rger D. char

2.C語言中的識別符號只能由字母、數字、下畫線組成,且第一個字元 c 。

A必須為字母B必須為下畫線C必須為字母或下畫線D可以是字母、數字或下畫線中任何一種。

3.設有以下語句:

char a=3,b=6,c;

c=a^b<<2;

則 c 的二進位制值是 a 。

A. 00011011

B. 00010100

C. 00011100

D. 00011000

4.假定w,x,y,z,m均為int型變數,有如下程式段

w=1; x=2; y=3; z=4;

m=(w>x)?w:x;

m=(m

m=(m

則程式執行後,m的值是 d 。

A 4 B 3 C 1 D 2

5.若執行以下程式時從鍵盤上輸入9,則輸出結果是 b 。

main()

{

int n;

scanf(“%d”,&n);

if(n++<10)

printf(“%d”n,n--)

}

A 11 B 10 C 9 D 8

6.以下程式段的輸出結果是 d 。

int x=3;

do

{

printf(“%d”,x=2);

}while(!(--x));

A 1 B 30 C 1-2 D無窮迴圈

7. C語言規定,簡單變數做實參時,它和對應的形參之間的資料傳遞方式是 b 。

A.地址傳遞B.值傳遞C.由實參傳遞給形參,再由形參傳遞給實參D.由使用者指定傳遞方式

8. 已知一個函式的定義如下: d 。

double fun (int x, double y)

{……}

則該函式正確的函式原型宣告為:

le fun(int x,double) (int x, int y)le fun( int ,double);(x,y);

9.已知整型變數K的值為5,下面程式段執行的結果是 c 。

switch(k)

{

case1: putchar(‘A’);

case2: putchar(‘B’);

case3: putchar(‘C’);

case4: putchar(‘D’);

default:putchar(‘E’);

}

A CDE B C C E D ABCD

10.以下程式的執行次數是 c 。

main()

{

int i,j ;

for(i=0,j=1;i<=j+1;i+=2,j--)

printf(“%dn”,i);

}

A 3 B 2 C 1 D 0

11.下列敘述中錯誤的是 b 。

A 主函式中定義的變數在整個程式 中都是有效的

B 複合語句中定義的變數只在該複合語句中有效

C 其他函式中定義的變數在主函式中不能使用

D 形參是區域性變數

12.若執行時輸入100,寫出以下程式的執行結果。

main()

{

int a;

scanf("%d",&a);

printf("%s",(a%2!=0 ?"No":"Yes"));

}_

Yes執行結果:A No B Yes C s D No:Yes

執行結果: b

13.下面正確的二維陣列定義是 b 。

A int a[2][]={{1,2},{2,4}};B int a[][2]={1,2,3,4,};C int a[2][2]={{1},{2},{3}};

D int a[2][]={{1,2},{3,4}};

14.若有

char a[]=”china”;

則 d 不可輸出該字串。

A puts(a); B printf(“%s”,a)

C int i; for(i=0;i<5;i++) printf(%c”,a[i]); D putchar(a);

15.對於字串的操作,下列說法中正確的是 c 。

A 可用賦值表示式對字元陣列賦值,如char str[20]; str=”aaaa”;

B 若有字元陣列a和b,且a>b,則strcmp(a,b)為非負數

C 可用strcpy函式進行字串的複製完成字元陣列的'賦值

D 字串“aaaa”在記憶體中佔用4個位元組長度

16.已有定義 int k=2;int *ptrl1, *ptr2;且ptr1和ptr2均已指向變數k,下面不能正確執行的賦值語句是 b 。

A.k=*ptrl+*ptr2 B ptr2=k 1=ptr2 D k=*ptr1*(*ptr2)

17.若定義:

int a[9], *p=a;

並在以後的語句中未改變p的值,不能表示a[1]地址的表示式是 b 。

A.p+1 B a+1 C ++p D a++

18.若有以下定義和語句:

#include

main(0

{char *s1=”12345”,*s2=”1234”;

printf(“%dn”,strlen(strcpy(s1,s2)));

}則輸出的結果是 c 。

A.9 B 5 C 4 D 10

19.以下定義和語句:

int a[3][2]={1,2,3,4,5,6},*p[3];

p[0]=a[1];

則*(p[0]+1)所代表的陣列元素是 c 。

A.a[0][1] B a[1][0] C a[1][1] D a[1][2]

20.以下程式的輸出結果是 b 。

main()

{ char str[][10]={“China”, “BEijing”},*p=str;

printf(“%sn”,p+10);

}

A. China B Beijing C ng D ing

21.回答本題的執行結果為 a 。

已知 int x=3,y,*p,*q;

int a[]={1,2,3,4,5};

p=&x; y=*p, q=a+2;

printf(“%d%d%d%d”,x,y,*p,*q);

A.3 3 3 3 B 1 2 3 4

C.1 2 2 3 D 2 2 2 2

22.在switch()語句中case 後面可以是 c 。

A.關係表示式 B 邏輯表示式 C 常量表達式 D算術表示式

23.表示式5>3&&2||8<4-!1值是 a 。

A.1 B 2 C 3 D 0

24.下列運算子中,優先順序的級別最低的是 d 。

A.! B && C+ D ||

25.已有定義int k=2;int *ptrl,*ptr2;且ptr1和prt2 均已指向變數k,下面有能正確執行的賦值語句是 b 。

A.k=*ptr1+*ptr2 2=k 1=ptr2 D.k=*ptrl*(*ptr2)

二、填空題:(本大題共5小題,每小題2分,共10分)

1.C語言中,唯一的三目運算子是 表示式1?表示式2:表示式3 ,而&&是 雙 目運算子。

2.函式的遞迴可分直接遞迴和間接遞迴,它由遞推和 迴歸 兩部分組成。

3.假設所有變數均為整型,則表示式(a=2,b=5,a++,b++,a+b)的值為 3 6 7 。

4.C語言提供了兩個與地址相關的運算子分別是 & && 。

5.C語言陣列的下標總是從 0 開始,不可以為負數;構成陣列各元素具有相同的 變數 。

三、程式分析題(本大題共4小題,前三小題每題 4分,最後一小題8分,共20分)

1.以下程式的輸出結果為 a 。

main()

{

char c=’z’;

printf(“%c”,c-25);

}

2.分析下列程式的執行結果

main()

{

int k=4,m=1,p;/*靜態變數應用*/

p=fl1(k,m);

printf("%-10d",p);

p=fl1(k,m);

printf("%-10d",p);

}

fl1(a,b)

int a,b;

{

static int m,i=2;

i*=m+2;

m=i+a+b;

return(m);

}_

執行結果為:9 49 (9空格)。

3.通過指標變數給所指向的變數賦值。請將編號①②空白處補充完整。

void main()

{

int int *p1, *p2, a, b;

① p1=&a;

② p2=&b;

scanf(“%d%d”,p1,p2);

printf(“%d%d”,a,b);

}

4.下列程式的作用是將一個數組中的資料逆序輸出,請將編號①②③④空白處補充完整。

#include

main()

{

int n[10];

int i,j,tmp;

printf(“please 10 numbers:n”)

for(i=0;i<10;i++) scanf(“%d”,&n[i]);

printf(“Origin number:n”);

for ①(i=9;i>=0;i--);

printf(“%d”,n[i]);

i=0;j=9;

while ② ;

{

tmp=n[i];

n[i]=n[j];

n[j]=tmp;

③ ;

④ ;

}

printf(“Reversing bumbers:n”);

i=0;

while(i<10)

{

printf(“%d”,n[i]);

i++;

}

}

四、按要求編寫程式(本大題共2小題,每小10題分,共20分)

1.利用冒泡法對60個學生的成績進行排序。

2.編和求 ,公式如下:

,其中arctan(x)用如下形式的級數計算:

直到某級數絕對值不小於 為止。(提示: 和x均為double型)

1.(從低到高的排序)

#include

#include

void fun(int a[], int n);

void main(void)

{

int a[60], i;

for (i=0; i<60; i++)

{

scanf("%d",&a[i]);

}

fun(a,60);

}

void fun(int a[], int n)

{

int i,j,t;

for(i=0; i

{

for (j=0; j

{

if (a[j] > a[j+1])

{

t=a[j];

a[j] = a[j+1];

a[j+1] = t;

}

}

}

for (i=0; i

{

printf("%d ", a[i]);

}

printf("n");

}

2.(網上找的不確定)

#include

#include

#include

#include

void main ()

{

int x,y;

long i,m=0;

double d,r=32767;

float pi,n=5000000;

srand()(time(0));

for(i=0;i

{

x=rand()();

y=rand()();

d=sqrt(x*x+y*y);

if (d

{

m=m+1;

}

}

printf("m=%dn",m);

pi=4*m/n;

printf("pi=%fn",pi);

}