单项选择题 (本大题共20小题,每小题1分,共20分),我来为大家科普一下关于c语言基础题库及答案?以下内容希望对你有帮助!

c语言基础题库及答案(C语言试题及答案)

c语言基础题库及答案

单项选择题 (本大题共20小题,每小题1分,共20分)

1. 下列说法正确的是( )

C程序可以从任何一个函数开始执行

main函数可以被其它函数调用

一个C程序只能有一个main函数

main函数中不能有形参

2.下列属于正确的标示符是( )

A. ?a B. a=2 C. a.3 D. a_3

3.下列数据中属于“字符串常量”的是

A. ABC B. “ABC” C. ‘abc’ D. ‘a’

4.char型常量在内存中存放的是( )

A. ASCII代码 B. BCD代码 C. 内码 D. 十进制代码

5.设字符型变量a=3,b=6,计算表达式c=(a^b)<<2后c的二进制值是( )

A. 00011100 B.00000111 C. 00000001 D.00010100

6. 若有以下定义:char a;int b;float c; double d;则表达式a*b d-c的值的类型为( )

A. float B. int C. char D. double

7. 以下程序的输出结果是a=5,b=4,则输入数据的形式应该是( )

#include “stdio.h”

main()

{ int a,b;

scanf("%d,b=%d",&a,&b);

printf("a=%d,b=%d",a,b);

}

A 5 4 B 5,4 C 5 b=4 D 5,b=4

8. C语言中,while和do…while循环的主要区别是( )

A. while的循环控制条件比do…while的循环控制条件严格

B. do…while的循环体至少无条件执行一次

C. do…while允许从外部转到循环体内

D. do…while的循环体不能是复合语句

9. 循环语句for(x=0,y=0;(y!=123)||(x<4);x ); 的循环执行( )

A. 无限次 B. 不确定次数 C. 4次 D. 3次

10.在C语言中,设有数组定义 char array []="China"; 则array所占的空间为( )

A. 4个字节

B. 5个字节

6个字节

7个字节

11.若变量已正确说明为int类型,要通过语句scanf(“%d %d %d”,&a,&b,&c);给a,b,c分别赋值3,5,8,不正确的输入形式是( )

3<enter> B. 3,5,8<enter>

5<enter>

8<enter>

C. 3<enter> D. 3 5<enter>

5 8<enter> 8

12. char *p="happy new year"; char *q=p; int k;

for( k=1;k<8;k )

{ putchar(*q);

q ; }

上面C程序段的输出结果是( )

A. happy new year

B. happy new

C. happy n

D. happy

E. appy n

13. 设double *p[5]; 则

p 是指向double型变量的指针

p 是double型数组

p 是指针数组,其元素是指向double型变量的指针

p 是数组指针,指向double型数组

14.两个指针变量不可以( )

A. 相加 B 比较 C 相减 D 指向同一地址

15. 对C语言函数描述正确的是

在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传回给实参

C函数既可以嵌套定义又可以递归调用

函数必须有返回值,否则不能使用函数

函数必须有返回值,返回值类型不定

16. 设有如下定义,则对data中的a成员的正确引用是( )

struct test{int a;float b;}data,*p=&data;

A. (*p).data.a B.(*p).a C. p->data.a D. p.data.a

17. 有如下程序 (提示: 注意宏替换的规则)的

#define N 2 的

#define M N 1 的

#define NUM 2*M 1 的

#main() 的

{ int i; 的

for(i=1;i<=NUM;i ) printf(“%d\n”,i); 的

} 的

该程序中的for循环执行的次数是( )

A. 5 B. 6 C. 7 D. 8

18.若有以下定义,则printf(“%d\n”,sizeof(them));的输出是( )

typedef union {long x[2];int y[4];char z[8];} MYTYPE;

MYTYPE them;

A.32 B.16 C.8 D.24

19. 下列语句中,将c定义为文件型指针的是( )

A. FILE c; B. FILE *c; C. file c; D. file *c;

20.下列关于C语言数据文件的叙述中正确的是的

51TeA.文件由ASCII码字符序列组成,C语言只能读写文本文件的

51stB.文件由二进制数据序列组成,C语言只能读写二进制文件的

51TeC.文件由记录序列组成,可按数据存放形式分为二进制文件和文本文件

51TtD.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

二、填空题 (本大题共10小题,每小题2分,共20分)

在定义变量的同时给变量赋予初值就称为___________________________________

2.下面程序段的输出结果是___________________________________________

int a=28; a=a&21; printf(“%d %o\n”,a,a);

3.能正确表示0≤a≤10的逻辑表达式是_________________________________

4.若有定义int a[3],*p; 则使p指向数组a的赋值语句是_______________________

5.strcmp函数的功能是________________________________________

6. 写出数学式的C语言表达式________________________________

7.将以下程序写成三目运算符的表达式是____________________________________

if(a>b) max=a; else max=b

8.设有定义如下:#define F(N) 2*N, 则表达式F(2 3)的值是_____________________.

9.在C语言中,指针运算符为___________________,取地址运算符________________。

10. 在C语言中,参数传递的两种形式是___________和___________

三、程序分析题 (本大题共5小题,每小题5分,共25分)

1.若运行时输入:2<回车>,则以下程序的运行结果是__________________________

#include <stdio.h>

main()

{

char class;

printf(“Enter 1 for 1st class post or 2 for 2nd post:”);

scanf(“%c”, &class);

if (class==’1’)

printf(“1st class postage is 19p”);

else

printf(“2nd class postage is 14p”);

}

2.以下程序的执行结果是_____________________________________________

#include<stdio.h>

void main()

{

int num=0;

while(num<=2){

num ;

printf("%d ",num);

}

}

3.以下程序的输出结果是_______________________________________

#include <stdio.h>

main( )

{ int k=4, m=1, p;

p=func(k,m);

printf("%d",p);

}

func(int a, int b)

{

int m=0, i=2;

i = i m 1;

m=i a b;

return m;

}

4.以下程序的执行结果是( )。

#include <stdio.h>

main( )

{

int a[]={5,6,7,8}, i;

func(a);

for (i=0; i<4; i )

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

}

func(int *b)

{

int j;

for (j=0; j<4; j )

b[j]=2*j;

}

5.设有程序myapp.c,代码如下:

#include <stdio.h>

main(int argc,char *argv[])

{

while(--argc>0){ printf(“%s”,argv[argc]); printf(“\t”);}

}

编译后形成myapp.exe,如果输入如下的命令:

myapp aaa 333 bbb 444

则输出结果是:______________________________________________________

四、程序填充题 (本大题共5小题,每小题4分。共20分)

1、根据以下嵌套if语句所给条件,填写switch语句,使它完成相同的功能。

(假设mark的取值在1-100之间) if 语句如下:

if (mark<60) k=1;

else if (mark<70) k=2;

else if (mark<80) k=3;

else if (mark<90) k=4;

else if (mark<100) k=5;

请填写下面经转换后的switch语句中的括号中的内容。

switch ( )

{

__________: k=1; break;

case 6 : k=2; break;

case 7 : k=3; break;

case 8 : k=4; break;

___________: k=5; break;

}

2. 将八个数输入到数组中,找出其中最大数和最小数并输出。

main()

{

int I,max,min,a[_______];

for(I=0;I<8;I ) scanf(“%d”,&a[I]);

max=a[0];min=a[0];

for(I=1;I<8;I )

{

if(a[I]>max)

max=__________________________;

if(a[I]<min)

______________________________;

}

printf(“max=%d, min=%d\n”, ____________________________);

}

3.下列程序的功能是输入三角形的三条边a,b,c。求三角形的面积,请填空:

#include <math.h>

main()

{

float a,b,c,s,area;

scanf(“ ”,&a,&b,&c); /*填空*/

s=1.0/2*(a b c);

area= (s*(s-a)*(s-b)*(s-c));/*填空*/

printf(“a=%7.2f, b=%7.2f c=%7.2f, s=%7.2f\n”,a,b,c,s);

printf(“area=%7.2f\n”,area);

}

4.以下程序的功能是求π的近似值,请填空:(提示:)

#include <stdio.h>

main()

{

int s;

____________________;/*填空*/

t=1;pi=0;n=1.0;s=1;

while(fabs(t)>1e-6)

{

__________________;/*填空*/

n=n 2;

s=-s;

t=s/n;

}

pi=pi*4;

printf(“pi=.6f\n”,pi);

}

5.下列程序的功能是从一个文件中读出三个结构体保存在一结构体数组中,请填空:

#include <stdio.h>

struct Test {

char a[20] ;

} ;

main(){

__________________;/*填空*/

struct Test x[3];

int i;

fp = fopen (“d:\\cwz\\abc.bat”, ”rb”) ;

for (i=0; i<3; i )

__________________;/*填空*/

fclose(fp);

}

五、程序设计题 (本大题共2小题,第一题7分,第二题8分,共15分)

1.编写程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C).

C=5(F-32)/9

2. 编写程序用结构体存放下表中的数据,然后计算并输出每人的姓名和实发工资,实发工资=基本工资 浮动工资-支出。

姓名

基本工资

浮动工资

支出

Zhao

Qian

Sun

240.0

360.0

560.0

400.0

120.0

0.0

75.0

50.0

80.0

结构体定义如下:

struct worker

{

char name[10];

float jbgz;

float fdgz;

float zhichu

};

参考答案:

一、单项选择题

1.C 2.D 3.B 4.A 5.D

6.D 7.D 8.B 9.A 10.C

11.B 12.C 13.C 14.A 15.A

16.B 17.B 18.C 19.B 20.D

二、填空题

1.变量初始化

2. 20 24

3. a<=10&&a>=0

4. p=a; 或 p=&a[0];

5. 比较两个字符串的大小

6.x=(-b sqrt(b*b-4*a*c))/(2*a)

7. max=(a>b)?a:b 或 max=a>b?a:b

8. 7

9. * & &

10. 按值传递 按地址传递

三、程序分析题

1.2nd class postage is 14p

2. 1 2 3

3. 8

4. 0246

5. 444 bbb 333 aaa

四、程序填充题

1.default

case 9

2. 8

a[I]

min=a[I]

max,min

3. %f%f%f

Sqrt

4. float t,pi,n

pi=pi t

5. FILE *fp

fread(&x[i],sizeof(struct Test),1 fp)

五、程序设计题

1. #include<stdio.h>

main()

{float C,F;

printf(“input F:”);

scanf(“%f”,&F);

C=5*(F-32)/9;

printf(“C=%.2f”,C) ;

}

2. #include <stdio.h>

struct worker

{

char name[10];

float jbgz;

float fdgz;

float zhichu;

};

main()

{struct worker w[3]={{"Zhao",240,400,75},{"Qian",360,120,50},{"Sun",560,0,80}};

int i;

printf("name sfgz\n");

for(i=0;i<3;i )

printf("%4s.2f\n",w[i].name,w[i].jbgz w[i].fdgz-w[i].zhichu);

}

,