下面CN人才网小编提供计算机C语言笔试题目,希望能帮助到有需要的朋友!
计算机C语言笔试题目
一、 填空题(本大题共25小题,每小题2分,共50分)
1.以下C语言提供的合法的数据类型说明关键字为 d 。
A. Float B. Signed C .interger 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)
{……}
则该函数正确的函数原型声明为:
A.double fun(int x,double)B.fun (int x, int y)C.double fun( int ,double);D.fun(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(“%d\n”,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 C.ptl1=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(“%d\n”,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(“%s\n”,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 B.ptr2=k C.ptr1=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=%d\n",m);
pi=4*m/n;
printf("pi=%f\n",pi);
}