100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > c语言描述考试答案 c语言期末试题

c语言描述考试答案 c语言期末试题

时间:2024-04-13 02:27:44

相关推荐

c语言描述考试答案 c语言期末试题

篇一:c语言期末试题

试卷编号:10183

所属语言:Turbo C

试卷方案:fny-13

试卷总分:110分

共有题型:7种

━━━━━━━━━━━━━━

一、填空 共5题 (共计15分)

━━━━━━━━━━━━━━

第1题 (3.0分)

int x=4,y=z=2;z=x==(y=z); 则z的值为【1】。

答案:

1). 0

第2题 (3.0分)

设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】。

答案:

1). 9

第3题 (3.0分)

设x=72,表达式x=(x>=60)的值为【1】。 答案:

1). 1

第4题 (3.0分)

sqrt()函数的原型在头文件【1】中。 答案:

1). math.h

第5题 (3.0分)

int x=2;z=-x+++1; 则z的值为【1】。 答案:

1). -1

━━━━━━━━━━━━━━

二、判断 共5题 (共计10分) ━━━━━━━━━━━━━━

第1题 (2.0分)

若有说明int c;则while(c=get));是正确的C语句。 答案:Y

第2题 (2.0分)

结构体类型只有一种。

答案:N

第3题 (2.0分)

若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义, 所以此宏定义是错误的。

答案:N

第4题 (2.0分)

参加位运算的数据可以是任何类型的数据。

答案:N

第5题 (2.0分)

若有 int i=10,j=2;则执行完i*=j+8;后的值为28。 答案:N

━━━━━━━━━━━━━━━━━

三、单项选择 共10题 (共计10分)

━━━━━━━━━━━━━━━━━

第1题 (1.0分)

若有下列定义,则对a数组元素地址的正确引用是()。 int a[5],*p=a;

A:*(p+5)

B:*p+2

C:*(a+2)

D:*&a[5]

答案:C

第2题 (1.0分)

在C语言的函数中,下列正确的说法是()。

A:必须有形参

B:形参必须是变量名

C:可以有也可以没有形参

D:数组名不能作形参

答案:C

第3题 (1.0分)

若有说明:int a[3][4];则数组a中各元素()。

A:可在程序的运行阶段得到初值0

B:可在程序的编译阶段得到初值0

C:不能得到确定的初值0

D:可在程序的编译或运行阶段得到初值0

答案:C

第4题 (1.0分)

设C语言中,int类型数据占2个字节,则short类型数据占()。 A:1个字节

B:2个字节

C:4个字节

D:8个字节

答案:B

第5题 (1.0分)

若变量a与i已正确定义,且i已正确赋值,合法的语句是()。 A:a==1

B:++i;

C:a=a++=5;

D:a=int(i);

答案:B

第6题 (1.0分)

若有说明:int a[10];则对a数组元素的正确引用是()。 A:a[10]

B:a[3,5]

C:a(5)

D:a[10-10]

答案:D

第7题 (1.0分)

若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,值是()。

A:-3

B:9

C:-12

D:6 a的

答案:C

第8题 (1.0分)

若有说明:int *p,m=5,n;以下正确的程序段是()。 A:p=&n;scanf("%d",&p);

B:p=&n;scanf("%d",*p)

C:scanf("%d",&n);*p=n;

D:p=&n;*p=m;

答案:D

第9题 (1.0分)

以下叙述中不正确的是()。

A:C语言中的文

答案:D

第10题 (1.0分)

经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在 微机上的值分别为()。

char x=65;

float y=7.3;

int a=100;

double b=4.5;

A:2,2,2,4

B:1,2,2,4

C:1,4,2,8

D:2,4,2,8

答案:C

━━━━━━━━━━━━━━━━

四、多项选择 共5题 (共计10分)

━━━━━━━━━━━━━━━━

第1题 (2.0分)

以下对二维数组a进行正确初始话的是()。

A:static char word[]=Turbo\0;

B:static char word[]={T,u,r,b,o,\0};

C:static char word[]={"Turbo\0"};

D:static char word[]="Turbo\0";

答案:BCD

第2题 (2.0分)

以下描述正确的是()。

A:调用函数时,实参可以是表达式

B:调用函数时,实参与形参可以共用内存单元 C:调用函数时,将为形参分配内存单元

D:调用函数时,实参与形参的类型必须一致

答案:ACD

第3题 (2.0分)

continue语句功能正确的描述是() A:终止当前所在的循环

B:结束本轮循环,开始下一轮循环 C:跳过循环体下面的语句

D:只能用在3种循环语句的循环体中

答案:BCD

第4题 (2.0分)

有说明语句char str[]={"football"};正确的描述是() A:数组str的长度是9

B:strlen(str)的值是8

C:str[4]的值是98

D:str[8]的值是0

答案:ABCD

第5题 (2.0分)

下列中是C语言的合法标识符的有() A:good_morning

B:main

C:stdio.h

D:8abc

答案:AB

━━━━━━━━━━━━━━━━

五、程序填空 共3题 (共计15分) ━━━━━━━━━━━━━━━━

第1题 (5.0分)

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

功能:用函数调用方式,实现字符串的复制。

-------------------------------------------------------*/

void string_copy(char *str_from, char *str_to) {

int i=0;

/***********SPACE***********/

for(; (*(【?】)=*(str_from+i))!=\0; i++) ; }

main()

{

static char array_str1[20]="I am a teacher."; char array_str2[20];

/***********SPACE***********/

【?】(array_str1, array_str2);

/***********SPACE***********/

【?】("array_str2=%s\n",array_str2);

}

答案:

1). str_to+i 或 i+str_to

2). string_copy

3). printf

第2题 (5.0分)

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

功能:从读入的整数数据中,统计大于零的整数个数和小于零的 整数个数。用输入零来结束输入,程序中用变量i统计大于 零的整数个数,用变量j统计小于零的整数个数。

-------------------------------------------------------*/

#include

void main(void)

{

int n,i,j;

printf("Enter INT number,with 0 to end\n"); i=j=0;

scanf("%d",&n);

while(n!=0)

{

/***********SPACE***********/ if(n>0) i=【?】;

/***********SPACE***********/ if(n<0) j=【?】;

/***********SPACE***********/ scanf("%d",【?】);

}

printf("i=%4d\nj=%4d\n",i,j);

}

答案:

1). i + 1 或 i+1 或 1+i 或 1 + i

2). j+1 或 1+j 或 1 + j 或 j + 1

3). &n

第3题 (5.0分)

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

功能:输入字符串,再输入一个字符,将字符串中与输入字符相 同的字符删除。

-------------------------------------------------------*/

#include "stdio.h"

void fun(char a[],char c)

{

int i,j;

/***********SPACE***********/

for(i=j=0; 【?】;i++)

if(a[i]!=c) a[j++]=a[i];

/***********SPACE***********/

【?】;

}

void main(void)

{

char a[20],cc;

gets(a);

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

puts(a);

}

答案:

1). a[i] != \0 或 a[i] 或 a[i]!=NULL

2). a[j]=\0 或 a[j]=NULL 或 a[j]=0

3). cc=get) 或 scanf("%c",&cc)

4). fun(a,cc)

━━━━━━━━━━━━━━━━

六、程序改错 共2题 (共计20分) ━━━━━━━━━━━━━━━━

第1题 (10.0分)

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:读入一行英文文本,将其中每个单词的最后一个字母改成 大写,然后输出此文本行 (这里的“单词”是指由空格 隔开的字符串)。

例如:若输入“I am a student to take the examination.”,

则应输出“I aM A studenT tO takE thE examination.”。

------------------------------------------------------*/

#include "conio.h"

#include "stdio.h"

#include "ctype.h"

#include "string.h"

up1st ( char *p )

{

/**********FOUND**********/

integer k = 0;

for ( ; *p; p++ )

if ( k )

{

/**********FOUND**********/ if ( *p = )

{

k = 0;

/**********FOUND**********/ *(p -1 ) = toupper( *( p - 1 ); }

}

else if ( *p != ) k = 1;

*( p-1 ) = toupper( *(p-1) ); }

main( )

{

char chrstr[81];

clrscr();

printf( "\nPlease enter a string: " ); gets ( chrstr );

printf( "\n\nBefore changing:\n %s", chrstr ); up1st( chrstr );

printf( "\nAfter changing:\n %s", chrstr );

}

答案:

1). int k=0;

2). if ( *p == )

3). *(p -1 ) = toupper( *( p - 1 ));

第2题 (10.0分)

/*------------------------------------------------------

【程序改错】

--------------------------------------------------------

功能:将八进制转数的字符串换为十进制数。如输入“127”,结果为87

------------------------------------------------------*/

#include "stdio.h"

void main(void)

{

/**********FOUND**********/ char p,s[6];

int n;

p=s;

gets(p);

/**********FOUND**********/ n==0;

/**********FOUND**********/ while(*p==\0)

{

n=n*8+*p-0;

p++;

}

printf("%d",n);

getch();

}

答案:

1). char *p,s[6];

2). n=0;

3). while(*p!=\0) 或 while(*p) 或 while(*p!=0)

━━━━━━━━━━━━━━━━

七、程序设计 共3题 (共计30分) ━━━━━━━━━━━━━━━━

第1题 (10.0分)

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:求一个四位数的各位数字的立方和。

-----------------------------------------------*/

#include "stdio.h"

int fun(int n)

{

/**********Program**********/

/********** End **********/

}

void main()

{

int k;

k=fun(1234);

printf("k=%d\n",k);

yzj();

getch();

}

yzj()

{

FILE *IN,*OUT;

int iIN,iOUT,i;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Please Verify The Currernt Dir..It May Be Changed"); }

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Please Verify The Current Dir.. It May Be Changed"); }

for(i=0;i<5;i++)< p="">

{

fscanf(IN,"%d",&iIN);

iOUT=fun(iIN);

fprintf(OUT,"%d\n",iOUT);

}

fclose(IN);

fclose(OUT);

}

答案:----------------------

int d,k,s=0;

while (n>0)

{d=n%10;

s+=d*d*d;

n/=10;

}

return s;

----------------------

第2题 (10.0分)

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在 c数的千位和十位上, b数的十位和个位数依次放在 c数的个位和百位上。

例如:当a=45,b=12。调用该函数后,c=4251。

------------------------------------------------*/

#include "stdio.h"

void fun(int a, int b, long *c)

{

/**********Program**********/

/********** End **********/ }

void main()

{

int a,b;

long c;

clrscr();

printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c);

printf("The result is: %ld\n", c); getch();

NONO();

}

NONO ( )

{

FILE *rf, *wf ;

int i, a,b ;

long c ;

rf = fopen("in.dat", "r") ;

wf = fopen("out.dat","w") ;

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

{

fscanf(rf, "%d,%d", &a, &b) ;

fun(a, b, &c) ;

fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ; }

fclose(rf) ;

fclose(wf) ;

}

答案:----------------------

*c=a/10*1000+a%10*10+b/10+b%10*100; ----------------------

第3题 (10.0分)

/*------------------------------------------------

【程序设计】

--------------------------------------------------

功能:求出N×M整型数组的最大元素及其所在的行坐标及 列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。

例如:输入的数组为:

1 2 3

4 15 6

12 18 9

10 11 2

求出的最大数为18,行坐标为2,列坐标为1。

------------------------------------------------*/

#define N 4

#define M 3

#include

int Row,Col;

void main()

{

int a[N][M],i,j,max,row,col;

printf("input a array:");

for(i=0;i

for(j=0;j

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

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

max=fun(a);

printf("max=%d,row=%d,col=%d",max,Row,Col); getch();

yzj();

}

int fun(int array[N][M])

{

/**********Program**********/

/********** End **********/

}

yzj()

{

FILE *IN,*OUT;

int iIN[N][M],iOUT,i,j;

IN=fopen("in.dat","r");

if(IN==NULL)

{

printf("Please Verify The Currernt Dir..It May Be Changed"); }

OUT=fopen("out.dat","w");

if(OUT==NULL)

{

printf("Please Verify The Current Dir.. It May Be Changed"); }

for(i=0;i

for(j=0;j

fscanf(IN,"%d",&iIN[i][j]);

iOUT=fun(iIN);

fprintf(OUT,"%d %d %d\n",iOUT,Row,Col);

fclose(IN);

fclose(OUT);

}

答案:----------------------

int max,i,j;

max=array [0][0];

Row=0;

Col=0;

for(i=0;i

{for(j=0;j

if(max

{max=array [i][j];

Row=i; Col=j;} }

return(max);

C语言考试题库 综合

篇二:c语言期末试题

C语言程序设计

期末考试试题及其答案

一、单项选择题(本大题共20题,每题2 分,共40分)

1、以下不是C语言的特点的是 ( C)

A、 C语言简洁、紧凑

B、 能够编制出功能复杂的程序

C、 C语言可以直接对硬件进行操作

D、 C语言移植性好

2、以下不正确的C语言标识符是 (D )

A、 ABC B、 abc C、 a_bc D、 ab.c

3、一个C语言程序是由 (B )

A、 一个主程序和若干子程序组成

B、 函数组成

C、 若干过程组成

D、 若干子程序组成

4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是 (B )

A、 有零个或多个输入

B、 有零个或多个输出

C、 有穷性

D、 可行性

5、 设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为 (C )

A、 int B、 float C、 double D、 不确定

6、在C语言中,char型数据在内存中的存储形式是 (D )

A、 补码 B、反码 C、源码 D、ASCII码

7、有如下程序,输入数据:12345M678后(表示回车),x的值是 ( ) 。

#include

main(){

int x;

float y;

scanf("%3d%f",&x,&y);

}

A、 12345 B、 123 C、 45 D、 345

8、若有以下定义int a,b; float x,则正确的赋值语句是 ( B)

A、 a=1,b=2

B、 b++;

C、 a=b=5

D、 b=int(x);`

9、以下程序的执行结果是 ( A)

#include{ int i=10,j=10; printf("%d,%d\n",++i,j--); } A、 11,10 B、 9,10 C、 11,9 D、 10,9

10、巳知字母A的ASCII码是65,以下程序的执行结果是 ( D)

#include

main()

{

char c1=A,c2=Y;

printf("%d,%d\n",c1,c2);

A、 A,Y B、 65,65 C、 65,90 D、 65,89

11、下列运算符中优先级最高的是 (C )

A、 < B、 十 C、 % D、 !=

12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0

是 (D ) 。

A、 ’x’&&’y’

B、 x<=y

C、 x||y+z&&y-z

D、 !((x

13、判断char型变量cl是否为小写字母的正确表达式为 ( D)

A、 ’a’<=c1<=f’z’ B、 (c1>=a)&&(c1<=z)

C、 (‘a’>=c1) (‘z’<=c1) D、 (c1>=’a’)&&(c1<=’z’)

14、字符串"a"在内存中占据的字节个数为 (B )

A、 0 B、 1 C、 2 D、 3

15、下面有关for循环的正确描述是(D )

A、 for循环只能用于循环次数已经确定的情况

B、 for循环是先执行循环体语句,后判定表达式

C、 在for循环中,不能用break语句跳出循环体

D、 for循环体语句中,可以包含多条语句,但要用花括号括起来

16、下面程序的运行结果是(C )

#include

main()

{int num=0;

while(num<=2)< p="">

{num++;

printf(“%d ,num);

}

}

A、 1

B、 1 2

C、 1 2 3

D、 1 2 3 4

17、以下描述正确的是 ( C)

A、 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。

B、 do-while循环由do开始,用while结束,在while(表达式)后面不能写分号。

C、 在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。

D、 do-while循环中,根据情况可以省略while。

18、以下对一维整形数组a的正确说明是 (D )

A、 int a(10); B、 int n=10,a[n];

C、 int n; D、 int a[10];

scanf(“%d”,&n);

int a[n];

19、以下对二维数组a的正确说明是 (C )

A、 inta[3][]; B、 float a(3,4);

C、 double a[1][4]; D、 float a(3)(4);

20、若二维数组a有m列,则在a[j]前面的元素个数为 (B )

A、 j*m+i

B、 i*m+j

C、 i*m+j-1

D、 i*m+j+1

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

1、结构化设计中的三种基本结构是 _____顺序结构,分支结构,循环结构______________

2、在C语言中的实型变量分为两种类型,它们是_单精度型_______ 和 ____双精度型_____

3、当a=5,b=4,c=2时,表达式 a>b!= c的值是 _1______

4、下列程序运行后的输出结果是 _____________

*

**

***

****

#include

main()

{

int i,j;

for(i=4;i>=1;i--)

{printf("*");

for(j=1;j<=4-i;j++)< p="">

printf("*");

printf("\n");

}

5、若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是____0_______ a[2][1]得到的初值是 _________6_______

6、在C语言中,二维数组元素的内存中的存放顺序是_______________

三、程序分析题(本大题共2题,每题4分,共8分,描述程序功能并写出程序执行结果)

1、#include

main( )

{int a,s,n,count;

a=2;s=0;n=1;count=1;

while(count<=7) {n=n*a; s=s+n; ++count;}

printf(“s=%d”,s);

}

2、#include

main()

{int a=[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;

for (i=0;i<3;i++)< p="">

for(j=0;j<3;j++)< p="">

if (i==j) sum=sum+a[j];

printf(“sum=%d\n”,sum);

}

四、编程题(本大题共4题,每题8分,共32分)

1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5 。

2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。

3、判断数m是否为素数(只能被1和它本身整除的整数)?

4、对15个数进行排序,按从小到大的顺序输出。

C语言期末考试试题3

篇三:大学C语言期末考试练习题(带详解答案)

一、 单项选择题

1.( A )是构成C语言程序的基本单位。

A、函数 B、过程 C、子程序 D、子例程

2.C语言程序从 开始执行。

A) 程序中第一条可执行语句 B) 程序中第一个函数

C) 程序中的main函数 D) 包含文件中的第一个函数

3、以下说法中正确的是( C )。

A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义

C、C语言程序总是从main( )函数开始执行

D、C语言程序中的main( )函数必须放在程序的开始部分

4.下列关于C语言的说法错误的是( B ) 。

A) C程序的工作过程是编辑、编译、连接、运行

B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环

D) C程序从main函数开始执行

5.下列正确的标识符是(C )。

A.-a1 B.a[i] C.a2_i D.int t

5~8题为相同类型题

考点:标识符的命名规则

(1) 只能由字母、数字、下划线构成

(2) 数字不能作为标识符的开头

(3) 关键字不能作为标识符

选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)

6.下列C语言用户标识符中合法的是( B )。

A)3ax B)x C)case D)-e2 E)union

选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);

7.下列四组选项中,正确的C语言标识符是( C )。

A) %x B) a+b C) a123 D) 123

选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。

A、print _3d db8 aBc B、I\am one_half start$it 3pai

C、str_1 Cpp pow while D、Pxq My->book line# His.age

选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

字,不满足(3)

9.C语言中的简单数据类型包括(D )。

A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型 D、整型、实型、字符型

10.在C语言程序中,表达式5%2的结果是。

A)2.5 B)2 C)1 D)3

详见教材P52~53.

%为求余运算符,该运算符只能对整型数据进行运算。且符号与被模数相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/为求商运算符,该运算符能够对整型、字符、浮点等类型的数据进行运算,5/2=2

11.如果int a=3,b=4;则条件表达式"a

A) 3 B) 4 C) 0 D) 1

详见教材P97.

表达式1?表达式2:表达式3

先计算表达式1,

若表达式1成立, 则选择计算表达式2,并表达式2的值作为整个大表达式的值; 若表达式1不成立,则选择计算表达式3,并将表达式3的值作为整个大表达式的值 此题中的a

a为3,b为4。a

12.若int x=2,y=3,z=4 则表达式x

A)4 B)3 C)2 D)0 E)1

13.C语言中,关系表达式和逻辑表达式的值是( B ) 。

A) 0 B) 0或1 C) 1 D) ?T?或?F?

14. 下面( D )表达式的值为4.

A) 11/3 B) 11.0/3

C) (float)11/3 D) (int)(11.0/3+0.5)

14~16题为同一类型

详见教材P54~56.

(1)相同数据类型的元素进行数学运算(+、-、*、/)得到结果还保持原数据类型。

(2)不同数据类型的元素进行数学运算,先要统一数据类型,统一的标准是低精度类型转换为高精度的数据类型。

选项A,11与3为两个整数,11/3结果的数据类型也应为整数,因此将3.666666的小数部分全部舍掉,仅保留整数,因此11/3=3.

选项B,11.0为实数,3为整数,因此首先要统一数据类型,将整型数据3转换为3.0,转换后数据类型统一为实型数据,选项B变为11.0/3.0,结果的数据类型也应为实型数据,因此选项B 11.0 /3=3.666666

选项C,先将整数11强制类型转换,转换为实型11.0,因此选项C变为11.0/3,其后计算过程、结果与选项B同

选项D,首先计算11.0/3,其计算过程、结果与选项B同,得到3.666666;再计算

3.666666+0.5=4.166666,最后将4.166666强制类型转换为整型,即将其小数部分全部舍掉,结果为4

15.设整型变量 a=2,则执行下列语句后,浮点型变量b的值不为0.5的是( B )

A.b=1.0/a B.b=(float)(1/a)

C.b=1/(float)a D.b=1/(a*1.0)

16. 若“int n; float f=13.8;”,则执行“n=(int)f%3”后,n的值是(A)

A.1 B.4 C.4.333333 D.4.6

“(int)f“表示将f中的值强制类型转换为整型,即将13.8的小数部分舍掉,转换为13;然后计算13%3,结果为1,再将结果赋给变量n,因此n的值为1

17. 以下对一维数组a的正确说明是:

A) char a(10); B) int a[];

C)int k=5,a[k]; D)char a[3]={?a?,?b?,?c?};

详见教材P143~144,一维数组的定义、初始化

类型符 数组名 [常量表达式]

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。 选项A,常量表达式只能放在中括号 [ ]中

选项B,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化。

选项C,常量表达式不能为变量。

18.以下能对一维数组a进行初始化的语句是: ( C )

A. int a[5]=(0,1,2,3,4,) B. int a(5)={}

C. int a[3]={0,1,2} D. int a{5}={10*1}

详见教材P145,一维数组的定义、初始化

选项B,D,常量表达式只能放在中括号 [ ]中

选项A,数组可以看做是若干个相同数据类型元素的有序集合,因此以集合的形式对其初始化,使用{ }对其初始化,选项A用了().

19.在C语言中对一维整型数组的正确定义为

A)int a(10); B)int n=10,a[n];

C)int n;a[n]; D)#define N 10

int a[N];

20、已知:int a[10]; 则对a数组元素的正确引用是( D )。

A、a[10] B、a[3.5] C、a(5) D、a[0]

详见教材P144,数组元素的引用

数组名[下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数 int a[10]表示定义了一个包含10个整型数据的数组a,数组元素的逻辑地址下标范围为0~9,即a[0] 表示组中第1个元素; a[1] 表示组中第2个元素; a[2] 表示组中第3个元

素; ......;a[9] 表示组中第10个元素.

选项A,超过了数组a的逻辑地址下标范围;

选项B,逻辑地址下标只能为整数

选项C,逻辑地址下标只能放在[ ]中

21.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A.10 B.9 C.6 D.5

先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10].

a[10]对应下面数组中的元素为9. 因此a[a[i]]即为a[9]

a[9]对应下面数组中的元素为6. 因此a[9]即为6

22.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}}; 则数组a的第一维的大小为: ( B )

A. 2 B. 3 C. 4 D.无确定值

5 7 D) 3 6 9

二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行

23.对二维数组的正确定义是( C )

详见教材P149~152,二维数组的定义、初始化

类型符 数组名 [常量表达式][常量表达式]

二维数组可以看做是矩阵

类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。

一维数组初始化时可以省略数组长度

二维数组初始化时可以省略行数,但不能省略列数

选项A,B,都省略了列数

选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中

A.int a[ ] [ ]={1,2,3,4,5,6}; B.int a[2] [ ]={1,2,3,4,5,6};

C.int a[ ] [3]={1,2,3,4,5,6}; D.int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];则对数组元素引用正确的是_____

A)a[2][4] B)a[1,3] C)a[2][0] D)a(2)(1)

详见教材P150,数组元素的引用

数组名[下标] [下标]

引用数组元素时,[ ]中的下标为逻辑地址下标,只能为整数,可以为变量,且从0开始计数 第一个[下标]表示行逻辑地址下标,第二个[下标]表示列逻辑地址下标。

本题图示详见P149图6.7

因此a的行逻辑地址范围0~2;a的列逻辑地址范围0~3;

选项A,列逻辑地址下标超过范围

选项B,D,的引用形式不正确。

25.C语言中函数返回值的类型是由决定的.

A)函数定义时指定的类型 B) return语句中的表达式类型

C) 调用该函数时的实参的数据类型 D) 形参的数据类型

26. 在C语言中,函数的数据类型是指( A )

A 函数返回值的数据类型 B. 函数形参的数据类型

C 调用该函数时的实参的数据类型 D.任意指定的数据类型

27. 在函数调用时,以下说法正确的是( B )

A.函数调用后必须带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不可以使用全局变量

D.主调函数和被调函数总是在同一个文件里

28. 在C语言中,表示静态存储类别的关键字是: ( C )

A) auto B) register C) static D) extern

29.未指定存储类别的变量,其隐含的存储类别为( A )。

A)auto B)static C)extern D)register

30. 若有以下说明语句:

struct student

{ int num;

char name[ ];

float score;

}stu;

则下面的叙述不正确的是: ( D )

A. struct是结构体类型的关键字

B. struct student 是用户定义的结构体类型

C. num, score都是结构体成员名

D. stu是用户定义的结构体类型名

31.若有以下说明语句:

struct date

{ int year;

int month;

int day;

}brithday;

则下面的叙述不正确的是_____.

A) struct是声明结构体类型时用的关键字

B) struct date 是用户定义的结构体类型名

C) brithday是用户定义的结构体类型名

D) year,day 都是结构体成员名

32. 以下对结构变量stul中成员age的非法引用是struct student

{ int age;

篇四:c语言期末考试试题及答案

1. 一个C程序的组成部分可以是( )。

A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数

C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序

2. 一个C程序的执行是从( )。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

(C)本程序的main函数开始,到本程序文件的最后一个函数结束

(D)本程序文件的第一个函数开始,到本程序main函数结束

3. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(

A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线

D) 可以是字母、数字和下划线中任一种字符

4. 设有定义:int m=1,n=-1;则执行语句printf("%d\n",(m--&++n);后的输出结果是(

A) –1 B) 0 C) 1 D) 2

5. 表达式11&10的结果用二进制表示为( )。

A)11 B)3 C)1 D)10

6. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是( )。

(A) 3 (B) 0 (C) 9 (D) -12

7. 在下列选项中,不的赋值语句是( )。

A)t/=5; B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b+c=1;

8. 下列( )表达式不满足:当x的值为(转 载 于: 爱作文网:c语言期末试题)偶数时值为"真",为奇数时值"假"。

A)X%2= =0 B) ! x%2 !=0

C)(x/2 * 2-x)= =0 D) !(x%2)

9. 若有定义: int a=8, b= 5, c; 执行语句c=a/b+0.4 后 c的值为()

A) 1.4 B)1 C) 2.0 D)2

10. 假设a=3,b=4,c=5,则逻辑表达式:

!(a+b)+c-1&&b+c/2的值是( )。

A)true B)false C)0 D) 1

11. 若int a=3,b=4;则执行c=a++>2||b-->=4之后, b变量的值为( )。

A)3 B)0 C)4 D)2

12. 以下哪个表达式的值为4( ) 。)。 )

A)11/3 B)11.0/3 C)(flaot)11/3 D)(int)(11.0/3+0.5)

13. 若变量a,i已经正确定义,且i已经正确赋值,合法的语句是()

A) a==1 B) ++i C) a=a++=5 D)a=int(i)

14. 以下程序的输出结果是()

int a=1234;

printf("%2d",a);

A) 12 B) 34 C)1234 D) 提示错误,无结果

15. 设x,y分别为单精度和双精度类型变量,则下列选项( )可将表达式x+y的运算

结果强制转换为整型数据。

A) (int)x+y B) int(x)+y C) int(x+y) D) (int)(x+y)

16. 当a=3,b=2,c=1时, 表达式f=a>b>c执行完后f的值是( )

A)1 B)0 C)3 D)2

17. 若x=2,y=1,则表达式x>y?1:1.5的值为( )

A)1 B)1.5 C)1.0 D)2

18. 在位运算中,操作数每左移一位,其结果相当于( )

A)操作数乘以2 B)操作数除以2 C)操作数乘以4 D)操作数除以4

19. 在位运算中,某操作数 右移3位,其结果相当于( )

A)操作数乘以6 B)操作数除以6 C)操作数乘以8 D)操作数除以8

20. 在C语言中,若以下变量均为int型,则下面程序段的输出结果是( )。

s=6,u=6; u=s++; u++;

printf("%d",u);

A)7 B)6 C)5 D)4

21. 若有定义:int x,y; char a,b,c;并有以下输入数据:x=1 2 A B C,

则能给x赋整数1,给赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的程序段是

( )

A)scanf("x%d y=%d",&x,&y);

a=getch();b=getch();c=getch();

B)scanf("x=%d%d",&x,&y);

a=getch();b=getch();c=getch();

C)scanf("x=%d%d%c%c%c",7x,&y,&a,&b,&c);

D)scanf("x=%d%d%c%c%c%c%c",&x,&y,&a,&b,&b,&c,&c);

22. 如下程序: #include

void main()

{ int m,n,k;

m=(n=4)+(k=10-7);

printf(“m=%d\n”,m);

}

运行后m的值为( )。

(A)4 (B)3 (C)7 (D)14

23. 结构化程序的三种基本结构是( )。

(A)顺序结构、选择结构、循环结构 (B)递归结构、循环结构、转移结构

(C)嵌套结构、递归结构、顺序结构 (D)循环结构、转移结构、顺序结构

24. 有如下程序

main( )

{ float x=4.0,y;

if(x<0.0) y=0.0;

else if(x<10.0) y=1.0/x;

else y=1.0;

printf(“%f\n”,y);

}

该程序的输出结果是 ( )

A) 0.0 B) 0.25 C) 0.5 D) 1.0

25. 设int a=0,b=5,c=2;选择可执行x++的语句是( )。

(A)if(a) x++ (B)if(a=b) x++;

(C)if(a=

26. 下列程序段运行后,x的值是( )。

int a,b,c,x;

a=b=c=0;x=35;

if(!a) x--;

else if(b);

if(c) x=3;

else x=4;

A)3 B)4 C)34 D)35

27. 若要求在if后一对圆括号中表示a不等于0的关系,则能表示这一关系的表达式为

A)a<>0 B)!a C)a=0 D)a

28. 若N为整型变量,则for(N=10;N=0;N--);循环里的循环体被( )。

A) 无限循环 B) 执行10次 C) 执行一次 D) 一次也不执行

29. 下列程序段运行后i的值是( )。

int i=10

switch(i+1)

{case 10:i++;break;

case 11:++i;

case 12: ++i;break;

default:i=i+1;

}

A)11 B)13 C)12 D)14

30. 以下程序的输出结果为( )。

#include

main()

{ int i;

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

printf("%d",i);

}

(A) 0 (B) 123456789 (C) 0123456789 (D) 10

31. C语句for(;;){ ??}是指( )。

(A)无意义 (B)无限循环 (C)循环执行1次 (D)循环执行0次

32. 有如下程序

main( )

{ int x=1,a=0,b=0;

switch(x){

case 0: b++;

case 1: a++;

case 2: a++;b++;

}

printf(“a=%d,b=%d\n”,a,b);

}

该程序的输出结果是 ( )

A) a=2,b=1

B) a=1,b=1

C) a=1,b=0

D) a=2,b=2

33. 如果程序中有 #include "文件名" 则意味着( )。

(A) 将"文件名" 所指的该文件的全部内容,复制插入到此命令行处。

(B) 指定标准输入输出 (C) 宏定义一个函数 (D) 条件编译说明

34. 要将一个整数12000分别以ASCII码文件和二进制文件形式存放,各自所占的存储空间数分别是( )字节。

A)5和2 B)2和5 C) 2和2 D) 5和5

35. 在下面关于一维数组的定义中,其中( )有语法错0。

A) int x[ ] = {1,2,3,4,5}; B) int x[5] = {0};

C) int x[ ]; D) int x[5];

36. 设有字符数组a,则的输入语句是( )。

(A) gets(''a''); (B) scanf("%c",a); (C) scanf("%s",a); (D) gets("a");

37. 函数调用“strcat(strcpy(str1,str2),str3)” 的功能是( )。

(A)将字符串str1复制到字符串str2后再连接到字符串str3之后

(B)将字符串str1连接到字符串str2后再复制到字符串str3之后

(C)将字符串str2复制到字符串str1后再将字符串str3连接到str1之后

(D)将字符串str2连接到字符串str1后再将str1复制到字符串str3中

38. 定义如下变量和数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是( )。

for(i=0;i<3;i++) printf("%d ",x[i][2-i]);

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9

39. C语言中,以下叙述中错误的是( )。

A) 主函数中定义的变量是全局变量 B) 同一程序中,全局变量和局部变量可以同名

C) 全局变量的作用域从定义处开始到本源程序文件结束

D) 局部变量的作用域被限定在其所定义的局部范围中

40. C语言中,函数调用时若实参是数组名,则被调函数对应形参( )。

A) 可以是相应类型简单变量 B) 必须是相应类型数组名

C) 可以是相应类型数组名 D) 必须是相应类型的指针变量

41. 在下面C语言的函数说明语句中,的是( )。

A) int fun(int , int); B) int fun(int x,y);

C) int fun(x,y); D)int fun(int x; int y);

42. 若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件读写方式字符串应是( )。

A)”a+” B)”r+” C)”wb+” D)”ab”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。