想考計算機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);
}