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

C语言复习3

C语言复习3
C语言复习3

1.C程序通常是用编辑器程序填入的。

2.预处理程序是在翻译阶段开始之前自动执行的。

3.两种最常用的预处理指令是把其他文件包含到要编译的文件中和用程序文本替换专门的符号。

4.为了生成可执行文件,连接程序把编译器的输出和各种库函数连接在一起。

5.C语言程序都是从Main函数开始执行。

6.函数体用左花括号({)开始,用右花括号(})结束。7.语句都用分号结束。

8.标准库函数Printf在屏幕上显示信息。

9.转义序列\n表示新行符,它把光标定位在屏幕下一行的开始位置。

10.标准库函数Scanf用来读取来自键盘的数据。

11. 在scanf函数的格式控制串中,转换说明符%d 表示要输入一个

整数。在printf函数的格式控制串中,它表示要输出一个整数。12. 不论何时把某个值放置到某个存储单元中,该值都会覆盖掉该存储单

元中原有的值。这种读入过程称为破坏性读入。

13. 从存储单元中读取值时,该存储单元中的值不变。读取过程称为非破坏

性读出。

14. if语句用来作出决策。

15. 根据要执行的动作以及这些动作应该执行的顺序求解问题的过程称算法

16. 指定语句在计算机程序中的执行顺序称为程序控制。

17. 所有的程序都可以用三种控制结构编写。这三种控制结构是顺序结构、选择结构,循环结构

18. if/else选择结构在条件为真时执行一个动作,在条件为假时执行另一个动作。

19. 用花括号组合在一起的多个语句称为复合语句。

20. while循环结构在条件为真时反复执行一条语句或一组语句。

21. 一组指令循环执行指定次数,这种循环称为计数器控制的循环。

22. 在事先不知道一组语句会反复执行多少次的情况下,可以用一个标记值终止循环。

1.编辑器2.预处理3.把其它文件包含到要编译的文件中、用程序文本替换专门的符号。4连接 5. Main 6. 左花括号({),右花括号(})。7. 分号8. Printf 9. 新行10. scanf11. % d 12. 破坏性13. 非破坏性14. If 15. 算法16. 程序控制17. 顺序结构、选择结构、循环结构18. if/ else19. 复合语句20. While

21.计数器控制的22. 标记

23. 在计数器控制的循环中,计数器用来计算一组指令应该被反复执行的次数

24. 执行循环结构中的continue 语句能够立即执行下一次循环。

25. 执行循环结构或switch结构中的break 语句能够立即退出该结构。

26._switch选择结构_用来测试某个特定的变量或表达式是否等于每一个假设的整常数值。

27. C语言的程序模块称为函数。

28. 函数是通过函数调用激活的。

29. 只能被定义它的函数内部所识别的变量称为局部变量。

30. 被调用函数中的return 语句用来把表达式的值传回给调用函数。

31. 函数的头部用关键字void表示它没有返顺值或表示它不包含参数。

32. 标识符的作用域指可使用该标识符的程序区域。

33. 把控制权从被调用函数返回到调用函数的三种方法是执行return语句、执行return表达式和___遇到结束函数的左花括号

34. 编译器用函数原型检查传递给函数的参数个数、参数类型和参数顺序。

35. rand函数用来产生随机数。

36. Srand 函数用来给随机数程序设置随机数种子。

37. 存储类别说明符有auto、register、extern和static。

38. 在块或函数参数列表中声明的变量除非指定了存储类别,否则其存储

类别被假定为Auto 。

39. 存储类别说明符Register建议编译器把变量存储在计算机的某个寄存器中。

40. 在块或函数之外声明的变量是外部,全局变量。

41. 要想使函数中的局部变量在函数调用之间保持其值,该变量必须用存

储类别说明符Static说明。

42. 标识符的四种可能的作用域是函数作用域、文件作用域、和块作用域,函数原型作用域。

43. 直接或间接调用自身的函数称为递归函数。

44. 递归函数通常由两部分组成。一部分是通过测试基本实例确定是否终止递归,另一部分是通过递归调用把问题简化。

45. 数值列表和数值表储存在数组中。

46. 数组元素的相关性表现在它们具有相同的名字和类型。

47. 用来引用特定数组元素的数字称为下标。

48. 应该用符号常量声明数组的大小,因为这种能够更容易调整程序。

49. 把数组元素按顺序存放的过程称为数组排序。

24. continue25. Break 26. swithc选择结构27. 函数28. 函数调用29. 局部变量30. Return 31. Void 32. 作用域33. 执行return语句、执行return表达式、遇到结束函数的左花括号34. 函数原型35. rand36. Srand 37. auto、register、extern、static 38. Auto 39. Register 40. 外部、全局41. Static 42. 函数作用域、文件作用域、块作用域、函数原型作用域。43. 递归44. 基本45. 数组46. 名字、类型47. 下标48. 符号常量49. 排序23. 控制变量或计数器

50.确定某个数组中是否包含某个关键值的过程称为数组数查找。

51. 使用两个下标的数组称为二维数组。

52. 指针是把另一个变量的地址作为其值的变量。

53. 有三种值可以来初始化指针,它们是0、NULL和地址。

54. 能够赋给指针的唯一的整数是0。

50. 查找51. 二维52. 地址53. 0、NULL、地址。54. 0

二.判断下述说法是否正断。如不正确,说明理由。

1. printf函数总是从新行的起始位置开始打印。( )

2. 计算机会把/*和*/之间的注释文本打印到屏幕上。( )

3. 在printf函数的格式控制串中使用转义序列\n会把光标定位到屏幕上下一行开始位置

4. 所有的变量在使用前都必须予以声明。( )

5. 在声明变量时必须给出变量的类型。( )

6. C语言认为变量number和NuMbEr是相同的。( )

7. 声明语句可放在函数体中的任何位置。( )

8. printf函数的格式控制串之后的所有参数的前面都必须有&。( )

9. 求余运算符%只能用于两个整数操作数。( )

10. 算述运算*、/、+和一具有相同的优先级。( )

11. 打印三行输出的C语言程序必须用三条printf语句。( )

12. 一个数组能够存放许多不同类型的值。( )

13. 数组的下标可以float数据类型。( )

14. 如果初始化值列表中的初始化值的个数少于数组的元素个数,C编译器会自动把剩余的元素初始化为初始化值列表中的最后一个值。(

15. 初始化值列表中的初始化值个数多于数组元素的个数是错误的。(

16. 把单个数组元素传递给修改该元素值的函数会使调用函数包含修改后的值。( )

1. 不正确。printf函数总是从光标所在位置开始打印,光标位置可在屏幕上某行的任何位置。

2. 不正确。在执行程序时,注释不会使计算机产生任何动作。注释只是用来提高程序的可读性。6. 不正确。C语言是对大小写敏感的,所以这两个变量是不相等的。7. 不正确。声明必须放置在函数体左括号之后和任何可执行语句之前。8. 不正确。printf函数的参数之间通常不使用&,scanf函数的格式控制串之后的参数通常要在前面加上&。例外情形在第6章和第7章中讨论。10. 不正确。运算符*、/和%具有相同的优先级,而运算符+和-的优先级较低。11. 不正确。在printf

语句中用多个\n转义序列可进行多行打印。12. 不正确。数组只能存储具有相同类型的值13不正确。数组下标必须是整数或整数表达式14不正确。C编译器自动把余下的元素初始化为0. 16不正确。数组的单个元素是传值调用。如果把整个数组传递给函数,被调用函数对数组元素值的修改就会影响到原始数组。

三.判断下列各叙述的正确性,若正确在( )内标记√,若错误

1. ( ) 全局变量与函数体内定义的局部变量重名时,局部变量不起作用。

2. ( ) C程序中,有调用关系的所有函数必须放在同一个源程序文件中。

3. ( ) 函数定义时,可以不指定形参的类型,函数调用时由实参的类型决定形参的类型。

4. ( )C程序文件中每个函数都将被本文件调用。

5.()函数可以嵌套定义,即在一个函数的内部可以定义另一个函数,

6.()当函数定义放在main()函数前面的时候,可以缺省函数声明。

7.()在C语言中允许函数之间的嵌套调用。

8.()局部静态变量是在编译时赋初值的,即只赋初值一次。

9.()外部变量必须定义在文件的开头部分。

10.()函数的形参在退出该函数后是不可见的。

11.()字符“\0”是字符串的结束标记,其ASCII代码为0。

12.(若有说明:int a[3][4]={0};,则数组a中每个元素的初值都为0。

13.(若有说明:int a[ ][4]={0,0};,则二维数组a的第一维大小为0。

14.()若有说明:int a[2][4]={0,0};,则只有a[0][0]和a[0][1]

的初值为0,其余元素的初值均不为0。15.()若有说明:static int a[3][4];,则数组a中各元素可在程序的编译阶段得到初值0。

16.()若用数组名作为函数调用时的实参,则实际上传递给形参

的是数组的第一个元素值。

17.()调用strlen(“abc\0ef\0g”)的返回值为8。

18.()在两个字符串的比较中,字符个数多的字符串比字符少的字

符串大。19.()当需要接受用户从键盘输入的含有空格的字符串时,应使用gets()函数。20.()在C语言中,二维数组元素在内存中的存放顺序可以随意调整变化。

21.()&b指的是变量b的地址处所存放的值。

22.()指针变量可用于保存同类型变量的地址值。

23.()存放地址的变量同其它变量一样,可以存放任何类型的数据。

24.()指向同一数组的两指针p1、p2相减的结果与所指元素的下

标相减的结果是相同的。

25.()如果定义函数时的参数是指针变量,那么,调用函数时的参

数就可以是同类型的指针变量、数组名或简单变量的地址。

26.()char *name[5]定义了一个一维指针数组,它有5个元素,

每个元素都是指向字符数据的指针型数据。

27.()语句 y=*p++; 和 y=(*p)++; 是等价的。

28.()函数指针所指向的是函数的入口地址。

29.()int *p;定义了一个指针变量p,其值是整型的。

30.()用指针作为函数参数时,采用的是“地址传送”方式。

31.()结构体的成员可以作为变量使用。

32.()在一个函数中,允许定义与结构体类型的成员相同名的变量,

它们代表不同的对象。

33.()在C语言中,可以把一个结构体变量作为一个整体赋值给另

一个具有相同类型的结构体变量。

34.()使用联合体union的目的是,将一组具有相同数据类型的数

据作为一个整体,以便于其中的成员共享同一存储空间。

35.()使用结构体struct的目的是,将一组数据作为一个整体,以

便于其中的成员共享同一空间。36.()在C语言中,如果它

们的元素相同,即使不同类型的结构也可以相互赋值。

37.()在C语言中,枚举元素表中的元素有先后次序,可以进行比

较。38.()用typedef可以定义各种类型名,但不能用来定义变量。

39.()语句printf(“%d\n”,sizeof(struct person)); 将输出结构体类型person 的长度。

40.(所谓结构体变量的指针就是这个结构体变量所占内存单元段的起始地址。

1. ╳

2. ╳ 3 . ╳ 4. ╳ 5. ╳

6. √

7. √

8. √

9. ╳10. √

11.√12.√13. ╳14. ╳15. √

16. ╳17. ╳18. √19. √20. ╳

21. ╳22. √23. ╳24. √25. ╳

26. √27. ╳28. √29. ╳30. √

31. ╳32. √33. √34. ╳35. ╳

36. ╳37. √38. √39. √40. √

四.选择题

1. 在C语言中,不同类型数据混合运算时,要先转换成同一类型后

进行运算。设一表达式中包含有int、long、unsigned、char类型

的变量和数据,则表达式最后的运算结果是 4 类型数据。

① int ② char ③ unsigned ④ long

2. 若int型数据占2个字节,则以下语句的输出为

4 。

int k=-1; printf(“%d,%u\n”,k,k);

① -1,-1 ② -1,32767 ③ -1,32768 ④ -1,65535

3.若a, b均为int型变量,x, y均为float型变量,正确的输入函数调用是

2 。

① scanf("%d%f",&a,&b); ② scanf("%d%f",&a,&x);

③ scanf("%d%d",a,b); ④ scanf("%f%f",x,y);

4.若x, y均为double型变量,正确的输入函数调用是 3 。

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

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

5.若x为char型变量,y为int型变量,x, y均有值,正确的输出函数调用是

1 。

① printf("%c%c",x,y); ② printf("%c%s",x,y);

③ printf("%f%c",x,y); ④ printf("%f%d",x,y);

6. 若a, b, c, d都是int型变量且初值均为10,不正确的赋值语句是 3 。

①a=b=c=d; ② a=b++;

③ a+b++; ④d=(a=b=125) c++;

7.若x, y均为int型变量且有值,要输出x, y的值,正确的输出函数调是 4 。①printf("%d%d",&x,&y); ② printf("%f%f",x,y);

③ printf("%f%d",x,y); ④ printf("%d%d",x,y);

8. x为int型变量,且值为2345,不正确的输出函数调用是 4 。

① printf("%d",x); ② printf("%3d",x);

③ printf("%c",x) ; ④printf("%s",x);

9. 设x和y均为int型变量,则执行以下语句后的输出为 1 。

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

①0 ② 1 ③ 6 ④12

1. ④

2. ④

3. ②

4. ③

5. ①

6. ③

7. ④ 8. ④ 9. ①

10. 若m为float型变量,则执行以下语句后的输出为。

m=1234.123;printf(“%-8.3f\n”,m);printf(“%10.3f\n”,m);

①1234.123 ②1234.123

1234.123 1234.123

③1234.123 ④1234.123

001234.123 001234.123

11.若n为int型变量,则执行以下语句后的输出为。

n=32767;printf(“%010d\n”,n);printf(“%10d\n”,n);

①0000032767 ②32767

32767 0000032767

③32767 ④输出格式说明符不

合法

32767 32767

12.若x为unsigned int型变量,则执行以下语句后的x值

为。x=65535;printf(“%d\n”,x);

①65535 ② 1

③无定值④-1

13. 若x为int型变量,则执行以下语句后的输出为。

x=0xDEF;printf(“%4d\n”x);printf(“%4o\n”x);printf(“%4x\n”,x);

① 3567 ②3567 ③3567 ④3567

6757 6757 06757 6757

def def 0xdef 0def

14.若x、y、z均为int型变量,则执行以下语句后的输出

为。

x=(y=(z=10)+5)-5;printf(“x=%d,y=%d,z=%d\n”,x,y,z);

y=(z=x=0,x+10);printf(“x=%d,y=%d,z=%d\n”,x,y,z);

① x=10, y=15, z=10

x=0, y=10, z=0

② x=10, y=10, z=10

x=0, y=10, z=0

③ x=10, y=15, z=10

x=10, y=10, z=0

④ x=10, y=10, z=10

x=0, y=10, z=0

10. ②11. ①12. ④ 13. ①14. ①

15.若x是int型变量,y是float型变量,所用的scanf调用语句格式为:scanf(“x=%d,y=%f”,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应当是。

①x=10,y=66.6 <回车>

②10 66.6 <回车>

③10 <回车> 66.6 <回车>

④x=10 <回车> y=66.6 <回车>

16. 若w、x、y、z均为int型变量,则为了使以下语句的输出为:

1234+123+12+1,正解的输入形式应当是。

scanf(“%4d+%3d+%2d+%1d”,&x,&y,&z,&w);printf(“%4d+%3d+%2d+ %1d\n”,x,y,z,w);

① 1234123121<回车>

②1234123412341234<回车>

③1234+1234+1234+1234<回车>

④1234+123+12+1<回车>

17. 若x、y均为int型变量,z为double型变量;则以下不合法的scanf函数调用语句为。

① scanf(“%d,%lx,%le”,&x,&y,&z);

② scanf(“%2d*%d%lf”,&x,&y,&z);

③ scanf(“%x%*d%o”,&x,&y);

④ scanf(%x%o%6.2f”,&x,&y,&z);

18.设a、b均是int型变量,则以下不正确的函数调用为。

①?a?<=c1<=?z?② putchar(…\108?)

③scanf(“%d%*2d”,&a,&b) ④putchar(…\??)

19.判断char型变量c1是否为小写字母的最简单且正确的表达式

为。

①?a?<=c1<=?z? ②(c1>=a)&&(c1<=z)

③(…a?<=c1)||(…z?>=c1) ④

(c1>=?a?)&&(c1<=?z?)

20.若a、b、c均为int型变量,则执行以下语句后,a值为

(1) ,b值为(2) 。a=b=c=1;++a||++b&&++c;

(1) ①不正确②0 ③ 2 ④ 1

(2) ① 1 ② 2 ③不正确④0 15. ①

16. ④17.④18.②19.④20.(1) ③(2) ①

21.若已知w=1,x=2,y=3,z=4,a=5,b=6,则执行以下语句的a值为(1) ,b值为(2) 。(a=w>x)&& (b=y>z );

(1) ① 5 ②0 ③ 1 ④

2

(2) ① 6 ②0 ③ 1 ④

4

22.以下不正确的if语句是_______。

①if (x>y);

②if (x= =y) x+=y;

③if (x!=y)scanf(“%d”,&x) else scanf(“%d”,&y);

④if (x

23. C语言对嵌套if语句的规定是:else总是与配对。

①其之前最近的if ②第一个if

③缩进位置相同的if ④其之前最近且不带

else的if

24.若有说明int x,y;则下面程序段不能实现以下

的函数关系:

①if (x<0) y= -1; else if (x= =0) y=0; else y=1;

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

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

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

25.若x、y、z、m、n 均为 int 型变量,则执行下面语句后的 x 值

为(1) ,y值为(2) ,z的值为(3) 。m=10;

n=5;

x=(--m==n++)?--m:++n;y=m++;z=n;

(1) ① 5 ② 6 ③10 ④7

(2) ①11 ② 6 ③9 ④10

(3) ① 5 ②10 ③ 6 ④7

26.若有说明语句:int w=1,x=2,y=3,z=4;则表达式w>x?w:z>y?z:x

的值是。

① 4 ② 3 ③ 2 ④ 1

27.以下关于switch语句和break语句的描述中,只有是

正确的。

①在switch语句中必须使用break语句。

②break语句只能用于switch语句中。

③在switch语句中,可根据需要用或不用break语句。

④break语句是switch语句的一部分。

21.(1) ②(2) ①22.③23.④

24.② ,③

25.(1) ④(2) ③(3) ④

26.①27.③28.②

28.设有说明语句:int a=2,b=7,c=5;则执行以下语句后,输出为2 。

switch(a>0)

{

case 1: switch(b<0)

{ case 1: printf(“@”); break;

case 2: printf(“!”); break;

}

case 0: switch(c==5)

{ case 0: printf(“*”); break;

case 1: printf(“#”); break;

default:printf(“$”); break;

}

default: printf(“&”);

}

①@#& ②#& ③*& ④ $&

29. 以下程序的输出结果是 1 。

main()

{

int a=0,i=1;

switch(i)

{

case 0:

case 1: a+=2;

case 2:

case 3: a+=3;

default: a+=7;

}

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

}

①12 ②7 ③ 2 ④ 5

30.在C语言中,下列 3 表达式能正确表示“a ≥10或a ≤ 0”。

①a>=10 or a<=0 ②a>=10 | a<=0

③a>=10 || a<=0 ④a>=10 && a<=0

31.若有以下程序段,w和k都是整型变量:

w=k;

LB: if (w==0) goto LE;

w--;

printf("*");

goto LB;

LE: ┇

则不能与上面程序段等价的循环语句是。

①for (w=k;w!=0;w--)

printf("*");

②w=k;

while (w--!=0)

{

printf("*");

w++;

}

③w=k;

do

{ w--;

printf("*");

} while (w!=0);

④for (w=k;w;--w)

printf("*");

提示:要考虑k的取值范围,即应对k为正整数、负整数、零三种情况分别讨论。

31. ③32.②33.④34.④35.(1)②

(2)② (3)①

36. ①37.①38.①39. ① 40. ②

41. ②

42. ④43. ③44. ③45. ④46.

④47. ②

48. ①49. ③ 50. ④51. ④52.

④53. ③

54. ③55. ③56. ③57. ②58.

②59. ④

32.执行下列程序,输入3.6 2.4,输出结是。

#include

#include

main( )

{ float x,y,z;

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

z=x/y;

while (1)

{ if (fabs(z)>1.0) {x=y; y=z; z=x/y; }

else break;

}

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

}

① 1.500000 ② 1.600000

③ 2.000000 ④ 2.400000

33.下面程序的输出是。

#include “stdio.h”

main( )

{ int x=3,y=6,a=0;

while (x++!=(y =1))

{ a+=1;

if (y

}

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

}

①x=4, y=4, a=1 ②x=5, y=5, a=1

③x=5, y=4, a=3 ④x=5, y=4, a=1

34.在C语句中,下列说法中正确的是。

①不能使用do-while语句构成循环;

②do-while语句构成的循环必须用break语句才能退出;

③do-while语句构成的循环,当while语句中的表达式值为非

零时结束循环;

④do-while语句构成的循环,当while语句中的表达式值为零时结束循环。

35.设c为char型变量,输入以下数据:

right? <回车>

则分别选择下面三个程序段的执行结果。

(1)c=getchar( );

while(c!=???)

{ putchar(c);

c=getchar( );

}

(2)w hile ((c=getchar( ))!=???)

putchar(c);

(3)w hile (putchar(getchar( ))!=???);

①right? ②right ③sjhiu④thgir

36.以下程序的运行结果是。

#include “stdio.h”

main( )

{ int i;

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

{ if (i%2) printf("*");

else continue;

printf("#");

}

printf("$\n");

}

①*#*#*#$ ②#*#*#*$ ③*#*#$ ④#*#*$

37.以下程序的运行结果是。

#include “stdio.h”

main ( )

{ int n=4;

while (n--)

printf(“%d”,--n);

}

①20 ②21 ③32 ④

43

38.以下程序的运行结果是。

#include “stdio.h”

main( )

{ int i, j, m;

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

{ m=0;

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

m=m+i*j;

}

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

}

① 1 5 ②20 ③25 ④30

39. 以下对C语言函数的有关描述中,正确的是_____。

①调用函数时,实参的类型、个数及顺序必须与函数定义时形参的类型、个数及

顺序完全一致。

②函数可以嵌套定义。

③函数必须有返回值,否则不能正确使用。

④C程序中有调用关系的所有函数必须放在同一个源程序文件中。

40. 函数调用语句“f((e1, e2), (e3, e4, e5));”中参数的个数是_______。

① 1 ② 2 ③ 4 ④ 5

41. 将一个函数说明为static后,该函数将___________。

①既能被同一源文件中的函数调用,也能被其它源文件中的函数调用。

②只能被同一源文件中的函数调用,不能被其它源文件中的函数调用。

③只能被其它源文件中的函数调用,不能被同一源文件中的函数调用。

④既不能被同一源文件中的函数调用,也不能被其它源文件中的函数调用。

42. C语言中规定函数的返回值的类型由_______。

①return 语句中的表达式类型所决定。

②调用该函数时的主调用函数类型所决定。

③调用该函数时系统临时决定。

④在定义该函数时所指定的函数类型所决定。

43. 以下正确的说法是________。

①定义函数时,形参的类型说明可以放在函数体内。

②return后边的值不能为表达式。

③如果函数返回值的类型(简单类型)与计算结果的类型(简单类型)不一致,

系统会将函数的计算结果自动转换为函数的返回值类型。

④如果形参与实参的类型顺序不一致,以实参顺序为准。

44. 对于有下列存储类型标识符的变量,______型变量的可见性与生命周期不一致。

①extern ②auto ③static ④register

45. 以下叙述中,不正确的说法是_______。

①在不同函数中可以使用相同名字的变量。

②形参是局部变量。

③在函数内定义的变量只在本函数范围内有效。

④在函数内的复合语句中定义的变量在本函数范围内有效。

46. 以下叙述中,正确的是_______。

①用#include包含的头文件的后缀不可以是“.a”。

②在对某个含有错误的头文件进行修改后,包含此头文件的源程序不必重新进行

编译。

③宏名必须用大写字母表示。

④宏替换不占用运行时间。

47. 有一个函数的定义:func(int a) { printf(“%d”,a); }则该函数的返回值的类型是

________。

①与参数a的类型相同②int类型

③void类型④无法确定

48. 以下叙述中,不正确的描述是________。

①函数之外定义的变量称为外部变量,外部变量是全局变量;

②在一个函数中既可以使用本函数中的局部变量,又可以使用外部变量;

③外部变量定义和外部变量说明的含义不同;

④若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,

外部变量不起作用;

49. 在C语言中,引用数组元素时,其数组下标的数据类型允许是_____。

①字符常量;②浮点型常量;

③整型常量或整型表达式;④任何类型的表达式;

50. 以下表达式中,能正确对一维数组a中的所有元素进行初始化的是______

①int a[10]=(0,0,0,0); ②int a[10]={ };

③ int a[ ]={0}; ④ int a[10]={10*2};

51. 对于所定义的二维数组a[2][3],元素a[1][2]是数组的第_____个元素。

① 3 ② 4 ③ 5 ④ 6

52. 若有说明:int a[20];则可以正确引用数组元素的表达式是______。

① a[20] ② a[3.5] ③ a(5) ④ a[10-10]

53. 若有说明:int a[3][4]; 则可以正确引用数组元素的表达式是_______。

① a[2][4] ② a[1,3] ③ a[1+1][0] ④ a(2)(1)

54. 以下关于数组的描述中,正确的是______。

①组的大小是固定的,但可以有不同类型的数组元素;

②组的大小是可变的,但所有数组元素的类型必须相同;

③数组的大小是固定的,所有数组元素的类型必须相同;

④数组的大小是可变的,可以有不同类型的数组元素;

55. 若有定义:char *str=“I am a student.”;则字符串在存储单元中占______个字节。

① 14 ② 15 ③ 16 ④ 17

56. 在执行int a[][3]={{1,2},{3,4}};语句后,a[1][2]的值是______。

① 3 ② 4 ③ 0 ④ 2

57. 对于下面程序段,执行的结果是______。

char c[5]={…a?,?b?,?\0?,?c?,?\0?};

printf(“%s”,c);

①…a??b?② ab

③ ab c ④ a,b

58. 对于下面程序段,执行的结果是______。

char c[ ]=”\t\v\\\0will\n”;

printf(“%d”,strlen(c));

① 14 ② 3

③ 9 ④字符串中有非法字符,输出值不确定

59. 设有语句:int a[10],*p =a;,则下面的语句中,不正确的是_______。

① p=p+1;

②p[0]=*p+1;;

③a[0]=a[0]+1;

④ a=a+1;

60. 指向变量的指针,其含义是指该变量的______。

①值②地址

③名④一个标志

61. 设有定义int a=5,*p1, *p2;且有语句:p1=&a;p2=&a;,则下面的赋值语句中,会导致错误的是______。

① a=*p1+*p2; ②p2=a;

③p1=p2; ④a=*p1*(*p2);

62. 若int (*p)[5];,则其中p的含义是______。

①5个指向整型变量的指针;

②指向5个整型变量的函数指针;

③一个指向具有5个整型元素的一维数组的指针;

④具有5个指针元素的一维指针数组,每个元素都只能指向整型量;

63. 设有定义:int a=3, b, *p=&a;,则下列语句中使b不为3的语句是_____。

①b=*&a; ②b=*p; ③b=a; ④b=*a;

计算机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语言复习资料

第一章C语言概述1.1选择题 【题1.1】以下不是C语言的特点的是( B ) A.C语言简洁、紧凑 B.能够编制出功能复杂的程序 C. C语言可以直接对硬件进行操作 D.C语言移植性好 【题1.2】以下不正确的C语言标识符是( D )。A.ABC B.abc C.a_bc D.ab.c 【题1.3】以下正确的c语言标识符是( C )。 A.%x B.a十b C.a123 D.test! 【题1.4】一个c程序的执行是从( A ). A.main( )函数开始,直到main( )函数结束B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main( )函数开始,直到最后一个函数结束 【题1.5】一个C语言程序是由(B)。 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 【题1.6】一个c程序是由( B )。 A.一个主程序和若干子程序组成 B.一个或多个函数组成 C. 若干过程组成 D.若干子程序组成 【题1.7】C语言派程序的基本单位是( B )。 A.过程 B.函数 c子程序 D.标识符 【题1.8】编辑程序的功能是( A )。 A.建立并修改程序 B.将c源程序编译成目标程序C.调试程序 D.命令计算机执行指定的操作

1.2填空题 【题1.9】c语言符号集包括【英文字母、数字和一些有待定含义的标点符号】。 【题1.10】一个c程序有且仅有一个【main()】函数。 【题1.11】C程序的基本单位是【函数】。 【题1.12】一个c派程序有【1】个main( )函数和【若干】二个其他函数。【题1.13】在一个C源程序中,注释部分两侧的分界符分别是【/*】和【*/】。 【题1.14】结构化设计中的三种基本结构是【顺序结构、分支结构和循环结构】。 【题1.15】在C语言中,输入操作是由库函数【scanf】完成的,输出函数是由库函数【printf】完成的。 1.3编程题 【题1.16】编写一个程序,在屏幕上输出你的姓名。试着上机编辑、编译、运行你的程序。 #include main() { printf("My Name is : Your Name!\n"); } 第二章数据类型、运算符与表达式 2.1选择题 【题2.1】以下结果为整数的表达式(设有int i;char c;float f;)(B). A.i十f B.i*c C.c十f D.i十c十f 【题2.3】以下使i的运算结果为4的表达式是(D)。 A.int i=0,j=0; (i=3,(j十十)十i); B.int i=1,j=0; j=i=((i=3)*2); C.int i=0,j=1; (j==1)?(i=1);(i=3); D.int i=1,j=1;

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、编程序求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语言复习知识点

1、C语言中表达式的合法性,自加自减运算、结构化程序设计中的三种基本结构。 C语言中表达式的合法性即符合C语法规则。 自加自减运算:作用是使变量的值增1货减1,例如 ++i,--i(在使用i之前,先使用i的值加(减)1) i++,i--(在使用i之后,使i的值加(减)1) 自增(减)运算符常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针指向下一个地址。 结构化程序设计的三种基本结构:顺序结构,选择结构和循环结构. 2、C语言结构化程序设计的思想和方法原则。 基本思想是采用自顶向下,逐步求精,模块化和单入口/出口的控制结构. 设计方法遵循3个原则:(1)自顶向下逐步求精.(2)模块化设计.(3)使用3种基本控制结构. 3、C语言中标识符的定义规则。 (1)标识符由字母,数字和下划线组成. (2)必须以字母或下划线开头,不能以数字开头. (3)严格区分大小写,不允许用空格,不允许用C语言的关键字. (4)在Turbo C中,变量名的有效长度小于32个字符,通常为8个字符. 4、C语言的指针有哪些运算?使用指针编程的优点是什么?指针一些常用的说明形式。&&运算:赋值运算和加减运算及关系运算. 优点:(1)提高程序的编译效率和执行速度. (2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据 通信. (3)可以实现动态的存储分配. (4)便于表示各种数据结构,编写高质量的程序. 指针一些常用的说明形式: int*x指针整型的指针变量 int*x[n]整型指针数组,x是一个数组,而这个数组的n个元素均为指针,每个指针都指向一个整型数据 int*x[m][n]二维指针数组。每个元素都是一个指向整型的指针 int(*x)[n]整型数组的指针,x指向一个数组,而数组元素为整型 int(*x)[][5]指向二维整型数组的指针。x是一个行指针,它的每个元素各指向一个有n 个元素的一维整型数组 int*x()指针函数,x是一个函数,其返回值为一个指向这些的指针 int(*x)()函数指针,x是一个指针,它指向一个函数,此函数的类型为整型 5、整型变量与字符型变量是否在任何情况下都可以互相替代? 不是。字符型转换成整型基本没什么问题,但反过来就可能会出问题了。因为在C语言中,整型一般是两个字节(int型两个,long型4个,short int型一个),字符型为一个字节(无符号的为两个),一个字节转两个没问题,两个转一个就可能出现溢出问题。比如char a=255,就会溢出,因为a表达的范围只是-128~127。

(完整版)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; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配()字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是()。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设char a[5],*p=a;)()。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.设有以下程序段,则值为6的表达式是()。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i;

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语言复习

C程序设计期末复习资料 一、填空题 1. C语言符号集包括(英文字母,数字,下划线和一些有特定含义的标点符号)。 2. 一个C程序有且只有一个(主函数)。 3. 结构化设计中的三种基本结构是(顺序结构,选择结构,循环结构)。 4. 设int x=9,y=8;表达式x==y+1的结果是(1). 5. 定义int x,y;执行y=(x=1,++x,x+2);语句后,y的值是(4)。 6. 以下程序运行的结果是(end)。 # include main( ) { int a,b,c; a=2;b=3;c=1; if(a>b) if(a>c) printf("%d\n",a); else printf("%d\n",b); printf("end\n"); } 7. 以下程序运行的结果是(d=20)。 # include main( ) { int a,b,c,d,x; a=c=0; b=1; d=20; if (a) d=d-10; else if (! b) if(! c) x=15; else x=25; printf("d=%d\n",d); } 8. 以下程序(当输入值为2,1时)运行的结果是(s=2,t=3)。 # include main( ) { int s,t,a,b; scanf("%d,%d",&a,&b); s=1; t=1; if(a>0) s=s+1;

if(a>b) t=s+1; else if (a==b) t=5; else t=2*s; printf("s=%d,t=%d\n",s,t); } 9. 以下程序运行的结果是(s=7)。 # include main( ) { int s=0,k; for (k=7;k>=0;k--) { switch(k) { case 1: case 4: case 7: s++; break; case 2: case 3: case 6: break; case 0: case 5: s+=2; break; } } printf("s=%d\n",s); } 10. C语言源程序文件的后缀是(.C ),经过编译后生成文件的后缀是( .obj ),经过链接后生成的文件的后缀是( .exe )。 11. 表达式10/3的结果是( 3 )。 12. 执行下列语句后,a的值是( -264 )。 int a=12;a+=a-=a*a; 13. 以下程序输入100后的执行结果是( n=64 )。 #include main( ) { int n; scanf(%o",&n); printf("n=%d\n",n); } 14. 以下程序执行时输入Language Programming的结果是( str=Language )。 #include

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语言复习题及答案

一.单项选择题 1.下列选项中,不是转义字符集中的符号是( C )。 A \\ B \’ C 074 D \0 2. 下列给出的符号串中,不属于C语言保留字的是( B )。 A switch B cher C case D else 3. 下列给出的符号串中,不能作为C语言标识符的是( C )。 A a_2 B _2a C a.3 D a_3 4. 下列属于C语言字符常量的是( C )。 A ‘abc’ B “\n” C ‘a’ D ‘a\0’ 5. 字符串”ABC”再内存占用的字节数为( B )。 A 3 B 4 C 6 D 8 6. 设有宏定义“#define R 2+3”,则R*R的宏替换结果正确的是( B )。 A (2+3)*(2+3) B 2+3*2+3 C 5*5 D 5.0*5.0 7. 设整形变量I的值为3,则表达式i---i的值为( A )。 A 0 B 1 C 2 D 3 8. 表达式“10!=9”的值为( D )。 A true B 非零值 C 0 D 1 9. 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值为( D )。 A 3 B 0 C 9 D -12 10. 下列选项中,正确的赋值表达式为( C )。 A a=7+b+c=a+7 B a=7+b++=a+7 C a=(7+b,b++,a+7) D a=7+b,c=a+7 11. 若有以下定义语句:char a;float c; double d; 则表达式a*b+d-c值的类 型为( D )。 A float B int

C char D double 12. 用十进制数表示表达式“12||012”的运算结果是( A )。 A 1 B 0 C 14 D 12 13. 下列一组运算符中,优先级别最高的运算符是( C )。 A <= B = C % D && 14. 设定“ char a=3,b=6,c;”,计算表达式c=(a^b)<<2后c的二进制值是 ( D )。 A 00011100 B 00000111 C 00000001 D 00010100 15. 设x,y,z,t 均为int类型,则执行下列语句串后,变量t的值为(C )。 X=y=z=0; If(x=y) t=z; Else t=!z; A 不定值 B 2 C 1 D 0 16. 设整形变量m1值为3,m2值为2,m3值为1,执行下列语句后,整形变量 m4值为( D )。 Switch(m1=m2==m3+1) { case1:m4=1;break; case2:m4=3;break; case3:m4=2;break; default:m4=4; } A 1 B 2 C 3 D 4 17. 设有数据定义语句“int a[200];”,下列数组元素引用中下标不越界的是 ( A )。 A a[-1] B a[0] C a[201] D a[200] 18. 若有以下数据定义语句,则数值为4的表达式是( A )。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; A a[‘g’-‘c’] B a[4]

趣味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、以下程序段的输出结果是:() int x=17,y=3,z; printf(“%d\n”,z=(x=x/y,x%y)); A) 3 B) 0 C) 2 D) 1 2、以下if语句语确的是:() A) if(x>0) B)if(x>0) printf("%f",x) {x=x+y;printf("%f",x);} else printf("%f",-x); else printf("%f",-x); C) if(x>0) D) if(x>0) {x=x+y;printf("%f",x);}; {x=x+y;printf("%f",x)} else printf("%f",-x); else printf("%f",-x); 3、下面程序段的运行结果是:() int a=1,b=2,c=2,t; while(a

大学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语言期末考试题

大一C语言期末考试题 悬赏分:40 |解决时间:2010-6-29 14:28 |提问者:345387547 1. 数组int a[3][5]; 共定义了_______________个元素。 2. 有float f= 3.1415927; 则printf(“%5.4f”, f );输出的结果是 _______________。 3. 下面程序的功能是:输出100以内(不包含100)能被3整除且个位数为6的所有整数,请填空。 main( ) { int i; for(i=1; _______________; i++) if (_______________) printf("%d", i); } 4. 设有“int x=2, y”说明,则逗号表达式“y=x+5,x+y”的值是 _______________ 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语言期末考试复习题及答案

C语言期末考试复习题及答案 一、选择题:下列各题A)、B)、C)、D)四个选项中只有一个是正 确的,请将正确的选项涂写在答案纸上。答在试卷上不得分。 (1)C语言规定:在一个源程序中,main函数的位置 D 。 A)必须在最后B)必须在系统调用的库函数的后面。 C)必须在最开始。。D)可以任意 (2) C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 A 。 A)必须为字母或下划线。。B)必须为下划线。 C)必须为字母D)可以是字母、数字和下划线中的任一种字符。 (3)下面四个选项中,均是正确的八进制数或十六进制数的选项是 B 。 A)-10 0x8f -011 B) 010 -0x11 0xf1 C) 0abc -017 0xc D) 0a12 -0x123 -0xa (4) C语言中int型数据在内存中占两个字节,则unsegned int取值范围是 A 。 A)0 ~ 65535 B)0 ~ 32767 C)-32767 ~ 32768 D)-32768 ~ 327687 (5) 若有定义:int a = 7; floa x = , y = ; 则表达式x + a % 3 * (int) (x + y) % 2/4 的值是 D 。 A) B) 0.00000 C) D) (6)已知ch是字符型变量,下面不正确的赋值语句是 B 。 A)ch = 5 + 9 ; B) ch= ' a + b '; C) ch = ' \ 0 '; D) ch= '7' + '6' ; (7) 设x , y和z是int型变量,且x = 3, y = 4 , z = 5 则下面表达式中值为0的

复试C语言常考趣味程序设计

狼追兔子 1 巧夺偶数 2 五猴分桃 3 高次方数 4 借书方案 5 过桥问题 6 数制转换7 打渔晒网8 喝酒问题9 哥德巴赫猜想10 打印日历11 抓交通肇事逃逸犯12 反序数13 新郎新娘14 称重砝码15 求车速16 谁是窃贼17 出售金鱼18 百钱百鸡19 谜语博士20 猜牌术(-)21 舍罕王的失算22 怎样存钱利最大23 猜牌术(二)24 爱因斯坦的数学题25 取火柴游戏26 平分鱼和筐27 可逆素数28 三色球问题29 抢n游戏30 问题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++; } else printf("%d",i); } printf("\n"); } return 0; } 问题B: 趣味程序设计_巧夺偶数 时间限制: 1 Sec 内存限制: 128 MB

C语言复习(1)

第1章 C语言程序的结构 1.程序的构成,main函数和其他函数。p5-p6 例题:判断:C语言程序是由过程和函数组成的。(错) 2.预定义命令,类型定义,变量定义,组成程序的各个函数,程序中的注释。 3. 源程序后缀:.c 第2章数据 1基本数据类型:整型数据,浮点型数据,指针型数据 2常量:字面常量,符号常量 3变量:标识符,变量的定义,变量的初始化,变量的引用 4 输出与输入:基本输出,基本输入 输入输出函数的调用,正确输入数据并正确理解和设计输出格式。 ●整数的表示范围、溢出情况: ?在整常量后加字母l或L,认为它是long int 型常量 ?整常量后面加一个字母u或U,认为是unsigned int型 ?16位整数的表数范围为:-32768-- +32767 若有声明"short int x;"且sizeof(x)的值为2,则当x值为时"x+1>x"为假。 ●字符型与整型 char i=2; char i=?2?; int i=2; int i=?2?; ●浮点数的表示 ?指数形式:e或E之前必须有数字;指数必须为整数。 例题1: 下列选项中,不能作为合法常量的是()。 A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 例题2: 下列选项中可作为C 语言合法常量的是()。 A)-80 B)-080 C)-8e1.0 D)-80.0e ●字符常量:用单引号括起来的单个普通字符或转义字符 ●转义字符:反斜线后面跟一个字符或一个代码值表示 main() { printf("\101 \x42 C\n"); printf("I say:\"How are you?\"\n"); printf("\\C Program\\\n");

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