计算机c语言期末答案,计算机C语言笔试题目及答案

想考计算机C语言笔试的同学要注意了,接下来是unjs小编为大家精心搜集的计算机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 ,计算机C语言笔试题目及答案》(https://www.unjs.com)。

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);

}

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值