文档库 最新最全的文档下载
当前位置:文档库 › 大学c语言复习题附答案

大学c语言复习题附答案

大学c语言复习题附答案
大学c语言复习题附答案

判断题

1.运算器是完成算术和逻辑操作的处理部件,通常称为CPU。×

2.通常硬盘安装在主机箱内,因此它属于主存储器。×

3.指令与数据在计算机内是以ASCII码进行存储的。×

4.操作系统是合理地组织计算机工作流程、有效地管理系统资源、方便用户使用的程序集

合。√

5.用计算机机器语言编写的程序可以由计算机直接执行,用高级语言编写的程序必须经过

编译才能执行。√

6.计算机的所有计算都是在内存中进行的。×

7.字长是指计算机能直接处理的二进制信息的位数。√

8.计算机区别于其他计算工具的本质特点是能存储数据和程序。√

9.系统软件就是市场上买来的软件,应用软件就是自己编写的软件。×

10.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、小写英文字母、大

写英文字母。×

11.多台计算机相连,就形成了一个网络系统。×

12.在Internet网上,IP地址、E-mail地址都是唯一的。√

13.不同类型的变量在内存中占用存储空间的大小都是一样的。×

14.表示数学式3

15.设某字符的ASCII码十进制值为72,则其十六进制值为48。√

16.结构化程序语言的三种基本结构是顺序、选择和循环。√

17.‘\n’不是一个字符常量。×

18.与float型数据相比,double型数据的精度高,取值范围大。√

19.在C语言中,表达式(010+2)的值是10。√

20.do-while语句先执行循环体,后判断循环条件,所以循环体至少会执行一次。√

21.在C 语言中,常量和变量都有数据类型。√

22.C 语言的运算符只有单目运算符和双目运算符两种。×

23.若变量已正确定义,表达式 x + y = z符合C语言语法。×

24.C编译器可以找出C源程序中所有的语法错误和逻辑错误。×

25.表达式3 * 5 / 2 和表达式3 / 2 * 5等价。×

26.表达式m = n++ 的求解顺序是先计算m = n,再计算n = n + 1。√

27.变量名fahr和Fahr代表两个不同的变量。√

28.对整型变量可进行自加或自减运算,而对常量或表达式不可以。√

29.while语句先判断循环条件,所以循环体有可能一次也不执行。√

30.C程序中无法比较二个字符的大小。×

31.continue语句和break语句都只能用在循环体中。×

32.表达式 %2 是合法的C语言表达式。×

33.C语言编写的源程序必须经过编译连接,生成扩展名为.exe的可执行文件才能运行。√

34.格式符“%o”是按16进制输出整数。×

35.for循环只能用于循环次数已确定的场合。×

36.算术运算符和赋值运算符的结合方向均由左自右。×

37.break语句只能用在switch语句中。×

38.C的任何类型数据在计算机内部都是以二进制形式存储的。√

39.按格式符“%d”输出float类型变量时,截断小数位后取整输出。×

40.表达式0195是一个八进制整数。×

41.执行 printf ("%d",'M'-'A'+'a' -'m'); ,输出0。√

42.表达式 !x 等价于x != 1。×

43.表达式 (z=0, (x=2)||(z=1),z) 的值是1。×

44.在 C 程序中,用整数0表示逻辑值“假”。√

45.若变量已正确定义,表达式 x=y=1符合C语言语法。√

46.表达式 !(x>0||y>0) 等价于!(x>0)&&!(y>0)。√

47.在C源程序中语句if(x==5) y++;与if(x=5) y++;等价。×

48.在的关系运算符(>=、>、==、!=、<=、<)中,优先级最低的运算符是==、!=。√

49.若x的当前值为5, 执行语句“if(x=3) x=x+5;”后,x的值依然是5。×

50.执行循环语句“for(i=1;i<10;i=i+2) s+=i;”后,i的当前值为11。√

单选题

1.学校的学生学籍管理程序属于______。C

(A)工具软件 (B)系统软件 (C)应用软件 (D)文字处理软件

2.有些高级语言源程序在计算机中执行时,采用的是解释方式。在解释方式下,源程序由

______边解释边执行。B

(A)编译程序 (B)解释程序 (C)操作系统 (D)汇编程序

3.关于计算机软件的叙述,错误的是______。B

(A)软件是一种商品 (B)软件借来复制也不损害他人利益

(C)《计算机软件保护条例》对软件著作权进行保护

(D)未经软件著作权人的同意复制其软件是一种侵权行为

4.在下列四条叙述中,正确的一条是______。C

(A)最先提出存储程序思想的人是英国科学家艾伦·图灵

(B)ENIAC计算机采用的电子器件是晶体管

(C)在第三代计算机期间出现了操作系统

(D)第二代计算机采用的电子器件是集成电路

5.已知英文小写字母d的ASCII码为十进制数100,则英文小写字母h的ASCII码为十进

制数_______。B

(A)103 (B)104 (C)105 (D)106

6.有一个数值152,它与十六进制数6A相等,那么该数值是______。D

(A)十进制数 (B)二进制数 (C)四进制数(D)八进制数

7.Internet比较确切的一种含义是______。B

(A)一种计算机的品牌 (B)网络中的网络,即互连各个网络

(C)一个网络的顶级域名 (D)美国军方的非机密军事情报网络

8.下列关于系统软件的四条叙述中,正确的是______。A

(A)系统软件与具体应用领域无关 (B)系统软件与具体的硬件无关

(C)系统软件是在应用软件基础上开发的(D)系统软件就是指操作系统

9.计算机内存的每个基本单位,被赋予一个唯一的______,称为地址。C

(A)容量(B)字节 (C)序号 (D)功能

10.十六进制数转换成十进制数是______。C

(A) (B) (C) (D)

11.在计算机中存储数据的最小单位是______。B

(A)字节 (B)位 (C)字 (D)记录

12.因特网中某主机的二级域名为“edu”,表示该主机属于______。C

(A)赢利性商业机构 (B)军事机构 (C)教育机构 (D)非军事性政府组织机构

13.下列字符中,其ASCII码值最大的是______。D

(A)9 (B)D (C)a (D)y

14.语句printf(“%%d%d”, 123); 将输出:

A、%123%d

B、%%d123 √

C、%d123

D、上述语句语法有错

15.对于int x, y; 语句 if (x<0) y= -1; else if (!x) y=0; else y=1; 等价于:

A、 y=0; if (x>=0) if (x) y=1; else y= -1;

√B、 if (x!=0) if (x>0) y=1; else y= -1; else y=0;

C、 if (x<0) y= -1; if (x!=0) y=1; else y=0;

D、 y= -1; if (x!=0) if (x>0) y=1; else y=0;

16.语句if (a>b) k=0; else k=1;等价于:

A、k=(a>b)?1:0;

B、k=a>b; √

C、k=a<=b;

D、以上均不是

17.执行下列程序段:

int i, j;

i = 3/2 + 7/2 == 5;

j = 45 % 11 + (((7>8) ? 14:21) == 14);

后变量i,j的值应为:

√A、i=0 j=1 B、i=1 j=1 C、i=0 j=2 D、i=1 j=2

18.如果 int i=16, j=23 ; 执行 printf("%x--%o",i, j)后输出为:

A、10—23 √

B、10--27

C、16--23

D、16—27

19.若x是double型变量,n是int型变量,执行,并输入3 后,x=,

n=3。

√A、scanf("%d%lf", &n, &x); B、scanf("%lf%d", &x, &n);

C、scanf("%lf%d", &n, &x);

D、scanf("%d,%lf", &n, &x);

20.若变量已经被正确定义,为表示“变量x和y都能被3整除”,应使用的C表达式

是。

A、(x%3 != 0) || (y%3 != 0)

B、(x%3 != 0) && (y%3 != 0)

C、(x%3 == 0) || (y%3 == 0) √

D、(x%3 == 0) && (y%3 == 0)

21.while( ) 等价于while(x)。

A、x == 0 √

B、x != 0

C、x == 1

D、x != 1

22.下列程序段的输出结果是。

int count = 0, x, y, z;

for(x = 1; x <= 2; x++)

for(y = 1; y <= 3; y++)

for(z = 1; z <= 4; z++)

count++;

printf("%d", count);

A、10

B、9

√C、24 D、0

23.判断变量ch 是英文字母的表达式为。

A、( 'a' <= ch <= 'z') || ( 'A' <= ch <= 'Z')

B、(ch >= 'a' && ch <= 'z') && ( ch >= 'A' && ch <= 'Z')

√C、(ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z')

D、( 'A' <= ch <= 'z') && ( 'A' <= ch <= 'z')

24.while( ) 等价于while(!x)。

A、x == 1 √

B、x == 0

C、x != 0

D、x != 1

25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段

是。

A、for(i=1,p=1;i<=5;i++) p*=i; √

B、for(i=1;i<=5;i++){ p=1; p*=i;}

C、i=1;p=1;while(i<=5){p*=i; i++;}

D、i=1;p=1;do{p*=i; i++; }while(i<=5);

26.有以下程序

#include <>

main()

{ int i=0,x=0;

for (;;)

{ if(i==3||i==5) continue;

if (i==6) break;

i++;

x+=i;

}

printf("%d\n",x);

}

程序运行后的输出结果是。

A、10

B、13

C、21 √

D、程序进入死循环

27.下列条件语句中,功能与其他语句不同的是。

A、if(a) printf("%d\n",x); else printf("%d\n",y);

B、 if(a==0) printf("%d\n",y); else printf("%d\n",x);

C、 if (a!=0) printf("%d\n",x); else printf("%d\n",y);

√D、 if(a==0) printf("%d\n",x); else printf("%d\n",y);

28.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是。

A、abs(x-y)<10

B、x-y>-10&& x-y<10 √

C、(x-y)<-10||!(y-x)>10

D、

(x-y)*(x-y)<100

29.有以下程序

#include <>

main()

{ int i;

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

switch(i)

{ case 0:printf("%d",i);

case 2:printf("%d",i);

default:printf("%d",i);

}

}

程序运行后的输出结果是。

A、022111

B、021021 √

C、000122

D、012

30.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a

值是。

√A、1 B、2 C、3 D、4

31.若k为整型,以下while循环执行_ __次。

k=2;

while(k=0)

printf("%d",k),k--;

printf("\n");

A、无限次√

B、0次

C、1次

D、2次

32.数字字符0的ASCII值为48,以下程序的输出结果是。

#include <>

main()

{ char a='1',b='2';

printf("%c,",b++);

printf("%d\n",b-a);

}

A、3,2

B、50,2 √

C、2,2

D、2,50

33.有以下程序

#include <>

main()

{ int a,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);

}

程序运行后的输出结果是。

A、6,1 √

B、2,1

C、6,0

D、2,0

34.若有 int d=2,a=5,s=3; s*=d+a; 变量s的值是。

A、3

B、11 √

C、21

D、17

35.设有整型变量a, b, c,其中a,b的值分别为15与19,计算表达式“c=(a%2==0)?a:b”

后,c的值是( )。

A、0

B、1

C、15 √

D、19

36.整型常量的书写格式决定了整数的类型和值,03322是。

A、用16进制表示的int类型常量√

B、用8进制表示的int类型常量

C、用10进制表示的int类型常量

D、用16进制表示的long int 类型常量

37.若有 int i , j , n = 8 ; 连续执行下述两条语句,则 i , j 和n的值应是。

i = n++ ; j =++n ;

A、i = 8 j = 9 n = 10

B、i = 8 j = 8 n= 9

√C、i = 8 j = 10 n = 10 D、i = 9 j = 8 n = 9

38.要为字符型变量a赋初值,下列语句中哪一个是正确的。

A、char a="k";

B、char a=*;

C、char a=%; √

D、char a='3';

39.若有定义:int k=2,x;则能使变量x的值为3的表达式是

A、x=5/k+ √

B、x=5/k+1;

C、x=x+k

D、x=2*k--

40..以下程序段的输出结果是。

char s=’b’;

s=s-1;

printf(“%c\n”,s);

A、b √

B、a

C、s的地址

D、c

41.以下程序段的输出结果是。

int j=3,s;

s=j++;

printf(“%d %d\n”,s,j);

√A、3 4 B、4 4 C、4 3 D、3 3

42.判断char 形变量c为数字字符的正确表达式为是。

√A、’0’<=c&&c<=’9’ B、’0’<=c<=’9’

C、c>=0||C<=’9’

D、c>=0&&c<=9

43.运算符的优先级最高。

A、*

B、=

C、+ √

D、++

44.计算变量x(x大于1)整数部分位数的表达式,可以写作。

A、(int)log10(x)

B、log10(x)

C、log10(x)+1 √

D、(int)log10(x)+1

45.判断变量x、y中有且只有1个值为0的表达式为。

√A、!(x*y)&&x+y B、(x*y)&&x+y

C、x*y==0

D、x==0&&y!=0

46.执行语句“for(s=0,k=1; s<20||k<10; k=k+2) s+=k;”后,s、k的值为。

A、25、9 √

B、25、11

C、36、11

D、36、9

47.下列程序段执行后s值为。

int i=1,s=0;

while(i++) if(!(i%3)) break; else s+=i;

√A、2 B、3 C、6 D、以上均不是

48.执行下列程序段后的输出结果是。

char x=’9’;

while(x>’7’) printf(“%c”,x--);

A、99 √

B、98

C、987

D、87

49.该程序段的输出结果是多少?

m=37;n=13;

while(m!=n)

{ while(m>n)

m=m-n;

while(n>m)

n-=m;

}

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

A、m=13

B、m=11 √

C、m=1

D、m=2

50.以下程序段的输出结果为?

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

{ for(j=1;j<10;j++)

if(j==5) break;

if(i<2) continue;

if(i>2) break;

printf("%d,",j);

}

printf("%d\n",i);

A、10,3

B、5,2 √

C、5,3

D、10,2

51.以下程序段的输出结果是______。

int x=3;

do

{ printf("%3d",x-=2);

}while(!(--x));

A、1

B、30 √

C、1 –2

D、死循环

52.若k、s的当前值分别为4、0,执行语句“while(--k) s+=k;”后k、s值分别为。

A、10、0

B、0、10

C、6、0 √

D、0、6

53.执行语句“for(x=0,s=0; x!=60; x=x+ s=s+x;”后,变量x的值为。

A、不可能大于60

B、不可能大于

C、一定小于60 √

D、可以远大于60

54.为表示“a和b都不等于0”,应使用的C语言表达式是。

A、(a!=0) || (b!=0)

B、a || b

C、!(a=0)&&(b!=0) √

D、a && b

55.已知字符‘c’ 的ASCII码为 99 ,语句printf ("%d,%c", ’c’, ’c’+1 ) ;的

输出为。

A、99,c

B、99,100 √

C、99,d

D、语句不合法

56.下列程序段的输出结果是。

int k, s;

for(k=0, s=0; k<10; k++,s--)

if (s>k) break;

else s += k;

printf("(%d, %d)", k, s);

A、(4, 5)

B、(4, 6) √

C、(6, 9)

D、不是A、B、C

57.下列程序的输出结果是 (30) 。

#include <>

void main( )

{ int y;

double d=, x;

x=(y=d0.2f2.0 C1 C56e22 √C、e22 D、345e12

58.表达式a!=0||b!=0等效于。

√A、a||b B、!(a||b) C、a=0||b=0 D、a!=0&&b!=0

59.下列语句与语句while (i<100) { s+=i;i++; } 功能相同的是。

√A、for ( ; i<100;i++) s+=i; B、for ( ; i<100;i++, s=s+i);

C、for ( ; i<100;i++){ s+=i; i++;}

D、for ( ; i<=100;i++) s=s+i;

60.下列宏定义命令中,哪一个格式是正确的。

A、#define PI=;

B、define PI

C、#define PI=”3.14159”√

D、#define PI

61.已知x=10,ch=‘a’,y=-5;则表达式x>=y&&ch<’B’的值是。

√A、0 B、1 C、“假” D、“真”

62.语句printf(“%d %.1f”,5/2,2)的输出结果是。

A、 B、 2 √C、2 D、2 2

63.若x、y都是整型变量,且x=2,y=3;经下列计算后,x的值等于6的是。

√A、x*=6-y B、x=x+y>2?5:6 C、x=y*2 D、x=(5*y)/2

64.程序中调用了库函数sqrt,必须包含头文件。

A、 B、 C、√D、

简答题

1.x=(-26)10,写出它的8位补码。

2.若int k=5, 循环语句while (k!=0) k=k-1; 则循环体执行几次?5次

3.假设整型变量a的值是一个三位整数,写出将a的百位数字赋给变量x的表达式。

x=a/100

4.写出判断整型变量a大于0且a是偶数的逻辑表达式。a>0&&a%2==0

5.int i=-5; while(i<0) i++; 写出循环的执行次数。5次

6.a是一个整型变量,写出把a中十位数字赋值给变量x的表达式。 x=a%100/10

7.程序段 int s=0,i=1;while(i<=5) {s*=i;i++;}是否总能计算1~5的乘积?如果能计

算,写出计算结果,如果不能计算写出原因。不能。变量s的初值为0,结果为0。

8.将数学代数式(y6+6xy-8)/(7a)写成C程序的算术表达式。(pow(y,6)+6*x*y-8)/(7*a)

9.写出|z|>5的关系表达式。fabs(z)>5

10.写出“求整型x的个位数字”的表达式。x%10

11.若实型变量x、y已有值,写出“求x、y两个变量中较大值”的表达式。x>y?x:y

12.将数学代数式 x2+2sin(x)+3 写成C程序的算术表达式。x*x+2*sin(x)+3

13.设有如下定义:int a=1,b=2,c=3,d=4,m=5,n=6;则执行表达式:(m=a>b)‖(n=c>d)

后,n的值是?6

14.若 int i=3; 写出下面程序段的输出结果。AB

switch(i+1)

{ case 4: printf("A");

case 2: printf("B"); break;

default: printf("%2d\n",i);

}

15.已知方程ax2+bx+c=0,a、b、c是方程的系数且存在两个实根,写出计算任意一个实根

的算术表达式。 (-b+sqrt(b*b-4*a*c))/(2*a)

16.写出判断整型变量a的值是偶数的逻辑表达式。 a%2==0

17.整型变量m的值为27,语句printf(“%x “,m);的输出结果是。 1b

18.若int i=10,s=0;执行语句while(i!=0) { s+=i;i--; }后s、i值分别为。 55,

19.表达式 1<0<5 的值是______。1

20.下列程序段的输出是______。7,

int k;

float s;

for (k=0, s=0; k < 7; k ++)

s += k/2;

printf("%d, %f\n", k, s);

21.写出执行下列语句后的输出结果。3

int x=5;

if(x=3) printf("%d\n",x);

else printf("%d\n",x+2);

22.写出“仅当char类型变量ch是大写英文字母时改变ch为对应小写字母”的C表达式。

ch=ch>=’A’&&ch<=’Z’?ch-‘A’+’a’:ch

23.在C语言中,逻辑值”真“用什么表示?非0的数

24.用for语句循环打印0 1 2 0 1 2 0 1 2;

for(i=1;i<=9;i++) printf(“%2d”,_____); (i-1)%3

25.语句:printf(“%d”,(a=2)&&(b=-2));的输出结果是? 1

阅读程序题

1.#include <>

void main( )

{ char ch;

while((ch = getchar()) != '\n'){

if ( ch>='A' && ch<='Z' ) ch = 'a' + 'Z' - ch;

putchar(ch);

}

}

程序运行时,输入ABC,输出(1) 。

程序运行时,输入xyz,输出(2) 。

程序运行时,输入a+Z,输出(3) 。

(1) A、abc √B、zyx C、ZYX D、ABC

(2) A、XYZ B、ABC C、cba √D、xyz

(3) √A、a+a B、z+z C、Z+a D、a+A 2.#include <>

void main( )

{ int choice, i;

float price;

for( i = 1; i <= 5; i++) {

scanf("%d", &choice);

if(choice == -1) break;

switch (choice) {

case 1: price=; break;

case 2: price=; break;

case 3: price=; break;

case 4: price=; break;

default: price=; break;

}

printf("%0.1f\n", price);

}

printf("Thanks \n");

}

程序运行时,输入3 7 -1,第1行输出 (1) ,第2行输出 (2) ,第3行输出(3) 。

(1) A、B、3.0 √C、 D、Thanks

(2)√ A、 B、3.0 C、 D、Thanks

(3) A、 B、0.0 C、√D、Thanks

3.该程序的运行结果是。

void main()

{ int a,b,c;

a=2;b=7;c=5;

switch(a>0)

{ case 1:

switch(b<10)

{ case 1:printf("^");break;

case 0:printf("!");break;

}

case 0:

switch(c==5)

{ case 0: printf("*");break;

case 1: printf("#");break;

default:printf("%%");break;

}

default:

printf("&");

}

printf("\n");

}

√A、^#& B、^ C、& D、^!*#%&说明:阅读下列程序,写出运行时的输出结果。

4.写出程序的运行结果

#include <>

void main()

{ int x=3,y=3,z=1;

if(x==y+z) printf(“* * * *”);

else printf(“# # # #”);

}

解答:# # # #

5.下述程序的输出结果为。

#include<>

main( )

{ int k=1,sum=0;

do{

k=k*(k+1)/2;

sum+=k;

}while(sum%7);

printf(“%d”,sum);

}

解答:7

6.下列程序的输出为。

#include<>

main( )

{ int i=1;

while(i<=-1)

printf(“###”);

printf(“%d”,i);

}

解答:1

7.输入4<回车>后,下列程序的输出结果是_______。# include ""

int main( )

{ int j,k,n;

float f,s;

scanf("%d", &n);

s=0; f=1;

for(k=1;k<=n;k++){

for(j=1;j

f=f*k;

s=s+f;

printf("%.0f#",s);

}

}

解答:1#3#21#1173#

8.以下程序运行后,x和y的值分别代表什么?

#include <>

void main()

{ int a,b,c,x,y;

printf(“input three numbers:\n”);

scanf(“%d%d%d”,&a,&b,&c);

if(a>b) {

x=a; y=b;

}

else {

x=b; y=a;

}

if(x

if(y>c) y=c;

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

}

解答:三个数的最大、最小值

9.下列程序的输出结果是_______。

#include <>

void main( )

{ int x = 10023;

do{

printf("%d#", x%10);

x = x / 10;

}while (x != 0);

}

解答:3#2#0#0#1#

10. 下列程序的输出结果是_______。

#include <>

void main( )

{ int i, x = 1, y = 1;

for (i = 1; i <= 5; i++){

x = x + y;

y++;

printf("%d#", x);

}

}

解答:2#4#7#11#16#

11. 下列程序的输出结果是_______。

#include<>

void main()

{ char x,y='A';

1. scanf("%c",&x); .3f1 C.等。下面这个程序就是求斐波哪契数列的前20个数。

#include <>

void main()

{ int f,f1,f2,i;

f1=0;f2=______; 解答:1

printf("%d\n%d\n",f1,f2);

for(i=3;i<=20;______) 解答:i++

{

f=______; 解答:f1+f2

printf("%d\n",f);

f1=f2;

f2=______; 解答:f

}

}

2. 【程序说明】根据下式计算s 的值,要求精确到最后一项的绝对值小于10–6。

s =-+-+?1111357

#include <>

#include <>

void main( )

{ int flag = 1, t = 1;

(1) ;

while( 2) ){

item = flag * / t;

s = s + item;

(3) ;

t = t + 2;

}

printf ( "s = %f\n", s);

}

(1) √A、double item = 2, s = 0; B、double item = 0, s = 0;

C、double item = 1, s = 1;

D、double item = 3, s = 1;

(2) A、item < 1E-6 B、item >= 1E-6

C、fabs (item) < 1E-6 √

D、fabs (item) >= 1E-6

(3) A、flag = -1 B、s = -s

√C、flag = -flag; D、t = -t

3.[程序功能] 输入 100个数,求它们的和并输出。

#include <>

void main()

{ float x,sum;

int i=0;

; 解答:sum=0

printf("please input data:\n");

while(i<100)

{ scanf("%f",&x);

sum+=x;

i++;

}

; 解答:printf(“sum=%f\n”,sum)

}

4.以下程序的功能是: 输出{ 2m,3n | m>=1,n>=1}中由小到大排列的前32项数,并

且每行8个数。(如 2,3,4,8,9,16,27,32 )

#include""

void main()

{ long m2,n3;

int k;

m2=2;n3=3;k=0;

while(k<32)

{ if ( ) 解答:m2

{ printf(" %ld",m2);

m2*=2;

}

else

{ printf(" %ld",n3);

; 解答:n3*=3

}

k++;

if ( ) printf("\n"); 解答:k%8==0

}

}

5.【程序说明】

输出1~1000之间所有满足各位数字的立方和等于它本身的数。

【程序】

#include <>

void main( )

{ int digit, k, m, s;

for (k=1; k<=1000; k++){

(1)

while(m!=0){

digit=m%10; s=s+digit*digit*digit;

(2) ;

}

if( (3) ) printf("%d ", s);

}

}

(1) A、s=0; √B、m=k; s=0; C、m=k; D、k=m; s=0;

(2) √A、m=m/10 B、m=m%10 C、m=m D、m=k/10

(3) A、m!=s B、m==s C、k!=s √D、k==s

6.[程序功能]输入20个整数,输出其中最小数。

#include <>

#define N 20

void main()

{ int i,x,min;

scanf(“%d”,&x);

________; 解答:min=x

for(i=2;i<=N;i++)

{ scanf(“%d”,&x);

________; 解答:if(min>x) min=x

}

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

}

7.输入1 个正整数 n, 计算并输出 s 的前n项的和。

s = 1/2 -2/3 + 3/4 - 4/5 + ……(-1)n-1 n/(n+1)

#include <>

void main( )

{ int k, flag=1, n;

float s=0;

scanf("%d", &n);

for (k=1 ; k<=n; k++){

s=s+ (1) ;

( 2) ;

}

printf("sum=%f\n", s);

}

(1) A、*k/(k+1)* flag √B、flag*n/(n+1) C、- k/(k+1) D、*k/(k+1)

(2) A、flag= -1 B、s= -s C、flag= -flag √D、k= -k 8.

[程序说明]输入x 、n 后输出下列算式的值。

[程序]

#include <>

void main()

{ float s,t,x; int i,n;

scanf("%f%d",&x,&n);

(1)

for(i=1;i<=n;i++) { (2) s+=t; }

(3) ;

}

(1)A 、 s=0; t=0; √B 、 s=0; t=-1;

C 、 s=x; t=1;

D 、 s=x; t=-1;

(2)√A 、 t=-t*x/i; B 、 t=pow(-x,i)/i;

C 、 t=-pow(x,i)/i;

D 、 t=t*x/i;

(3)√A 、 printf("%f\n",s); B 、 printf("%f\\n",s);

C 、 printf("%s\n",s);

D 、 printf("%c\n",s);

编程序

1. 编写程序,判断输入字符的种类,即区分空格、数字字符、英文字母和其他字符。 #include <>

void main()

{ char c;

printf("Please input a character:\n");

c=getchar();

if(c==' ')

printf("This is a blank");

else if(c>='0'&&c<='9')

printf("This is a digit");

else if(c>='A'&&c<='Z'||c>='a'&&c<='z')

printf("This is a letter");

else printf("This is an other character");

}

2. 编写程序,输入一批正整数,遇0或负数则输入结束,要求统计并输出其中奇数和偶数

个数。

#include <>

void main()

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

printf(“Enter data:”);

scanf(“%d ”,&x);

while(x>0)

{ if(x%2!=0) a++;

else b++;

!)1(...!4!3!21432n x

x x x x n n --++-+-

scanf(“%d”,&x);

}

printf(“奇数:%d\n偶数:%d\n”,a,b);

}

3.输入入一个职工的月薪salary,计算并输出应交的个人所得税tax = rate *

(salary-850)。其中rate的计算方式如下:

当 salary ≤850 时,rate = 0;

当 850 < salary ≤ 1350 时,rate = 5%;

当 1350 < salary≤ 2850 时,rate = 10%;

当 2850 < salary ≤ 5850 时,rate = 15%;

当 5850 < salary 时,rate = 20%。

#include <>

void main()

{ double salary,rate,tax;

printf(“Please input salary:\n”);

scanf(“%lf”, &salary);

if(salary<=850) rate=0;

else if(salary>850&& salary<=1350) rate=5;

else if(salary>1350&& salary<=2850) rate=10;

else if(salary>2850&& salary<=5850) rate=15;

else rate=20;

tax=rate*(salary-850)/100;

printf(“tax=%.2f\n”,tax);

}

4.编程求数列1+(1+2)+(1+2+3)+…+(1+2+...+10)的和并输出。

#include <>

main()

{ int a,b,sum=0;

for(a=1;a<=10;a++)

for(b=1;b<=a;b++)

sum+=b;

printf("1+(1+2)+(1+2+3)+…+(1+2+...+10)=%d\n",sum);

}

#include <>

main()

{ int a,b=0,sum=0;

for(a=1;a<=10;a++)

{ b+=a;

sum+=b;

}

printf("1+(1+2)+(1+2+3)+…+(1+2+...+10)=%d\n",sum);

}

5.输出一张平方根表(如下表所示),x的取值范围是[5, 1000],请调用库函数sqrt()

计算平方根。

x sqrt(x)

5

6

……

999

1000

#include<>

#include <>

void main()

{ float x,y;

printf(" x sqrt(x)\n");

for(x=5;x<=1000;x++)

{ y=sqrt(x);

printf("%5.0f%10.2f\n",x,y);

}

}

6.输入一个实数a,判断是“正数”、“负数”或“零”,并输出“正数”、“负数”或“零”

的判断结果。

#include<>

void main()

{ float a;

scanf("%f",&a);

if(a>0) printf("正数\n");

else if (a==0) printf("零\n");

else printf("负数\n");

}

7.输入被除数和除数x,y,如果除数y不等于0,计算x除以y的商,如果除数y等于

0,输出“数据错误”。

#include<>

void main()

{ double x,y,s;

printf(“Input x y:\n”);

scanf("%lf%lf",&x,&y);

if(y!=0){

s=x/y;

printf("%f\n",s);

}

else printf("数据错误\n");

}

8.输入一个小时、分、秒的时间,将输入的时间加1秒后,输出新的时间。要求输入输出

时间格式为小时:分:秒(例如输入5:45:9,则输出5:45:10,若输入23:59:59,则输出0:0:0)。

#include <>

void main()

{ int h,m,s;

scanf(“%d:%d:%d”,&h,&m,&s);

s++;

9. if(s==60) .+10!+11!+12!的值,并将计算结果以格式"%d"输出。

#include <>

void main( )

{ int s=1,k=1,i;

for(i=2;i<=12;i++)

{ k*=i;

s+=k;

}

printf("%d\n",s);

}

#include <>

void main( )

{ int s=0,k,i,j;

for(i=1;i<=12;i++)

{ k=1;

for(j=1;j<=i;j++)

k*=j;

s+=k;

}

printf("%d\n",s);

}

10.计算数列1,-1/3!,1/5!,-1/7!,1/9!,...的和至某项的绝对值小于1e-5时为止(该项不

累加),将求和的结果保留4位小数输出。

#include <>

#include <>

void main( )

{ float s=1,t=1,i=3;

do {

t= -t* (i-1)*i;

s=s+1/t;

i+=2;

}while(fabs(1/t) >= 1e-5);

printf("%.4f\n",s);

}

11.编写一个程序求出300~500之间满足如下条件的数:它们三个数字之积为42,三个数

字之和为12。

#include <>

#include <>

void main( )

{ int x,a,b,c;

for(x=300;x<=500;x++){

a=x/100;

b=x%100/10;

c=x%10;

if(a*b*c==42&&a+b+c==12)

printf("%d\n",x);

}

}

12.输入一个实数x,一个整数n,输出x n的值(不使用pow函数)。

#include<>

void main()

{ double x,t=1;

int i,n;

printf(“Input x n:\n”);

scanf("%lf%d",&x,&n);

for(i=1;i<=n;i++)

t*=x;

printf("%f\n",t);

}

13.编制程序,输入n个整数(n从键盘输入,n>0),输出它们中偶数的和。

#include<>

void main()

{ int i,n,x,sum=0;

printf(“Input n:\n”);

scanf("%d",&n);

for(i=1;i<=n;i++){

scanf(“%d”,&x);

if(x%2==0)

sum+=x;

}

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

}

14.编制程序,输入n个整数(n从键盘输入,n>0),输出它们中偶数的平均值。

#include<>

void main()

{ int i,n,x,sum=0,count=0;

double aver;

printf(“Input n:\n”);

scanf("%d",&n);

for(i=1;i<=n;i++){

scanf(“%d”,&x);

if(x%2==0){

sum+=x;

count++;

}

}

15. aver=(double)sum/count; 0f 输出

#include <>

#include <>

void main() // 运行结果:283, 992137

{ float y=; int n=1;

for(n=1;;n++)

if((pow(y,n)<1e6)&&(1e6

printf("%d,%.0f\n",n,pow,n));

}

16. 编程,输入n 后:输入n 个数,根据下式计算并输出y 值。

#include <>

#include <>

void main()

{ int i,n; double x,y;

scanf(“%d”,&n);

for(i=1;i<=n;i++)

{ scanf(“%lf”,&x);

if(x<-2) y=x*x-sin(x);

else if(x<2) y=pow(2,x)+x;

else y=sqrt(x*x+x+1);

printf(“y=%f \n",y);

}

}

17. 在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数。 #include <>

void main( ) // 运行结果:313

{ int i,j;

for(i=1; ; i++)

if(i%3==1&&i%5==3&&i%7==5&&i%9==7) break;

printf("%d\n",i);

}

18. z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y 取值为区间[0,10]的整数,找出使z 取最小

值的x1,y1。

#include<>

#include<>

void main()

{ int x,y,x1,y1;

float z,z1;

x1=y1=0;

z1=10*cos(x1-4)+5*sin(y1-2); // 赋初值

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

?????>++≤≤-+-<-=2

12222sin 22x x x x x

x x x y x

C语言期末考试题(含答案)

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是() A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中() A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是() A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是() A )x1=26.8%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:floata=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(2 1 的计算结果不.相符的是() A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是() A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue 7.在while (!x )语句中的!x 与下面条件表达式等价的是() A)x!=0B)x==1C)x!=1D)x==0

8、有以下程序: #include voidmain(){ inti=1,j=1,k=2; if((j++||k++)&&i++) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2 B)2,2,1 C)2,2,2 D)2,2,3 9、有以下程序: #include voidmain(){ inti,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: voidfun(intn,doublex){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是()A)fun(inty,doublem); B)k=fun(10,12.5); C)fun(x,n);D)voidfun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

江苏大学大一c语言期末复习题汇总

选择题1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.Void C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D. 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=; B.double b=1+; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s)

嵌入式C语言经典笔试题目

嵌入式c语言经典笔试题目 1 .用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 .写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B)((A)<= (B) ? (A) : (B)) 这个测试是为下面的目的而设的: 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来 4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3.预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { } 一些程序员更喜欢如下方案: for(;;) { } 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,

c语言笔试题(答案)(精心整理)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 ) 2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void) { char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2)6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S 问:AAA_S在字节对齐分别为1,4情况下,占用的空间大小分别是多少?( 9)(12 )

c语言期中考试试题及答案

《C语言程序设计》期中考试试卷 课程编号:03402513试卷类型:A卷考试形式:笔试考试日期: 注意事项:1.请将试卷最后一页的答题纸撕下,将答案填写在其中;2.交卷时请确认答题纸是否按要求写好姓名等信息并与试题一起上交;3.不准携带任何书籍、资料、纸张等。4.草稿纸用试卷的背面。 一、单项选择题(1空1分,共20分) 1、C语言程序的基本结构是(【1】) 。 【1】 A) 函数 B) 语句 C) 字符 D) 程序行 2、一个C程序的执行是(【2】) 。 【2】A) 从本程序的主函数开始,到本程序的主函数结束 B)从本程序的第一个函数开始,到本程序的最后一个函数结束 C) 从本程序的主函数开始,到本程序的最后一个函数结束 D)从本程序的第一个函数开始,到本程序的主函数结束 3、下列四个叙述中,错误的是(【3】) 。 【3】 A) 一个C源程序必须有且只能有一个主函数 B) 一个C源程序可以含一个或多个子函数 C) 在C源程序中注释说明必须位于语句之后 D) C源程序的基本结构是函数 4、下面不属于C语言保留字的是(【4】) 。 【4】 A) short B) ELSE C) extern D) for 5、下列四个叙述中,正确的是(【5】) 。 【5】 A) 库函数也是C语言本身的组成部分 B) C语言中的输入输出操作是由相应语句完成的 C) 库函数是C编译系统提供的功能函数 D) 标题文件(头文件)可以在程序的函数内部调用 6、下列四组数据类型中,C语言允许的一组是(【6】)。 【6】 A) 整型、实型、逻辑型 B) 整型、实型、字符型 C) 整型、双精度型、布尔型 D) 整型、实型、复型 7、在C语言中不同数据类型的的长度是(【7】)。 【7】 A) 固定的 B) 由用户自己定义的 C) 任意的 D) 与机器字长有关

C语言笔试题带答案6doc

2014-06-13 06:30:01 阅读( 135 ) 标签: 一、选择题(1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1

答案:C 评析:栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l 先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。 A)希尔排序B)冒泡排序C)插入排序D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C

评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与ll比较的关键码分别为15,8,10,12四个。 (5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 B)软件体系结构C)软件结构测试D)软件控制过程 答案:B

c语言笔试题目及答案

c语言笔试题目及答案 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面是c语言笔试题目及答案,请参考。 c语言笔试题目及答案 一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)数据的存储结构是指________。 A)存储在外存中的数据 B)数据所占的存储空间量 C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示 答案:D 评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。 (2)下列关于栈的描述中错误的是________。 A)栈是先进后出的线性表

B)栈只能顺序存储 C)栈具有记忆作用 D)对栈的插入与删除操作中,不需要改变栈底指针 答案:B 评析:栈是一种特殊的线性表,又称先进后出表(FILO—First In Last Out)。 (3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ________。 A)冒泡排序为n2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n一1)/2 答案:D 评析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后扫描和n/2遍的从后往前扫描,需要比较次数为n(n-1)/2。快速排序法的最坏情况比较次数也是n(n-1)/2。 (4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为________。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要与线性表中所有的元素进行比较。对长度为n的线性表进行顺序查找,在最坏情况下需要比较

大一C语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了____15_________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; ___i<100____________; i++) if (___i/3_=__=0__i_______) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是_________7 ______ 5. 以下是使用指针,进行字符串复制的程序,请填空。 main() { char a[]= “Tsinghua University”, b[30], *p1,*p2; p1=a; p2=b; for(; *p1!= _______________; p1++, p2++) _______________=_______________; *p2= ______________; printf(“string a is:%s\n”,a); printf(“string b is:%s\n”,b); } 6. 下面程序用冒泡法对数组a进行降序排序,请填空。 main() { int a[5]={4,7,2,5,1}; int i,j,m; for(i=0;i<4;i++) for(j=0;j<_______________;j++) if( _______________< _______________ ) { m=a[ j]; a[ j]=a[ j+1]; a[ j+1]= m; } for(i=0;i<5;i++) printf("%d ",a[i]); } 7. 函数fun的功能是:使一个字符串按逆序存放,请填空。 void fun (char str[]) { char m; int i,j; for(i=0,j=strlen(str);i<_______________;i++,j--)

大学C语言期末考试习题集(带详解答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 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语言期末考试试题

6.以下程序的输出结果为(D)。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case ‘a’:printf("%c,",c);break; case ‘b’:case ‘e’:printf("ok,"); default: printf("end"); } } } A a,ok,end B a,ok,endend C a,ok,end,end D a,ok,ok 9.以下程序的输出结果为(B)。 #define A 3 #define B(a) (A+1)*a main() { int x; x=3*A+B(7); printf("x=%d\n",x); } A x=93 B x=37 C x=60 D x=90 三写出下列程序的运行结果(10分,每小题2分) 1.main( ) { char c1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a; int i=0122,j=0xa4; printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3); printf(“%d,%d\n”,i,j); i=-34; j=20; printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j)); printf(“c=%d\n”,c|x); a=c^x<<2;

printf(“a=%d\n”,a); } 2.main() { int x,y=1,z=10; if(y!=0) x=5; printf(“x=%d\t”,x); x=1; if(z<0) if(y>0) x=3; else x=5; printf(“x=%d\n”,x); if(z=y<0) x=3; else if(y==0) x=5; else x=7; printf(“x=%d\t”,x); printf(“z=%d\n”,z); } 3.main( ) { char s[20]=“I like it.”,t[20]=“Are you?”,c[20]; int i=0; while(s[++i]!=‘\0’) t[i]=s[i]; t[i]=0; printf(“string s:%s\n”,s); printf(“string t:%s\n”,t); } 4.int i=5; main( ) { int i=3; { int i=10; i++; printf(“%d\n”,i);

c语言笔试题答案优选稿

c语言笔试题答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

笔试题 一、填空题(每个空4分,共28分) 1)struct tagABC { char name[10]; char sex; long sno; float score[4]; }*pAbc;(四字节对齐) pAbc=NULL; 那么,执行pAbc+=2;之后pAbc的值为(64 )2)如下代码,最终value的值是(8) int *p1,*p2; int value; p1=(int*)0×400; p2=(int*)0×408; value = p2-p1; 3)如下代码,printf的结果为(2) #include〈stdio.h〉 #include〈string.h〉 void main(void)

{ char acNew[20]= “\\0\0”; printf(“%d\n”,strlen(acNew)); } 4) 有如下程序段,运行该程序的输出结果是(33) main () { int y=3,x=3,z=1; printf(“%d%d\n”,(++x,y++),z+2); } 5)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为(2) 6)struct tagAAA { Unsigned char ucId:1; Unsigned char ucPara0:2; Unsigned char ucState:6; Unsigned char ucTail:4; Unsigned char ucAvail; Unsigned char unTail2:4; Unsigned long ulData; }AAA_S

嵌入式C语言面试题汇总(超经典)

第一部分:基本概念及其它问答题 1、关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 2、“引用”与指针的区别是什么? 答、1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 3、.h头文件中的ifndef/define/endif 的作用? 答:防止该头文件被重复引用。 4、#include 与#include “file.h”的区别? 答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。 5、描述实时系统的基本特性 答:在特定时间内完成特定的任务,实时性与可靠性。 6、全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 答:全局变量储存在静态数据区,局部变量在堆栈中。 7、什么是平衡二叉树? 答:左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。 8、堆栈溢出一般是由什么原因导致的? 答:1.没有回收垃圾资源 2.层次太深的递归调用

江苏大学大一c语言期末复习题汇总

选择题 1.下列字符序列中,不可用作C语言标识符的是()。 A.abc123 B.no.1 C._123_ D._ok 2.请选出可用作C语言用户标识符的一组标识符()。 A.void B.a3_b3 C.For D.2a define _123 -abc DO WORD IF Case sizeof 3.不属于C语言关键字的是()。 A.int B.break C.while D.character 4.以下不能定义为用户标示符的是()。 A.scanf B.V oid C._3com_ D.int 5.C语言程序的基本单位是()。 A.程序行B.语句C.函数D.字符 6.以下说法中正确的是()。 A.C语言程序总是从第一个定义的函数开始执行 B.在C语言程序中,要调用的函数必须在main( )函数中定义 C.C语言程序总是从main( )函数开始执行 D.C语言程序中的main( )函数必须放在程序的开始部分 7.以下选项中,合法的用户标识符是()。 A.long B._2abc C.3dmax D.A.dat 8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示 的字符常量’\101’是()。 A.字符A B.字符a C.字符c D.非法的常量 9.以下选项中,正确的字符常量是()。 A.”F”B.’\\’’C.’W’D.’’ 10.下列变量定义中合法的是 A.short _a=1-.le-1; B.double b=1+5e2.5; C.long do=0xfdaL; D.float 2_and=1-e-3; 11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if 12.下列运算符中优先级最高的是()。 A.< B.&& C.+ D.!= 13.判断char型变量s是否为小写字母的正确表达式是()。 A.’a’ <= s<=’z’B.(s>=’a’) & (s<=’z’) C.(s>=’a’) && (s<=’z’) D.(’a’<=s) and (’z’>=s) 14.已知x=45, y=’a’, z=0; 则表达式(x>=z && y<’z’ || !y)的值是()。 A.0 B.语法错 C.1 D.“假”

大一c语言期末考试题

大一c语言期末考试题 C语言期末考试试题附答案 一选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是()。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是()。 main( ) { int a=7,b=5; printf("%d\n",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是()。 int k=10; while(k=0) k=k-1; A 循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次 6.以下程序的输出结果为()。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",'*'); printf("\t"); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是()。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有()个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为()。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c;

c语言经典面试题

C语言面试题大汇总之华为面试题 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、请写出下列代码的输出内容 #include int main(void) { int a,b,c,d; a=10;

c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答:10,12,120 5、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。 2) 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。3) static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对

大一上学期C语言期末复习总结和模拟试题带答案

易错点 C语言中易犯的错误 对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,一些C编程时常犯的错误,写给各位学员以供参考. ******************************** ******************************** ************************ 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息. C认为大写字母和小写字母是两个不同的字符.习惯上,符号常量 名用大写,变量名用小写表示,以增加可读性. ******************************** ******************************** ************************ 2.忽略了变量的类型,进行了不合法的运算. main() { float a,b; printf("%d",a%b); } %是求余运算,得到a/b的整余数.整型变量a和b可以进行求余运算,而实型变量则不允许进行"求余"运算. ******************************** ******************************** ************************ 3.将字符常量与字符串常量混淆. char c; c="a"; 在这里就混淆了字符常量与字符串常量,字符常量是由一对单 引号括起来的单个字符,字符串常量是一对双引号括起来的字符序 列.C规定以"\"作字符串结束标志,它是由系统自动加上的,所 以字符串"a"实际上包含两个字符:'a'和'\',而把它赋给一 个字符变量是不行的. ******************************** ******************************** ************************ 4.忽略了"="与"=="的区别. 在许多高级语言中,用"="符号作为关系运算符"等于". 如在BASIC程序中可以写 if (a=3) then … 但C语言中,"="是赋值运算符,"=="是关系运算符.如: if (a==3) a=b; 前者是进行比较,a是否和3相等,后

C语言笔试题及参考答案-东软集团

C语言笔试题及参考答案-东软集团 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 4、语句for( ;1 ;)有什么问题?它是什么意思? 答:和while(1)相同。 5、do……while和while……do有什么区别? 答:前一个循环一遍再判断,后一个判断以后再循环 6、请写出下列代码的输出内容 #include main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf( "b,c,d:%d,%d,%d ",b,c,d); return 0; } 答:10,12,120 7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身

上海海事大学(C语言期末)上机题库

试卷编号:9688 所属语言:C语言 试卷方案:期中考试 试卷总分:100分 共有题型:5种 一、填空共15题(共计15分) 第1题(1.0分)题号:528 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句: a*=16+(b++)-(++c); 后,a的值是【1】. 答案: =======(答案1)======= 28 第2题(1.0分)题号:78 已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是【1】. 答案: =======(答案1)======= 15 第3题(1.0分)题号:510 若a是int型变量,则计算表达式 a=25/3%3 后a的值为【1】. 答案: =======(答案1)======= 2 第4题(1.0分)题号:437 以下程序的输出结果为【1】, #include "stdio.h" main(){int a=010,j=10;printf("%d,%d\n",++a,j--);}

答案: =======(答案1)======= 9,10 第5题(1.0分)题号:431 执行下面两个语句,输出的结果是【1】,char c1=97,c2=98;printf("%d %c",c1,c2); 答案: =======(答案1)======= 97 b *第6题(1.0分)题号:293 getchar()函数只能接收一个【1】. 答案: =======(答案1)======= 字符 第7题(1.0分)题号:440 设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值为【1】. 答案: =======(答案1)======= 1 第8题(1.0分)题号:95 已知a=13,b=6, a&&b的十进制数值为【1】. 答案: =======(答案1)======= 1 第9题(1.0分)题号:306 当a=1,b=2,c=3时,执行以下程序段后b=【1】.

C语言面试题(经典全)

1.static有什么用途?(请至少说明两种) 1)限制变量的作用域 2)设置变量的存储域(堆,主动分配内存也是堆) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在栈 6.堆栈溢出一般是由什么原因导致的? 堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。没有回收垃圾资源导致的是内存泄露最后内存耗尽。 20.不能做switch()的参数类型是: switch的参数不能为实型。(只能是int char) 9.写出float x 与“零值”比较的if语句。 if(x<0.000001&&x>-0.000001)

3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么? 函数名: atol 功能: 把字符串转换成长整型数 函数的原型: long atol(const char *nptr); 程序例: #include #include int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); } 1.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用宏定义,c++用inline

大学生C语言期末考试必做题库

C语言

第一题 在屏幕上显示一个短句“Programming in C is fun!” #include int main() { printf("Programming in C is fun!\n"); return 0; } 第二题 在屏幕上显示如下网格。 +---+---+ | | | | | | +---+---+ #include int main( ) { printf("+---+---+\n| | |\n| | |\n+---+---+\n"); return 0; } 第三题 在屏幕上显示一条语句“This is a C program.” #include int main() { printf("This is a C program.\n"); return 0; } 第四题 输出如下图形: ********** very good! ********** #include int main( ) { printf("**********\nvery good!\n**********\n"); return 0; }

第一题求平方根(基础) 程序填空,不要改变与输入输出有关的语句。 输入1个实数x,计算并输出其平方根(保留1位小数)。 例:输入17输出The square root of 17.0 is 4.1 #include #include int main( ) { double x, root; scanf("%lf", &x); root=sqrt(x); printf("The square root of %0.1f is %0.1f\n", x, root); return 0; } 第二题计算一个三位数的个十百位之和 编写程序。 输入一个三位数(大于0),计算这个三位数的个位、十位、百位数字之和. 例如:输入:152输出:sum=8 #include #include int main() { int n,a,b,c,sum; scanf("%d",&n); a=n/100; b=n%100/10; c=n%10; sum=a+b+c; printf("sum=%d\n",sum); return 0; } 第三题(公共)求圆的周长、面积及圆球体积 程序填空,不要改变与输入输出有关的语句。 求以r为半径的圆周长c和圆面积s,再求以r为半径的圆球体积v。(已知r=3.67在程序中直接赋值,pi的值为3.1415926) 按照下列形式输出: printf("c=%f\ns=%f\nv=%f\n",c,s,v); #include int main( ) { double r,c,s,v,pi=3.1415926; r=3.67; c=2*pi*r;

相关文档
相关文档 最新文档