文档库 最新最全的文档下载
当前位置:文档库 › C语言习题

C语言习题

C语言习题
C语言习题

一、单选(共100分) 单项选项题

1. 以下叙述中错误的是()。

A、可以通过赋初值的方式确定数组元素的个数

B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

答案:C

2. ()可以不进行函数类型说明。

A、以上都是

B、被调函数的定义在主调函数定义之前时

C、在所有函数定义前,已在函数外预先说明了被调函数类型

D、被调函数的返回值是整型或字符型时

3. .以下正确的说法是()。

A、用户若需要使用标准库函数,调用前不必使用预处理命令将该函数所在的头文件包含编译,系统会自动调用

B、用户可以重新定义标准库函数,如若此,该函数将失去原有定义

C、系统不允许用户重新定义标准库函数

D、用户若需要调用标准库函数,调用前必须重新定义

4. 有以下程序

#include

void main()

{

int n,*p=NULL;

*p=&n;

printf(“Input n:”); scanf(“%d”,&p); printf(“output n:”);

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

}

该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是

A、printf(“%d\n”,p);

B、*p=&n;

C、scanf(“%d”,&p)

D、int n,*p=NULL;

5. 以下关于编译预处理的叙述中不正确的是()

A、预处理命令是在正式编译之前先行被处理的

B、预处理命令行必须位于源程序的开始部分

C、一条有效的预处理命令行必须单独占据一行

D、C源程序中凡是以“#”号开始的控制行都是预处理命令行

6. 设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()。

A、auto或register

B、register

C、static

D、auto

答案:C

7. 在C语言中,switch语句后一对圆括号中表达式的类型()。

A、只能是整型或实型

B、只能为int型

C、可以是整型或字符型

B、一个自定义函数中可以根据不同情况设置多条return语句

C、定义成void类型的函数中可以有带返回值的return语句

D、一个自定义函数中必须有一条return语句

9. 若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元:

int *p;

p=______malloc(sizeof(int));

空格应填入()。

A、(int *)

B、int *

C、(*int)

D、int

10. 下列语句组中,正确的是

A、char s[7];s={"Olympic"};

B、char s[7];s="Olympic";

C、char *s;s={"Olympic"};

D、char *s;s="Olympic";

答案:D

11. 下面说法正确的是:

A、在C程序中,注释说明只能位于一条语句的后面

B、一个C源程序必须包含一个main函数

C、C程序的基本组成单位是函数

D、一个C源程序可由一个或多个函数组成

12. 实参和形参之间的数据是()传递。

A、用户指定

B、值

C、互传

D、地址

13. 以下叙述中错误的是

A、用typedef可以为各种类型起别名,但不能为变量起别名

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、可以通过typedef增加新的类型

14. 对下述程序段正确的描述是()。

#include

main()

{ int x=0,y=0,z=0;

if(x=y+z)

printf("***");

else

printf("###");

}

A、输出###

B、输出***

C、可以编译,但不能通过连接,因而不能运行

{ int i;

f or(i=0;i

{_____________

printf(“%d”,w[i]);

}

printf(“\n”);

}

下划线处应填入的语句是

A、if(i%8==0)continue;

B、if(i/8==0)continue;

C、if(i%8==0)printf(“\n”);

D、if(i/8==0)printf(“\n”);

答案:C

16. 在C语言中,函数返回值的类型最终取决于()

A、函数定义时形参的类型

B、return语句中表达式值的类型

C、调用函数时主调函数所传递的实参类型

D、函数定义时在函数首部所说明函数类型

17. 设有语句:int a=1,b=2,*p1=&a,*p2=&b;以下可使指针p1指向变量b的语句是()。

A、*p1=p2

B、*p1=*p2

C、p1=p2

D、p1=*p2

18. 若各选项中所用变量已正确定义,函数f un中通过return语句返回一个函数值,以下选项中错误的程序是()

A、main()

{

f loat f un(int i,int j);

……x=f un(i,j );……

}

f loat f un(int a,int b){……}

B、f loat f un(int a,int b){……}

main()

{……x=f un(i,j);……}

C、f loat f un(int,int);

main()

{……x=f un(2,10);……}

f loat f un(int a,int b){…..}

D、main()

{……x=f un(2,10); ……}

f loat f un(int a,int b){……}

19. 以下函数调用语句中含有()个实参。

f unc((exp1,exp2),(exp3,exp4,exp5));

A、5

B、2

C、4

D、1

20. void main( )

}

执行后输出结果是()

A、6

B、0

C、5

D、随机值

答案:B

21. 以下程序的输出结果是:

#include

main()

{

int num=0;

while(num<=2)

{

num++;

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

}

}

A、1

B、1 2 3

C、12

D、1 2 3 4

答案:B

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

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

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

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

D、f or(i=1,p=1;i<=5;i++) p*=i;

23. 若变量已正确定义,有以下程序段:

#include

main()

{

int a=3,b=5,c=7;

if(a>b) a=b; c=a;

if(c!=a) c=b;

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

}

其输出结果是:

A、3,5,7

B、3,5,3

C、3,5,5

D、程序段有语法错误

答案:B

24. 对下述程序,()是正确的判断。

#include

main()

{

int x,y;

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

printf("%d,%d",x,y);

}

A、若输入数据4和3,则输出4和4

B、若输入数据3和4,则输出4和5

C、若输入数据4和3,则输出3和4

D、有语法错误,不能通过编译

答案:D

25. 设x和y均为int型变量,则执行下面的循环后,y的值为()。

f or(y=1,x=1;y<=50;y++)

{

if(x>=10) break;

if(x%2==1)

{

x+=5;

continue;

}

x-=3;

}

A、8

B、4

C、6

D、2

答案:

26. 表达式18/4*sqrt(4.0)/8值的数据类型为()。

A、不确定

B、f loat

C、double

D、int

答案:C

27. 有以下程序

main()

{ int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); }

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()

A、123 456 789

B、m=123 n=456 p=789

C、m=123,n=456,p=789

D、m=123n=456p=789

答案:D

28. 在下列选项中,没有构成死循环的程序段是()。

A、int s=36;

while(s);

B、f or( ; ; )

C、int k=1000;

do{++k;}

while(k>=1000);

D、int i=100;

while(1)

{ i=i%100+1;

if(i>100)break;

{

int i,t;

f or(i=1;i

{

t=a[i];

a[i]=a[n-1-i];

a[n-1-i]=t;

}

}

main()

{

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

f un(k,5);

f or(i=2;i<8;i++)printf("%d",k[i]);

printf("\n")

}

程序运行的结果是( )。

A、321678

B、876543

C、1098765

D、325678

答案:D

30. 请选出以下语句的输出结果是()。printf("%d\n",strlen("\t\"\065\xff\n"));

A、输出项不合法,无正常输出

B、14

C、8

D、5

答案:D

31. 下面程序的输出结果是()。

#include

main()

{

int i,k,a[10],p[3];

k=5;

f or(i=0;i<10;i++) a[i]=i;

f or(i=0;i<3;i++) p[i]=a[i*(i+1)];

f or(i=0;i<3;i++) k+=p[i]*2;

printf("%d\n",k)

}

A、23

B、21

C、22

D、20

答案:B

32. C语言中目标文件的后缀是:

A、.h

B、.obj

C、.exe

D、.c

C、补码

D、原码

答案:A

34. 下面函数的功能是()。

int f unl(char *x)

{

char *y=x;

while(*y++);

return(y-x-1);

}

A、将字符串x连接到字符串y后面

B、比较两个字符串的大小

C、将字符串x复制到字符串y

D、求字符串的长度

35. 以下程序的运行结果是() #def ine MIN(x,y) (x)<(y)?(x):(y) void main()

{

int i=10,j=15,k;

k=10*MIN(i,j);

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

}

A、150

B、15

C、100

D、10

答案:B

36. 下面正确的字符常量是()。

A、''

B、'\\''

C、'W'

D、"a"

答案:C

37. 请读下面的程序。

#include

main()

{

int a,b;

f or(a=1,b=1;a<=100;a++)

{

if(b>=20) break;

if(b%3==1)

{

b+=3;

continue;

}

b-=5;

}

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

C、9

D、7

答案:B

38. 在说明语句:int *f();中,标志符f代表的是()。

A、一个返回值为指针型的函数名

B、一个用于指向一维数组的行指针

C、一个用于指向函数的指针变量

D、一个用于指向整型数据的指针变量

39. 下面四个选项中,开关条件的选项是()。

A、if

B、switch

C、signed

D、auto

40. 有以下程序

#include

int f(int x, int y)

{

return((y-x)*x);

}

main()

{

int a=3,b=4,c=5,d;

d=f(f(a,b),f(a, c));

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

}

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

A、7

B、9

C、8

D、10

答案:B

41. 下面的程序中()有错误(每行程序前面的数字是行号)。

1 #include

2 main()

3 {

4 f loat a[3]={0,0};

5 int i;

6 f or(i=0;i<3;i++) scanf("%d",&a[i]);

7 f or(i=1;i<3;i++) a[0]=a[0]+a[i];

8 printf("%f\n",a[0]);

9 }

A、第8行

B、第4行

C、第6行

D、没有

42. 运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为: #include

while(m!=n)

{

while(m>n) m-=n;

while(n>m) n-=m;

}

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

}

A、m=-1

B、m=2

C、m=1

D、m=3

答案:C

43. 有以下程序

#include

main()

{

int x=8;

f or( ; x>0; x--)

{

if(x%3) {print f("%d,",x--); continue;}

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

}

}

程序的运行结果是:

A、8,5,4,2,

B、8,7,5,2,

C、9,7,6,4,

D、7,4,2,

答案:A

44. 以下选项中与if(a==1)a=b; else a++;语句功能不同的switch语句是:

A、switch(a==1)

{case 1:a=b;break;

case 0:a++;

}

B、switch(a==1)

{case 0:a=b;break;

case 1:a++;

}

C、switch(a)

{def ault:a++;break;

case 1:a=b;

}

D、switch(a) {

case 1:a=b;break;

def ault:a++;

}

45. 下述程序输出的结果是()。

#include

printf("%d,",x);

}

void f un2()

{

static int x;

x++;

printf("%d,",x);

}

main()

{

int i;

f or(i=0;i<3;i++)

{

f un1();

f un2();

}

}

A、1,1,2,1,3,1,

B、1,1,1,1,2,3,

C、1,1,1,2,1,3,

D、1,1,2,2,1,3,

答案:C

46. 设有定义:f loat a=2,b=4,h=3;下面表达式与代数式子(a+b)*h/2结果不相同的是()。

A、(a+b)*h*1/2

B、(1/2)*(a+b)*h

C、9

D、(a+b)*h/2

47. 设有说明int(*ptr)[m]; 其中的标志符ptr是()。

A、具有m个指针元素的一维指针数组,每个元素都只能指向整型量

B、指向m个整型变量的函数指针

C、一个指向具有m个整型元素的一维数组的指针

D、m个指向整型变量的指针

48. 以下程序段()。

int a=10;

while (a); - -a;

A、有语法错误.

B、循环执行10次

C、循环执行一次

D、是死循环

49. 已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678,则y值为

A、123.000000

B、45.000000

C、678.000000

D、无定值

答案:

50. 若有定义:int a=7;f loat x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。

答案:D

51.在C 语言中,一维数组的定义方式为:类型说明符数组名;

A、[常量]

B、[整型表达式]

C、[整型常量]或[整型常量表达式]

D、[整型常量表达式]

答案:C

52. #include

void f un(int *a,int *b)

{ int *c;

c=a;a=b;b=c;

}

void main()

{ int x=3, y=5,*p=&x, *q=&y;

f un(p,q);print f(“%d,%d,”,*p,*q):

f un(&x, &y);printf(“%d,%d\n”;*p, *q);

}

程序运行后的输出结果是

A、5,3,5,3

B、3,5,3,5

C、5,3,3,5

D、3,5,5,3

答案:B

53. 在C的源程序中如果使用了开平方根函数sqrt,则在源程序中应包含下面()预编译命令

A、#include

B、#include

C、#include

D、#include

54. 关于循环嵌套,以下哪种说法是错误的:

A、循环嵌套跳转时,禁止跳入同层的另一循环中。

B、循环嵌套跳转时,禁止从外层跳入内层。

C、外层循环可以包含两个以上内循环,彼此之间可以相互交叉。

D、三种循环可以相互嵌套,层数不限。

55. 下面对函数嵌套的叙述中,正确的叙述为()。

A、函数定义和调用均可以嵌套

B、函数定义不可以嵌套,但函数调用可以嵌套

C、函数定义和调用均不能嵌套

D、函数定义可以嵌套,但函数调用不能嵌套

56. 有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是()。

A、gets(a) ; gets(b) ;

B、scanf("%s%s", &a, &b) ;

C、getchar(a) ; getchar(b) ;

D、gets(a, b) ;

57. 设函数f un的定义形式为:

void f un(char ch,f loat x) {…}

则以下对函数f un的调用语句中,正确的是( ).

A、f un(32,32);

B、t=f un('D',16.5);

A、返回一个不确定的值

B、返回若干个系统默认值

C、能返回一个用户所希望的函数值

D、没有返回值

59. 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。

A、p=n;

B、*p=*q;

C、n=*q;

D、p=q;

答案:A

60. 在宏定义#def ine PI 3.1415926中,用宏名PI代替一个()

A、字符串

B、单精度数

C、双精度数

D、常量

答案:A

61. sizeof(double)是( )。

A、一个整型表达式

B、一个双精度型表达式

C、一个不合法的表达式

D、一种函数调用

答案:A

62. 以下对字符数组的描述中错误的是()。

A、不可以用关系运算符对字符数组中的字符串进行比较

B、字符数组中的字符串可以整体输入、输出

C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D、字符数组中可以存放字符串

答案:C

63. 若有说明语句:int y[ ][4]={0,0};则下面叙述不正确的是( )。

A、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0

B、二维数组y的行数为1

C、该说明等价于int y[ ][4]={0};

D、数组y的每个元素都可得初值0

答案:A

64. 有以下程序

#include

void f un(char *a,char *b)

{

while(*a==’*’) a++;

while(*b=*a) {b++;a++;}

}

void main()

{

char *s=”****a*b****”,t[80];

f un(s,t); puts(t);

}

程序的运行结果是

A、ab

B、a*b

int a,b,c;

a=10;

b=50;

c=30;

if(a>b)

a=b,b=c;

c=a;

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

A、a=50,b=30,c=50

B、a=10,b=30,c=10

C、a=50,b=30,c=10

D、a=10,b=50,c=10

答案:D

66. 以下程序的运行结果是()

int f1(int x)

{

static int z=3, y=0;

y++;

z++ ;

return(x+y+z);

}

main( )

{

int a=1, k;

f or (k=0; k<3; k++)

printf("%4d", f1(a))

}

A、7911

B、666

C、789

D、6810

答案:D

67. 下列叙述中正确的是()。

A、在switch语句中,不一定使用break语句

B、在switch语句中必须使用default

C、break语句必须与switch语句中的case配对使用

D、break语句只能用于switch语句

答案:A

68. 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()。

A、scanf("%d%d%d", a, b, *d);

B、scanf("%d%d%d", &a, &b, &d);

C、scanf("%d%d%d", a, b, d);

D、scanf("%d%d%d", &a, &b, d);

答案:D

69. 下列程序运行结果是:

main()

{

int x=9,y=5,z=8;

if(x

if(y<0) z=0;

C、8

D、6

答案:C

70. 阅读以下程序:

main()

{

int x;

x=5;

if(x--<5)

printf("%d",x);

else

printf("%d",x++);

}

程序运行结果是( )。

A、6

B、4

C、5

D、3

答案:B

71. 有如下程序

#include

main( )

{

int n=9;

while(n>6){n--;printf("%d",n);}

}

该程序段的输出结果是:

A、9876

B、876

C、8765

D、987

答案:B

72. 若下述程序执行时按如下方式输入数据:a↙b↙cdef

则该程序的运行结果是()。

#include

main()

{

int k;

char c;

f or(k=0;k<=5;k++)

{

c=getchar();

putchar(c);

}

}

A、a

B、a

D、abcdef

b

c

e

f

答案:B

73. putchar函数可以向终端输出一个()。

A、字符或字符型变量值

B、实型变量值

C、字符串

D、整型变量表达式值

答案:A

74. 有以下程序

#include

main()

{

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

switch(x)

{

case 1:

switch(y)

{

case 0: a++; break;

case 1: b++; break;

}

case 2: a++; b++; break;

case 3: a++; b++;

}

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

}

程序的运行结果是( ):

A、a=2,b=1

B、a=2,b=2

C、a=1,b=1

D、a=1,b=0

答案:A

75. 在C语言中,要求运算数必须是整型的运算符是()。

A、%

B、++

C、!=

D、/

答案:A

76. 有以下程序

int f1(int x,int y) {return x>y?x:y;}

int f2(int x,int y) {return x>y?y:x;}

main()

{

int a=4,b=3,c=5,d=2,e,f,g;

e=f2 (f1(a,b),f1(c,d));

程序运行后的输出结果是( )

A、.2,5,

B、3,4,7

C、5,2,7

D、4,3,7

答案:D

77. 已有定义int a=-2;和输出语句:printf("%8lx",a);以下正确的叙述是()。

A、%8lx 不是错误的格式符,其中数字8规定了输出字段的宽度

B、%x 是格式符的一种,它可以适用于任何一种类型的数据

C、%x 是格式符的一种,其变量的值按十六进制输出,但%8lx 是错误的

D、整型变量的输出格式符只有%d一种

答案:A

78. 有以下程序:

#include

main()

{

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

int i,k,t;

f or(i=0;i<3;i++)

f or(k=i+1;k<4;k++)

if(a[i][i]

{

t=a[i][i];

a[i][i]=a[k][k];

a[k][k]=t;

}

f or(i=0;i<4;i++)

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

}

程序运行后的输出结果是( )

A、2,3,4,6

B、6,4,3,2

C、1,1,2,6

D、6,2,1,1

答案:B

79. 以下叙述中正确的是

A、用C程序实现的算法可以既没有输入也没有输出

B、用C语言实现的算法可以没有输入但必须要有输出

C、用C语言实现的算法可以没有输出但必须要有输入

D、用C语言实现的算法必须要有输入和输出操作

80. 有以下程序

#include

int f(int x)

{

int y;

if(x==0||x==1) return (3);

y=x*x-f(x-2);

return y;

}

程序的运行结果是( )。

A、8

B、9

C、6

D、0

答案:C

81. 结构化程序由三种基本结构组成,三种基本结构组成的算法

A、只能完成一些简单的任务

B、只能完成部分复杂的任务

C、只能完成符合结构化的任务

D、可以完成任何复杂的任务

82. 下述程序输出的结果是()。

#include

main()

{

char ch[7]={"65ab21"};

int i,s=0;

f or(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

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

}

A、62

B、6521

C、6

D、12ba56

答案:C

83. 有以下程序

main()

{

int i=0,s=0;

do{

if(i%2)

{

i++;

continue;

}

i++;

s+=i;

}

while(i<7);

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

}

执行后输出结果是()。

A、2

B、12

C、28

D、16

int k=0,m=0;

int i,j;

f or(i=0;i<2;i++)

{

f or(j=0;j<3;j++)

k++;

k-=j;

}

m=i+j;

printf("k=%d,m=%d",k,m);

}

A、k=1,m=5

B、k=0,m=5

C、k=1,m=3

D、k=0,m=3

答案:B

85.以下程序的输出结果是()。main()

{

int a,b;

f or(a=1,b=1;a<=100;a++)

{

if(b>=10)

break;

if(b%3==1)

{

b+=3;

continue;

}

}

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

}

A、101

B、5

C、6

D、4

答案D

86. 下述程序输出的结果是()。#include

main()

{

int x=1;

f un(f un(x));

}

f un(int n)

{

static int s[3]={1,2,3};

int i;

f or(i=0;i<3;i++)

return(s[n]);

}

A、1,3,5

1,5,9

B、1,3,5

0,4,8

C、1,3,5

1,3,5

D、1,3,5

-1,3,7

答案:D

87. 已知各变量的类型说明如下:

int i=8,k,a,b;

unsigned long w=5;

double x=1.42,y=5.2;

则以下符合C语言语法的表达式是()。

A、a+=a-=(b=4)*(a=3)

B、x%(-3)

C、a=a*3=2

D、y=f1oat(i)

答案:D

88. 以下叙述正确的是()。

A、在C程序中,每行只能写一条语句

B、在C程序中,%是只能用于整数运算的运算符

C、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数据

D、在C程序中,无论是整数还是实数,都有能被准确无误地表示

取消标记

89. 在C语言中,int、char和short类型数据在内存中所占用的字节数()。

A、由用户自己定义

B、是任意的

C、均为2个字节

D、由所用机器的机器字长决定

答案;D

90. 设有说明int(*ptr)[m]; 其中的标志符ptr是()。

A、m个指向整型变量的指针

B、一个指向具有m个整型元素的一维数组的指针

C、指向m个整型变量的函数指针

D、具有m个指针元素的一维指针数组,每个元素都只能指向整型量

答案:A

91. 条件运算符的使用:int x=5, y=7, z; z=x>y?x+y:x-y 则z的值为:

A、5;

B、12;

C、7 ;

D、-2;

答案:D

92. 有以下程序:

#include

main( )

int m=5;

if(++m>5)

程序的输出结果是:

A、8

B、10

C、5

D、12

答案:D

计算机C语言趣味的程序设计——题目百例

Contest - 2011级C语言课程大作业 Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00 Current Time: 2012-2-23 15:51:18 Status:Running Public

写在最前: 本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了……………….. 由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的…. 呵呵……..有一两个….偷了下懒哦……… 提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议……………. 问题A: 趣味程序设计_狼追兔子 时间限制: 1 Sec 内存限制: 128 MB 提交: 341 解决: 63 [提交][状态][讨论版] 题目描述 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中? 输入 有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。 输出 兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入 10 8 15 样例输出 2 4 7 9 2 4 5 7 8 9 11 12 14 提示 用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。 #include #include int ok[110]; int main() { int n,s,i,find; while(scanf("%d",&n)!=EOF) { memset(ok,0,sizeof(ok)); for(i=1;i<=200;i++) if(!ok[find=(i*(i+1)/2)%n]) if(find==0) ok[n]=1; else ok[find]=1; for(s=0,i=1;i<=n;i++) s+=ok[i]; for(i=1,find=0;i<=n;i++) if(!ok[i]) { if(find!=(n-s-1)) { printf("%d ",i);find++;

C语言期末考试真题

第五套 一、判断题 1.(F)在一个c程序中,main函数必须出现在所有函数之前。 2.(F)#include”stdio.h”是每个程序中必须写的。 3.(F)c程序总是从程序的第一条语句开始执行的。 4.(F)以下各数均不是合法的八进制数:256,03A2,-0127。 5.(F)语句scanf(“%7.2f”,&a):是一个合法的scanf函数。 6.(T)整数-32100可以赋值给int型和long int型变量。 7.(F)表达式(j=3,j++)的值是4. 8.(F)在c程序中,赋值运算符的优先级最低。 9.(F)7&3+12的值是15. 10.(F)若a是实型变量,在执行了a=5后,a将变为整型变量。 11.(F)若有i=10,j=2:则执行完i*=j+8:后i的值是28. 12.(F)若a是实型变量,c程序中允许以下赋值a=10:因此实型变量中允许存放整型变量。 13.(T)在c语言中,逻辑“真”等价于不等于0的数。 14.(F)开关语句switch最多可以形成3个分支. 15.(T)Int a=1,b=2,c=3:if(a>c)b=a:a=c:c=b:则c的值是2. 16.(T)Int i=3,j=5:if(i>j):是正确的。 17.(F)若有i=10,j=0:则执行完语句if(j=0):i++:elsei --:i的值为11 18.(T)break语句只能用于循环语句switch-case语句中。 19.(T)若有说明int c:则while(c=getchar()):是正确的c语句。 20.(T)Int a[10]:for(i=1:i<10:i++)a[i-1]=i:能使数组元素分别取值{1,2,3,4,5,6,7,8,9,10}. 21.(F)二维数组在内存中储存以列为主序方式存放。 22.(T)c程序中#include和#define均不是c语句 23.(F)通过return语句,函数可以带回一个或一个以上的返回值 24.(T)在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量 25.(T)对结构体类型的变量的成员可以象普通变量一样参与各种运算 二、选择题 1.(A)是构成c语言程序的基本单位。 A函数 B变量 C子程序 D语句 2.(B)以下叙述中正确的是 A.c语言的源程序不必通过遍译就可以直接运行。 B.语言中的每条可执行语句最终都将被转换成二进制的机器指令 C.c源程序经编译形成的二进制代码可以直接运行

C语言题库及答案

C语言题库及答案

姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 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 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

c语言趣味编程实例

1、编程序求5X+2Y+Z=50 的所有非负整数解。 #include int main() { int x, y, z; int count = 0; for (x = 0; 5 * x <= 50;x++) for (y = 0; 2 * y <= 50; y++) for (z = 0; z <= 50; z++) { if (5 * x + 2 * y + z == 50) { count++; printf("%d :", count); printf("x=%d,y=%d,z=%d", x, y, z); printf("\n"); } } return 0; } 2、把25个字母A、B、C、···、X、Y按如下要求打印出来:从最中间的字母M 开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。 要求:初始化时按字母表顺序赋值。 #include int main() { char x[] = "ABCDEFGHIJKLMNPQRST"; int k; int n = 0; while (x[n]) { n++; if (x[n] == 'M') { k = n;break; } } printf("%c,",x[k]); for (int i = 1; i <= 12; i++) if (i <= 11) printf("%c,%c,", (x[k] - i), (x[k] + i)); else printf("%c,%c。", (x[k] - i), (x[k] + i)); printf("\n");

C语言习题全集+答案

第一单元程序设计和C语言 一、选择题 1.C语言的基本构成单位是:。 A. 函数 B. 函数和过程 C. 超文本过程 D. 子程序 2.一个C语言程序总是从开始执行。 A. 主过程 B. 主函数 C. 子程序 D.主程序 3.C语言的程序一行写不下时,可以。 A. 用逗号换行 B. 用分号换行 C. 在任意一空格处换行 D. 用回车符换行 4.以下叙述不正确的是:。 A. 在C程序中,语句之间必须要用分号";"分隔 B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数 C. 在C程序中,无论是整数还是实数都能正确无误地表示 D. 在C程序中,%是只能用于整数运算的运算符 5.以下不正确的C语言标识符是。 A. ABC B. abc C. a_bc D. 6.下列字符串是标识符的是:。 A. _HJ B. 9_student C. long D. LINE 1 7.以下说法中正确的是:。 A. C语言程序总是从第一个定义的函数开始执行 B. 在C语言程序中,要调用的函数必须放在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 8.不合法的常量是:。 A. ‘\2’ B. " " C. ‘3’ D. ‘\483’ 9.已知各变量的类型说明如下,则以下不符合C语言语法的表达式是:。 int k,a,b; unsigned long w=5; double x=; A. x%(-3) B. w+=-2 C. k=(a=2,b=3,a+b) D. a+=a=+(b=4)*(a=3) 10.在C语言中,字符型数据在内存中以形式存放。 A. 原码 B. BCD码 C. 反码 D. ASCII码 11.若有定义:int a=7; float x=; y=;

C语言期末考试模拟试题及答案

重点看后面的起泡法排序和找最大最小值。那些问结果的奇怪的代码,随意。 C语言期末考试试题 2008年04月12日星期六00:22 一选择题(24分,每小题2分) 1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。 A存放读入数据项的存储区 B存放读入数据的地址或指向此地址的指针 C一个指向所读文件的文件指针 D一个整形变量,代表要读入的数据项总数 )。 2.以下程序的输出结果为( main() { int i=010,j=10; printf("%d,%d\n",i++,j--); } A11,9 B9,10 C8,10 D9,9 3.设a为int型变量,执行下列赋值语句后,a的取值分别是()。 a=125.534; a=20.0/3; a=(int)125.521%4; a=5<<2; A125,6,31,1 B125,6,1,20 C125,6.666666,31,20 D125.534,6.666666,2,20 )。 4.设i和k都是int类型,则for循环语句( for(i=0,k=-1;k=1;i++,k++) printf("****\n"); A循环结束的条件不合法 B循环体一次也不执行

C循环体只执行一次 D是无限循环 5.以下程序的输出结果为(main() { char c; int i; )。 }for(i=65;i<68;i++) { c=i+32; switch(c) { case'a': case'b': case'c':printf("%c,",c);break; default:printf("end"); } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函数调用语句:fseek(fp,-10L,2);的含义是()。 A将文件位置指针从文件末尾处向文件头的方向移动10个字节B将文件位置指针从当前位置向文件头的方向移动10个字节C将文件位置指针从当前位置向文件末尾方向移动10个字节D将文件位置指针移到距离文件头10个字节处 7.以下程序的输出结果为( main() { int i=0,j=0; while(s1[i]!='\0') i++; while(s2[j]!='\0') s1[i++]=s2[j++]; s1[i]=0; )。

C语言考试题库及答案复习整理

C 语言理论上机考试选择题部分(共200题) 1、下面程序的输出是___D______ #include void main() { int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } A) k=11,k=12,k=11 B) k=11,k=13,k=13 C) k=11,k=013,k=0xb D) k=11,k=13,k=b 2、在下列选项中,不正确的赋值语句是__D______. A) ++t; B) n1=(n2=(n3=0)); C) k=i=j; D) a=b+c=1; 3、下面合法的C 语言字符常量是______A____. A) '\t' B) "A" C) 65 D) A 4、表达式: 10!=9的值是 ________D____. A) true B) 非零值 C) 0 D) 1 5、C 语言提供的合法的数据类型关键字是_____B____. A) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是__D__. A) 反码 B) 补码 C) EBCDIC 码 D) ASCII 码 7、C 语言程序的基本单位是_____C______. A) 程序行 B) 语句 C) 函数 D) 字符 8、设 int a=12,则执行完语句

a+=a-=a*a 后,a 的值是____D____ A) 552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是____B__. #include void main() {int a; printf("%d\n",(a=3*5,a*4,a+5)); } A) 65 B) 20 C) 15 D) 10 10、下面程序的输出是____B______. #include void main() {int x=023; printf("%d\n",--x); } A) 17 B) 18 C) 23 D) 24 11、下面程序的输出的是_____C____. #include void main() {int x=10,y=3; printf("%d\n",y=x/y); } A) 0 B) 1 C) 3 D) 不确定的值 12、已知字母A 的ASCII 码为十进制的65,下面程序的输出是______A_____. #include void main() {char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A) 67,D B) B,C C) C,D D) 不确定的值 13、若要求在if 后一对圆括号中表示a 不等于0的关系,则能正确表示这一关系的表达式为____D__. A) a<>0 B) !a C) a=0 D) a

C语言经典编程

猴子吃桃 1、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 2.程序源代码: main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day--; } printf("the total is %d\n",x1); } 回文数问题 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法) 2.程序源代码: main( ) { long a,b,c,d,e,x; scanf("%ld",&x); a=x/10000;/*分解出万位*/ b=x%10000/1000;/*分解出千位*/ c=x%1000/100;/*分解出百位*/ d=x%100/10;/*分解出十位*/ e=x%10;/*分解出个位*/ if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a); else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b); else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c); else if (d!=0) printf("there are 2, %ld %ld\n",e,d); else if (e!=0) printf(" there are 1,%ld\n",e); } 杨辉三角 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1

c语言编程例题与答案解析

实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果:

【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。

【实验3-2】代码及运行结果:

【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include #include int Prime(int x) { int i ; if(x<=1) return 0; for(i=2;i<=x-1;i++) { if(x%i==0) { return 0;

c语言期末考试试题

一、单项选择题。(每题1分,共20分) 1. C程序的基本单位是:() A.子程序 B.程序 C.子过程 D.函数 2.在C语言中,非法的八进制是:() A.016 B.018 C.017 D.02 3. 不是C语言实型常量的是:() A.55.0 B.0.0 C.55.5 D.55e2.5 4 .字符串“xyzw”在内存中占用的字节数是:() A.6 B.5 C.4 D.3 5. 若已定义f,g为double类型,则表达式:f=1,g=f+5/4的值是:() A.2.0 B.2.25 C.2.1 D.1.5 D.1.5 D.1.5 D.1.5 6. 若有语句char c1=`d`,c2=`g`;printf(“%c,%d\n”,c2- `a`,c2-c1);则输出结果为:() (a的ASCII码值为97) A.M,2 B.G,3 C.G,2 D.D,g 7. 使用语句scanf(“a=%f,b=%d”,&a,&b);输入数据时,正确的数据 输入是:() A.a=2.2,b=3 B.a=2.2 b=3 C.2.2 3 D.2.2,3 8.表示关系12<=x<=y的C语言表达式为:() A.(12<=x)&(x<=y) B. (12<=x)&&(x<=y) C. (12<=x)|(x<=y) D.(12<=x)||(x<=y) 9.设x=1,y=2,m=4,n=3,则表达式x>y?x:mc4)后,s,t的值为:() A.1,2 B.1,1 C.0,1 D.1,0 12. 语句for(a=0,b=0;b!=100&&a<5;a++)scanf(“%d”,&b); scanf最多可执行次数为:() A.4 B.6 C.5 D.1 13. 对于for(s=2;;s++)可以理解为:()

CC语言趣味程序设计编程百例精解

C-C++语言趣味程序设计编程百例精解() ?81.角谷猜想 日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。 *程序说明与注释 #include<stdio.h> int main() { int n,count=0; printf("Please enter number:"); scanf("%d",&n); /*输入任一整数*/ do{ if(n%2)

n=n*3+1; /*若为奇数,n乘3加1*/ printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n); } else { n/=2; /*若为偶数n除以2*/ printf("[%d]: %d/2=%d\n",++count,2*n,n); } }while(n!=1); /*n不等于1则继续以上过程*/ } 82.四方定理 数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 *程序说明与注释 #include<stdio.h> #include<stdlib.h> int main()

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

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 6. 下列C 语言用户标识符中合法的是( B )。 A) 3ax B)x C)case D)-e2 E)u nion 7. 下列四组选项中,正确的 C 语言标识符是 (C )。 A ) %x B ) a+b C ) a123 D ) 8、 下列四组字符串中都可以用作 A 、print _3d db8 aBc B C 、str_1 Cpp pow while D 9. C 语言中的简单数据类型包括( A 、整型、实型、逻辑型 C 、整型、字符型、逻辑型 C 语言程序中的标识符的是( A ) 、I\am one_half start$it 3pai 、Pxq My->book line# His.age D )。 B 、整型、实型、逻辑型、字符型 D 、整型、实型、字符型 10. 在C 语言程序中,表达式 5%2的结果是—C_ A)2.5 B)2 C)1 D)3 11. 如果int a=3,b=4 ;则条件表达式"a

(完整word版)C语言期末模拟试题

一、选择题:(20分,每题2分) 1.以下不正确的C语言标识符是(D)。 A. ABC B. abc C. a_bc D. ab.c 2.C程序是由B构成的。 A. 主程序与子程序 B. 主函数与若干子函数 C. 一个主函数与一个其它函数 D. 主函数与子函数 3.以下说法中正确的是:A。 A. 在C语言中,实参与其对应的形参各占独立的存储单元; B.在C语言中,实参与其对应的形参共占同一个存储单元; C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单 元; D. 在C语言中,形参是虚拟的,不占存储单元。 4.设n=3;则n++的结果是(B)。 A. 2 B. 3 C. 4 D. 5 5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是(A)。 A. 0 B. 1 C. 2 D. 3 6.凡是函数中未指定存储类别的局部变量其隐含的存储类别是(A)。 A. 自动(auto) B. 静态(static) C. 外部(extern) D. 寄存器(register)7.在while(x)语句中的x与下面条件表达式等价的是:D。 A. x= =0 B. x= =1 C. x!=1 D. x!=0 8.若有以下说明和语句: struct worker { int no; char *name; }work, *p=&work; 则以下引用方法不正确的是(D)。 A. work.no B. (*p).no C. p->no D. work->no

9.以下对二维数组进行正确初始化的是(B)。 A.int a[2][3]={{1,2},{3,4},{5,6}}; B.int a[][3]={1,2,3,4,5,6}; C.int a[2][]={1,2,3,4,5,6}; D.int a[2][]={{1,2},{3,4}}; 10.二维数组a有m列,则在a[i][j]之前的元素个数为:B。 A)j*m+i B)i*m+j C)i*m+j-1 D) i*m+j+1 二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分) 1.#include main() { int i=16,j,x=6; j=i+++1; x*=i=j; printf(“%d,%d\n”,j,x); } 运行结果是: 2.#include #include main() { int a=1,b=4,c=2; float x=10.5,y=4.0,z; z=(a+b)/c+sqrt((double)y)*1.2/c+x; printf(“%f\n”,z);

趣味c语言编程100例

趣味 c 语言编程100 例 【程序 1】 题目:有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、 2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: main() { int i,j,k; printf("\n"); for(i=1;i<5;i++) / *以下为三重循环 */ for( j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /* 确保 i 、 j、 k 三位互不相同 */ printf("%d,%d,%d\n",i,j,k); } } 程序 2】 题目:企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10% ;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元的部分,可可提成 7.5% ; 20 万到 40 万之间时,高于 20 万元的部分,可提成 5% ; 40 万到 60 万之间时高于

40 万元的部分,可提成 3% ;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5% ,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总 数? 1. 程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2. 程序源代码: main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%ld",&i); bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3; bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;

大学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、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键

2013年c语言期末考试题

1、给定n 个数据, 求最小值出现的位置(如果最小值 出现多次,求出第一次出现的位置即可)。 最大值 第三行i<=n 五行k+1 2、编写程序求无理数e 的值 并输出。计算公式为: e=1+1/1!+1/2!+1/3!+......+1/n! 当1/n!<0.000001时e=2.718282。 3、求一批数中最大值和最小值的积。 4、某一正数的值保留2位小数,对第三位进行四舍 五入。 5、从键盘上输入任意实数x,求出其所对应的函数值。 z=(x-4)的二次幂(x>4) z=x 的八次幂(x>-4) z=z=4/(x*(x+1))(x>-10) z=|x|+20(其他) 6、求出N ×M 整型数组的最大元素及其所在的行坐标 及列坐标(如果最大元素不唯一,选择位置在最前面 的一个)。 例如:输入的数组为: 1 2 3 4 15 6 12 18 9 10 11 2 求出的最大数为18,行坐标为2,列坐标为1。 7、求一个n 位自然数的各位数字的积。(n 是小于10的 自然数) 8、计算n 门课程的平均值,计算结果作为函数值返回。 例如:若有5门课程的成绩是:92,76,69,58,88, 则函数的值为76.599998。 9、求一批数中小于平均值的数的个数。 10、编写函数判断一个整数m 的各位数字之和能否被7整除, 可以被7整除则返回1,否则返回0。调用该函数找出 100~200之间满足条件的所有数。 11、请编一个函数void fun(int tt[M][N],int pp[N]), tt 指向一个M 行N 列的二维数组,求出二维数组每列 中最大元素,并依次放入pp 所指一维数组中。二维 数组中的数已在主函数中赋予。

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项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 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 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 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

c语言练习题带详解答案

一、编程题 1.输入2个整数,求两数的平方和并输出。 #include int main(void) { intt a ,b,s; printf("please input a,b:\n"); scanf("%d%d”,&a,&b); s=a*a+b*b; printf("the result is %d\n",s); return 0; } 2. 输入一个圆半径r,当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。 #include #define PI 3.14 int main(void)

{ double r ,area , girth; printf("please input r:\n"); scanf("%lf",&r); if (r>=0) { area =PI*r*r; girth =2*PI*r ; printf("the area is %.2f\n", area); printf("the girth is %.2f\n", girth);} else printf("Input error!\n"); return 0; } 3、已知函数y=f(x),编程实现输入一个x值,输出y值。 2x+1 (x<0) y= 0 (x=0)

2x-1 (x>0) #include void main() { int x,y; scanf(“%d”,&x); if(x<0) y=2*x+1; else if(x>0) y=2*x-1; else y=0; printf(“%d”,y); } 4.从键盘上输入一个百分制成绩score,按下列原则输出其等级:score≥90,等级为A;80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D;score<60,等级为E。 #include void main(){ int data;

C语言期末考试模拟试卷

1.以下所列的C语言常量中,错误的是() A) 0xFF B) 1.2e0.8 C)”fedsada”D) '\72' 2.在下列标识符中,能用作用户自定义标识符的是() A. 5ab B. static C.Int D. struct 3.设x为整数,C中能正确地表达数学式0≤x<5的是() A. 0<=x<5 B. x=0||x=1|| x=2||x=3||x=4 C. x>=0||x<5 D. !(x<0||x>=5) 4.执行下列程序后,x的值为( ) x = 3; 9 + 3 - 2, x = x * 5, y = 23, x++; A. 10 B. 15 C. 16 D. 23 4. int i = 5; float x; 执行x = 8 / i; 后x的值为() A. 1.6 B. 1 C. 1.0 D. 2.0 5.下列关于表达式的书写中正确的是() A. 4 * 2.5 % 3 B. x = y + z = 4 C. ++5 D.x += y *= z + 3 6.设有说明“int x=5,y=7,z=8;”,执行表达式z+=x++||y++|| ++z后,则x,y,z的值分别是() A. 6、7、9 B. 6、8、10 C. 6、8、8 D. 6、8、1 7.若int x=2, y=3, z=7;则表达式y-z? x+y:x*y的值为() A. 5 B. 1 C. -4 D. 6 8.设e1和e3是表达式,与语句for(e1; ;e3) s;等同的语句是() A. for(e1;e1;e3)s; B. for(e1;e3;e3)s; C. for(e1;0;e3)s; D. for(e1;1;e3)s; 9. a,b已经定义为int类型,则以下程序段中循环体总的执行次数是()for(a = 8; a ; a=a-2) for(b = 0;b < 3;j++) {……} A. 12 B. 15 C. 16 D. 8 10. 设有语句:char s[ ]=“xy\0\123\n7”; 则 strlen(s)的值是() A. 2 B.6 C. 7 D. 3 11.数组作为函数的形参时,把数组名作为实参,传递给函数的是() A.数组的首地址 B.数组的元素个数 C.数组中的各元素值 D.数组的大小 12.下列说明或赋值语句,不正确的是() A. char p[12];p[0] =‘V’;

相关文档