当前位置:   article > 正文

C语言——练习题_200题【选择题-判断-填空-程序设计】_scanf(%d,&n) *p=n

scanf(%d,&n) *p=n

目录:

一:单项选择【60个】

1.执行以下程序段后,输出结果和a的值是()

2.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是()

3.相同结构体类型的变量之间,可以()

4.int a[10];合法的数组元素的最小下标值为()

5.能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是()

6.该程序的输出结果是( )

7.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()

8. 以下程序中,while循环的循环次数是______

9.若有说明语句:char c='\72';则变量c()

10.下列程序运行结果为:()

11.C语言中不可以嵌套的是()

12.C语言中,逻辑"真"等价于()

13.用户定义的函数不可以调用的函数是()

14.以下叙述中正确的是 ()

15.下面四个选项中,均是不合法的浮点数的选项是()

16.假定所有变量均已正确定义,下列程序段运行后x的值是()

17.若变量已正确定义,以下程序段的输出结果是()

18.以下选项中合法的实型常数是()

19.以下程序执行后输出结果是()

20.对以下说明语句  int a[10]={6,7,8,9,10};  的正确理解是()

21.能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是()

22.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()

23.字符串指针变量中存入的是()

24.下列字符数组长度为5的是()

25.从键盘上输入某字符串时,不可使用的函数是()

26.以下对整型数组a的正确说明是()

27.若char a[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是()

28.若有说明语句:char c='\72';则变量c()

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

30.以下对一维整型数组a的正确说明是()

31.变量p为指针变量,若p=&a,下列说法不正确的是()

32.C语言允许函数类型缺省定义,此时函数值隐含的类型是()

33..若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()

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

35.若有定义int a[10],*p=a;,则p+5表示()

36.若有说明:int *p,m=5,n;以下正确的程序段是()

37.下列程序的输出结果为()

38.以下所列的C语言常量中,错误的是()

39.int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()

40.C语言中 while 和 do-while 循环的主要区别是()

41 .以下程序的执行结果是________.

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

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

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

45.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:'\b'是退格符)()

46.以下关于运算符优先顺序的描述中正确的是()

47.下列语句的结果是()

48.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()

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

50.若有以下程序段:int a=3,b=4;  a=a^b;b=b^a;a=a^b;则执行以上语句后,a和b的值分别是()

51.有定义:char*p1,*p2;则下列表达式中正确合理的是()

52.若有定义:int *p[3];,则以下叙述中正确的是()

53.C语言中,定义结构体的保留字是()

54.设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()

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

56.以下叙述正确的是()

57.对两个数组a和b进行如下初始化:则以下叙述正确的是()

58.以下数值中,不正确的八进制数或十六进制数是()

59.对于基本类型相同的两个指针变量之间,不能进行的运算是()

60.执行下列语句后的结果为()

二:判断【60个】

1.若i =3,则printf("%d",-i++);输出的值为 -4

2.表达式 (j=3, j++) 的值是4

3.C语言中只能逐个引用数组元素而不能一次引用整个数组

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

5.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

6.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

7.若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6

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

9.#define 和printf 都不是C语句

10.关系运算符<= 与 == 的优先级相同

11.若有说明int c;则while(c=getchar());是正确的C语句

12.若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11

13.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

14.while和do…while循环不论什么条件下它们的结果都是相同的.

15.char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句

16.语句scanf("%7.2f",&a);是一个合法的scanf函数

17.如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10};

18.x*=y+8 等价于 x=x*(y+8)

19.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准

20.整数 -32100可以赋值给int型和long int型变量

21.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

22.如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10}

23.函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.

24.C语言所有函数都是外部函数.

25.#define 和printf 都不是C语句

26.循环结构中的continue语句是使整个循环终止执行

27.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量

28.若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11

29.c程序总是从程序的第一条语句开始执行.

30.语句scanf("%7.2f",&a);是一个合法的scanf函数

31.两个字符串中的字符个数相同时才能进行字符串大小的比较

32.7&3+12的值是15

33.语句 printf("%f%%",1.0/3);输出为 0.333333

34.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准

35.若i =3,则printf("%d",-i++);输出的值为 -4

36.通过return语句,函数可以带回一个或一个以上的返回值

37.int i,*p=&i;是正确的C说明

38.a=(b=4)+(c=6) 是一个合法的赋值表达式

39.十进制数15的二进制数是1111.

40.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

41.若有说明int c;则while(c=getchar());是正确的C语句

42.C语言中"%"运算符的运算对象必须是整型.

43.c程序总是从程序的第一条语句开始执行.

44.假设有int a[10],  *p;则p=&a[0]与p=a等价

45.#define 和printf 都不是C语句

46.C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的

47.十进制数15的二进制数是1111.

48.x*=y+8 等价于 x=x*(y+8)

49.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

50.关系运算符<= 与 == 的优先级相同

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

52.while和do…while循环不论什么条件下它们的结果都是相同的.

53.假设有int a[10],  *p;则p=&a[0]与p=a等价

54.字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.

55.函数strlen("ASDFG\n")的值是7

56.7&3+12的值是15

57.表达式 (j=3, j++) 的值是4.

58.a=(b=4)+(c=6) 是一个合法的赋值表达式

59.语句 printf("%f%%",1.0/3);输出为 0.333333

60.若有定义和语句:

三:填空【59个】

1.表达式3.5 + 1 / 2的计算结果是_____

2.请写出以下程序的输出结果_____

3.表达式(int)((double)(5/2)+2.5)的值是_____.

4.阅读下面程序,程序执行后的输出结果为_____

5.以下程序段的输出结果是_____

6.以下程序段的输出结果是_____、_____、_____、_____、_____

7.以下程序的输出结果是_____

8.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是_____、最小十进制整数是_____,它们的二进制形式是_____

9.结构化程序由_____、_____、_____三种基本结构组成

10.阅读下面程序,程序执行后的输出结果是_____

11.请写出以下程序的输出结果_____

12.对以下数学式,写出三个等价的C语言表达式是_____、_____、_____

13.表达式3.5 + 1 / 2的计算结果是_____

14.若x为double型变量,请写出运算x = 3.2, ++x后表达式的值_____和变量的值_____

15.以下程序的执行结果是_____

16.若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是_____。请用代表Enter键

17.以下程序段的输出结果是_____、_____、_____、_____       

18.以下程序的输出结果是_____

19.以下程序的执行结果是_____

20.以下程序的输出结果是_____

21.以下程序的执行结果是_____

22.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是_____

23.以下程序的输出结果是_____

24.表达式(int)((double)(5/2)+2.5)的值是_____.

25.表达式3.5 + 1 / 2的计算结果是_____

26.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为:_____、_____、_____       

27.阅读下面程序,则执行后程序的结果为_____

28.有以下程序段:

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

30.下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0.请填空

31.若x为double型变量,请写出运算x = 3.2, ++x后表达式的值_____和变量的值_____

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

33.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是_____、最小十进制整数是_____,它们的二进制形式是_____

34.若从键盘输入58,则以下程序输出的结果是_____

35.请写出与以下表达式等价的表达式是 A)_____B)_____

36.以下程序的输出结果是_____

37.以下程序的执行结果是_____

38.运用位运算,能将八进制数0125000除以4,然后赋给变量a的表达式是_____

39.在C语言程序中,用关键字_____定义基本整型变量,用关键字_____定义单精度实型变量,用关键字_____定义双精度实型变量

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

41.表达式3.5 + 1 / 2的计算结果是_____

42.以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式_____、_____、_____        

43.阅读下面程序,程序执行后的输出结果为_____

44.以下程序的输出结果是_____

45.下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0.请填空

46.设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,则b的二进制数应该是_____

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

48.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是_____

49.若表达式(a+b)>c*2&&b!=5||!(1/2)中,a、b、c的定义和赋值为Int   a=3,b=4,c=2; 则表达式的值为_____

50.以下程序的执行结果是_____

51.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为:_____、_____、_____     

52.下列程序的执行结果是_____

53.以下程序的输出结果是_____

54.以下程序段的输出结果是_____

55.阅读下面程序,程序执行后的输出结果是_____

56.函数体由符号_____开始,用符号_____结束

57.若k为int型变量且赋值11,请写出运算k++后表达式的值_____和变量的值_____

58.将下列数学式改写成C语言的关系表达式或逻辑表达式是 A)_____B)_____

59.对以下数学式,写出三个等价的C语言表达式是_____、_____、_____

四:程序设计题【6个】

1.【程序设计】功能:计算出k以内最大的10个能被13或17整除的自然数之 和。(k〈3000)

示例代码:

2.【程序设计】功能:将字符串中的小写字母转换为对应的大写字母,其它字符不变

示例代码:

3.【程序设计】题目:用while语句求1~100的累计和

示例代码:

4.【程序设计】功能:求一个四位数的各位数字的立方和

示例代码:

5.【程序设计】/*    请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予

示例代码:

6.【程序设计】功能:对某一正数的值保留2位小数,并对第三位进行四舍 五入

示例代码:


一:单项选择

1.执行以下程序段后,输出结果和a的值是()

  1.  int a=10;
  2. printf("%d",a++);

 

A、11 和  10

B、11 和 11

C、10 和 11

D、10 和  10

 

答案:

C

2.已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是()

 

A、65,66

B、A,B

C、65,68

D、A,68

 

答案:

A

3.相同结构体类型的变量之间,可以()

 

A、比较大小

B、地址相同

C、赋值

D、相加

 

答案:

C

4.int a[10];合法的数组元素的最小下标值为()

 

A、1

B、0

C、10

D、9

 

答案:

B

5.能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是()

 

A、a>=0 | a<=10

B、a>=10 or a<=0

C、a>=10 && a<=0

D、a>=10 || a<=0

 

答案:

D

6.该程序的输出结果是( )

  1. main()
  2. {int x=1,a=0,b=0;
  3. switch (x)
  4.   { case  0: b++;
  5.     case  1: a++;
  6.     case  2: a++;b++;}                    
  7.  printf("a=%d,b=%d",a,b);
  8. }

 

A、2,2

B、2,1

C、1,1

D、1,0

 

答案:

B

switch结构分zhidao支没加break;跳出语句,开始执行后,程序由x=1调到case 1 分支 a++(a由0自己加为1),由于没有break语句,程序继续执行到内case 2 分支 a++ b++(a由1自加变2,b由0自加为1),之后程序printf输出 a=2 ,b=1

7.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()

 

A、不确定

B、double

C、int

D、float

 

答案:

B

隐含转换的规则:低类型数据转化为高类型数据,表达式结果 向高精度类型转变 double精度最高 

8. 以下程序中,while循环的循环次数是______

  1. main()
  2. {
  3.   int  i=0;
  4.   while(i<10)
  5.   {
  6.     if(i<1)   continue;
  7.     if(i==5)  break;
  8.     i++;
  9.   }
  10. }

 

A、死循环,不能确定次数

B、6

C、4

D、1

 

答案:

A

这抄个程序有问题,在于 , 当 i = 0 时,满足 i < 10, 进入 while 循环,由于 i 也小于 1 (i<1) 跳出百进入下一个while循环。 你可以看到 while循环并没有能改变 i = 0的值。所以这是度一个死循环,永远跳不出来了。循环无限次_第一个

9.若有说明语句:char c='\72';则变量c()

 

A、说明不合法,c的值不确定

B、包含3个字符

C、包含1个字符

D、包含2个字符

 

答案:

C

文件中的代码转换为字符,因为是单个字符所以储存空间也是1字符

10.下列程序运行结果为:()

  1. #define  P  3
  2. #define  S(a)   P*a*a
  3. main()
  4.  {int  ar;
  5.    ar=S(3+5);
  6.    printf("\n%d",ar);
  7.  }

 

A、192

B、25

C、29

D、27

 

答案:

C

#define宏都是直接替换的,不会计算后再替换。
s(3+5) = p*3+5*3+5 = 9+15+5 =29
若想计算后在替换,需要加上括号:

#define S(a) P*(a)*(a)

从s(3+5)可以知道a就是3+5,直接用3+5代入P*a*a就得到3*3+5*3+5。 这里宏定义只是个符号,将符号代入数字即可

11.C语言中不可以嵌套的是()

 

A、选择语句

B、循环语句

C、函数调用

D、函数定义

 

答案:

D

12.C语言中,逻辑"真"等价于()

 

A、非零的整数

B、大于零的整数

C、非零的数

D、大于零的数

 

答案:

C

13.用户定义的函数不可以调用的函数是()

 

A、本文件外的

B、main函数

C、本函数下面定义的

D、非整型返回值的

 

答案:

B

14.以下叙述中正确的是 ()

 

A、C程序中注释部分可以出现在程序中任意合适的地方

B、分号是C语句之间的分隔符,不是语句的一部分

C、花括号“{“和”}”只能作为函数体的定界符

D、构成C程序的基本单位是函数,所有函数名都可以由用户命名

 

答案:

A

15.下面四个选项中,均是不合法的浮点数的选项是()

 

A、-e3  .234   1e3

B、160.  0.12    e3

C、123  2e4.2  .e5

D、-.18  123e4   0.0

 

答案:

C

合法的浮点数有两种表示形式:

  1. 十进制小数形式。他有数字和小数点组成,必须有小数点。例如回(123.)(123.0)(.123)。

  2. 指数形式。如123e3。字母e(或E)之前必须有数字,e后面的指数必须为整数

  3. 规范化的指数形式里面,小数点前面有答且只有一位非零的数字。如1.2345e8

16.假定所有变量均已正确定义,下列程序段运行后x的值是()

  1. k1=1;
  2. k2=2;
  3. k3=3;
  4. x=15;
  5. if(!k1)   x--;
  6. else  if(k2)    x=4;
  7.         else   x=3;

 

A、15

B、14

C、3

D、4

 

答案:

D

17.若变量已正确定义,以下程序段的输出结果是()

  1. x=5.16894;
  2.         printf(“%f\n”, (int)(x*1000+0.5)/(float)1000);

A、5.17000

B、输出格式说明与输出项不匹配,输出无定值

C、5.168000

D、5.169000

 

答案:

D

%f的输出格式是以带小数点的数学形式输出浮点数。首先

计算x*1000,结果为5168.94然后+0.5,结果为5169.44,然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果也为双精度数据5.169,输出时按照%f的格式输出,所以输出结果为5.169000

18.以下选项中合法的实型常数是()

 

A、5E2.0

B、1.3E

C、E-3

D、.2E0

 

答案:

D

19.以下程序执行后输出结果是()

  1.         main()
  2.      {  int i;
  3.         for(i=0; i<3; i++)
  4.            switch(i)
  5.            {  case 1: printf("%d", i);
  6.               case 2: printf("%d", i);
  7.               default : printf("%d", i);
  8.            }
  9.      }

 

 

A、011122

B、120

C、012020

D、012

 

答案:

A

输出结果:011122

进入
for循环
当i为0时,进百入switch语句,不等以1和2,所以执行度default语句,输出0;

i自增1,为1,进入switch语句,等于知1,所以执行case 1语句道,输出1,但是case 1语句后没有内
break语句,所以还要执行case 2语句以及default语句,分别输出一个1,这一次总共容输出3个1

i自增1,为2,进入switch语句,等于2,所以执行case 2语句,输出2,但是case 2后也没有
break语句,所以还要执行default语句,又输出一个2。

所以最后结果就是011122

20.对以下说明语句  int a[10]={6,7,8,9,10};  的正确理解是()

 

A、将5个初值依次赋给a[1]至a[5]

B、将5个初值依次赋给a[6]至a[10]

C、因为数组长度与初值的个数不相同,所以此语句不正确

D、将5个初值依次赋给a[0]至a[4]

 

答案:

D

21.能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是()

 

A、a>=0 | a<=10

B、a>=10 or a<=0

C、a>=10 && a<=0

D、a>=10 || a<=0

 

答案:

D

22.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是()

 

A、int *p=&x;

B、int p=&x;

C、*p=*x;

D、int *p=x;

 

答案:

A

23.字符串指针变量中存入的是()

 

A、第一个字符

B、字符串

C、字符串的首地址

D、字符串变量

 

答案:

C

24.下列字符数组长度为5的是()

 

A、char    c[10]= {'h', 'a', 'b', 'c', 'd'};

B、char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};

C、char  a[]={'h', 'a', 'b', 'c', 'd'};

D、char   d[6]= {'h', 'a', 'b', 'c', '\0' };

 

答案:

C

25.从键盘上输入某字符串时,不可使用的函数是()

 

A、getchar()

B、scanf()

C、fread()

D、gets()

 

答案:

A

getchar函数是字符输入函数,其功能是从键盘上获取一个输入字符

26.以下对整型数组a的正确说明是()

 

A、int  n = 10, a[n];

 

D、int a(10);

 

答案:

C

27.若char a[10];已正确定义,以下语句中不能从键盘上给a数组的所有元素输入值的语句是()

 

A、scanf("%s",a);

B、for(i=0;i<10;i++)a[i]=getchar();

C、a=getchar();

D、gets(a);

 

答案:

C

28.若有说明语句:char c='\72';则变量c()

 

A、说明不合法,c的值不确定

B、包含3个字符

C、包含1个字符

D、包含2个字符

 

答案:

C

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

  1. main()
  2.         {   int  i = 1,  j = 3;
  3. printf(“%d,”, i++);
  4. {   int  i = 0;
  5.     i += j * 2;
  6.     printf(“%d,%d,”, i, j );
  7. }
  8. pritnf(“%d,%d\n”, i, j );
  9.         }

 

A、1,6,3,2,3

B、2,7,3,2,3

C、1,7,3,2,3

D、2,6,3,2,3

 

答案:

A

16,3
2,3,
//1是第一个printf输出的6,3是第二个printf输出的
//2,3是最后的一个printf输出的

追问

请问 i++为什么要在最后一个才加上啊?不在前面加上呢?

追答

  1. 给你举一个例子吧!
  2. int i=1;
  3. int j=1;
  4. int m=i++;
  5. int n=++j;
  6. //最后m的值为1,n的值为2,i、j的值都为2

30.以下对一维整型数组a的正确说明是()

 

A、#define SIZE 10  (换行)  int a[SIZE];

B、int a(10);

C、int n; scanf("%d",&n); int a[n];

D、int n=10,a[n];

 

答案:

A

31.变量p为指针变量,若p=&a,下列说法不正确的是()

 

A、*(p++)==a++

B、&*p==&a

C、(*p)++==a++

D、*&a==a

 

答案:

A

32.C语言允许函数类型缺省定义,此时函数值隐含的类型是()

 

A、long

B、float

C、int

D、double

 

答案:

C

33..若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是()

 

A、1

B、2.0

C、2.5

D、2

 

答案:

B

因为,double是双精度的浮点型,
但3/2=1,除非是3.0/2或者(double)3/2都=1.5,
所以结果为2.0

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

  1. ​​​​​​main()
  2.         {  int  a = 2, b =5;
  3.            printf(“a=%%d,b=%%d\n”,a, b);
  4.         }

A、a=%2,b=%5

B、a=%%d,b=%%d

C、a=%d,b=%d

D、a=2,b=5

 

答案:

C

由于单个的%有别的用处,所以要输出单个%时必须双写成%%,显百然上例中%%d就只输出%d了;按C/C++“贪心法”%%d被解度释成(%%)d而不会解释成%(%d)。如果想达到输内出“%d”的效果,得写成%%%d才可以,这就被解释成(%%)%d了

35.若有定义int a[10],*p=a;,则p+5表示()

 

A、元素a[5]的地址

B、元素a[6]的地址

C、元素a[6]的值

D、元素a[5]的值

 

答案:

A

36.若有说明:int *p,m=5,n;以下正确的程序段是()

 

A、scanf("%d",&n);*p=n;

B、p=&n;*p=m;

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

D、p=&n;scanf("%d",&p);

 

答案:

B

A、scanf("%d",&n);*p=n;
错在*p = n, 因为p指向的空间为
NULL,直接赋值n,会出错

B、p=&n;scanf("%d",*p);
错在scanf,因为是使用的是地址,应该是scanf("%d",p);

C、p=&n;scanf("%d",&p);
同上,抄应该是scanf("%d",p);

D、p=&n;scanf("%d",p);
可以看zd看scanf的使用方法,就知道这个是对的。
前面p = &n, 就是说指针指向了变量n,p就是变量n的地址。

37.下列程序的输出结果为()

  1. main()
  2. {int m=7,n=4;
  3. float  a=38.4,b=6.4,x;
  4. x=m/2+n*a/b+1/2;
  5. printf("%f\n",x);
  6. }

A、28.000000

B、27.500000

C、28.500000

D、27.000000

 

答案:

D

整型 m=7,n=4
浮点自型 a=38.4 b=6.4 x也是浮点型
x=m/2+n*a/b+1/2
其中百m是整度型,m/2=3
n*a/b=24,其中n虽然是整型,但和浮点型一起运算,所以结果是浮点型
最后1/2=0,对没错1是整数2是整数,所以1/2=0无误
于是x=3+24.0000000+0=27.0000000

38.以下所列的C语言常量中,错误的是()

 

A、'\72'

B、0xFF

C、2L

D、1.2e0.5

 

答案:

D

39.int a=1,b=2,c=3; if(a>c)b=a;a=c;c=b;则c的值为()

 

A、3

B、2

C、不一定

D、1

 

答案:

B

if(a>c)b=a为if语句,因为a=1,c=3不成立,未设定else语句,跳出if判定,转而执行a=c;c=b。所以c=b=2

40.C语言中 while 和 do-while 循环的主要区别是()

 

A、while的循环控制条件比 do-while的循环控制条件更严格

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

C、do-while 的循环体不能是复合语句

D、do-while 允许从外部转到循环体内

 

答案:

B

41 .以下程序的执行结果是________.

  1.   main()
  2.   { int  w = 1, x = 2, y = 3, z = 4;
  3.      w =( w < x ) ? x : w;
  4.     w =( w < y ) ? y : w;
  5.          w =( w < z ) ? z : w;
  6.     printf( "%d " , w );}

 

A、2

B、4

C、3

D、1

 

答案:

B

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

 

A、n=*q;

B、p=q;

C、p=n;

D、*p=*q;

 

答案:

C

本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

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

  1. void  prtv(int  *x)
  2. {   printf(“%d\n”, ++*x);   }
  3. main()
  4. {   int  a = 25;
  5.     prtv(&a);
  6. }

 

A、24

B、26

C、23

D、25

 

答案:

B

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

  1. main()
  2.         {  int  a = 2, b =5;
  3.            printf(“a=%%d,b=%%d\n”,a, b);
  4.         }

 

A、a=%2,b=%5

B、a=%%d,b=%%d

C、a=%d,b=%d

D、a=2,b=5

 

答案:

C

45.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是(说明:'\b'是退格符)()

 

A、a\bre\'hi\'y\\\bou

B、re'hi'you

C、abre'hi'y\bou

D、a\bre\'hi\'y\bou

 

答案:

B

输出结果是(百 re'hi'you(回车) )。
一个一个的来看吧

a:输度出字符'a',现在显示:a
\b:退格符,回退一个字符,上面显示的a被回退,现在显示:空
r:输出字符'r',现在显示:r
e:输出字符'e',现在显示问:re
\':
转义字符,输出一答个单引号专',现在显示:属re'
h:输出字符'h',现在显示:re'h
i:输出字符'i',现在显示:re'hi
\':
转义字符,输出一个单引号',现在显示:re'hi'
y:输出字符'y',现在显示:re'hi'y
\\:
转义字符,输出一个反斜杠\,现在显示:re'hi'y\
\b:退格符,回退一个字符,上面显示的反斜杠\被回退,现在显示:re'hi'y
o:输出字符'o',现在显示:re'hi'yo
u:输出字符'u',现在显示:re'hi'you
\n:转义字符,输出字符回车,现在显示:re'hi'you(回车)

46.以下关于运算符优先顺序的描述中正确的是()

 

A、关系运算符<算术运算符<赋值运算符<逻辑运算符

B、赋值运算符<逻辑运算符<关系运算符<算术运算符

C、算术运算符<关系运算符<赋值运算符<逻辑运算符

D、逻辑运算符<关系运算符<算术运算符<赋值运算符

 

答案:

B

sglf

47.下列语句的结果是()

  1. main()
  2. { int j;
  3.    j=3;
  4. printf("%d,",++j);
  5. printf("%d",j++);
  6. }

 

A、3,4

B、4,4

C、4,3

D、3,3

 

答案:

B

48.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()

 

A、6.000000

B、5.500000

C、6

D、6.500000

 

答案:

A

因为(int)a 是强制zd将a转换为int型,可以得到(int)a=5; b是double型,b/b=1.000000;由于版是int与double型相加,会将int型转换为double型再相加,最终得到的答案权是6.000000

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

 

A、3.500000

B、0.000000

C、2.750000

D、2.500000

 

答案:

D

50.若有以下程序段:int a=3,b=4;  a=a^b;b=b^a;a=a^b;则执行以上语句后,a和b的值分别是()

 

A、a=4,b=4

B、a=3,b=3

C、a=3,b=4

D、a=4,b=3

 

答案:

D

51.有定义:char*p1,*p2;则下列表达式中正确合理的是()

 

A、p1/=5

B、p1+=5

C、p1=&p2

D、p1*=p2

 

答案:

C

52.若有定义:int *p[3];,则以下叙述中正确的是()

 

A、定义了一个名为*p的整型数组,该数组含有三个int类型元素

B、定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

C、定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

D、定义了一个基类型为int的指针变量p,该变量具有三个指针

 

答案:

C

53.C语言中,定义结构体的保留字是()

 

A、struct

B、union

C、enum

D、typedef

 

答案:

A

54.设 char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是()

 

A、7

B、6

C、9

D、5

 

答案:

B

6个啊 还有一个结束符 你要理解转义字符整个代表一个普通字符的。也就是和一个普通字符占得字节数一样。而不能只看表面形式

\t
a
\017
b
c
\0

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

  1. main()
  2.         {   int  a[] = {1, 2, 3, 4}, i, x = 0;
  3. for(i = 0;  i < 4;  i++)  {   
  4. sub(a, &x);
  5.  printf(“%d ”, x);   
  6. }
  7. pritnf(“\n”);
  8.         }
  9.          sub(int  *s,  int  *y){   
  10. static  int  t = 3;
  11. *y = s[t];  
  12. t--;
  13.         }

 

A、4 4 4 4

B、0 0 0 0

C、1 2 3 4

D、4 3 2 1

 

答案:

D

56.以下叙述正确的是()

 

A、用do-while构成循环时,只有在while后的表达式为非零时结束循环

B、do-while语句构成的循环不能用其它语句构成的循环来代替。

C、用do-while构成循环时,只有在while后的表达式为零时结束循环

D、do-while语句构成的循环只能用break语句退出。

 

答案:

C

57.对两个数组a和b进行如下初始化:则以下叙述正确的是()

  1. char a[] = “ABCDEF”;
  2. char b[] = {‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};

 

A、a与b中都存放字符串

B、a数组比b数组长度长

C、a与b长度相同

D、a与b完全相同

 

答案:

B

58.以下数值中,不正确的八进制数或十六进制数是()

 

A、-16

B、0x16

C、16

D、0xaaaa

 

答案:

A

59.对于基本类型相同的两个指针变量之间,不能进行的运算是()

 

A、+

B、<

C、=

D、-

 

答案:

A

60.执行下列语句后的结果为()

  1. int x=3,y;
  2. int *px=&x;  
  3. y=*px++;

 

A、x=3,y=4

B、x=3,y不知

C、x=4,y=4

D、x=3,y=3

 

答案:

D

 

二:判断

1.若i =3,则printf("%d",-i++);输出的值为 -4

 

答案:错误

2.表达式 (j=3, j++) 的值是4

 

答案:错误

3.C语言中只能逐个引用数组元素而不能一次引用整个数组

 

答案:正确

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

 

答案:错误

只能用于整型操作数

5.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

 

答案:错误

6.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

 

答案:正确

7.若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6

 

答案:正确

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

 

答案:错误

9.#define 和printf 都不是C语句

 

答案:正确

Printf是标准库里的函数。

#define只是一个宏,在预处理是用,不是语句。

  1. C程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。
  2. C语句可分为以下五类:
  3. 一、表达式语句
  4. 表达式语句由表达式加上分号“;”组成。
  5. 其一般形式为:表达式;执行表达式语句就是计算表达式的值和执行副作用。
  6. 例如: x=y+z;a=520;赋值语句;
  7. y+z;加法运算语句,但计算结果不能保留,无实际意义;
  8. i++; 自增1语句,i值增1
  9. i++; 是先运算i后再加1
  10. ++i; 是先把i值增1后运算。
  11. 包括空语句,函数调用语句在内都属于表达式语句。
  12. 二、标签语句
  13. 标签语句有3种:
  14. 标签名:语句
  15. case 常量表达式:语句
  16. default:语句
  17. 说明:其中case语句和default语句只出现于switch语句中。
  18. 三、循环语句
  19. 循环语句有4种,分别是
  20. while ( expression ) statement
  21. do statement while ( expression ) ;
  22. for ( expression(opt) ; expression(opt) ; expression(opt) ) statement
  23. for ( declaration expressionopt ; expressionopt ) statement
  24. 循环语句用于实现程序的循环流程。
  25. 四、复合语句
  26. 用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如
  27. {
  28. x=y+z;
  29. a=b+c;
  30. printf(“%d%d”,x,a);
  31. }
  32. 是一条复合语句。
  33. 五、跳转语句
  34. 跳转语句有4种,分别是
  35. goto 标签 ;
  36. continue ;
  37. break ;
  38. return 表达式(可选) ;
  39. 跳转语句控制程序跳转到另一处执行。

10.关系运算符<= 与 == 的优先级相同

 

答案:错误

11.若有说明int c;则while(c=getchar());是正确的C语句

 

答案:正确

12.若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11

 

答案:错误

13.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

 

答案:正确

14.while和do…while循环不论什么条件下它们的结果都是相同的.

 

答案:错误

15.char c[]="Very Good"; 是一个合法的为字符串数组赋值的语句

 

答案:正确

16.语句scanf("%7.2f",&a);是一个合法的scanf函数

 

答案:错误

17.如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10};

 

答案:错误

18.x*=y+8 等价于 x=x*(y+8)

 

答案:正确

19.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准

 

答案:正确

20.整数 -32100可以赋值给int型和long int型变量

 

答案:正确

21.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

 

答案:错误

22.如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10}

 

答案:错误

23.函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));中,含有的实参个数是5.

 

答案:错误

24.C语言所有函数都是外部函数.

 

答案:错误

25.#define 和printf 都不是C语句

 

答案:正确

26.循环结构中的continue语句是使整个循环终止执行

 

答案:错误

27.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量

 

答案:正确

28.若有int ⅰ=10, j=0;则执行完语句if (j=0)ⅰ+ +; else ⅰ- -; ⅰ的值为11

 

答案:错误

29.c程序总是从程序的第一条语句开始执行.

 

答案:错误

30.语句scanf("%7.2f",&a);是一个合法的scanf函数

 

答案:错误

31.两个字符串中的字符个数相同时才能进行字符串大小的比较

 

答案:错误

32.7&3+12的值是15

 

答案:错误

33.语句 printf("%f%%",1.0/3);输出为 0.333333

 

答案:错误

34.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准

 

答案:正确

35.若i =3,则printf("%d",-i++);输出的值为 -4

 

答案:错误

36.通过return语句,函数可以带回一个或一个以上的返回值

 

答案:错误

37.int i,*p=&i;是正确的C说明

 

答案:正确

38.a=(b=4)+(c=6) 是一个合法的赋值表达式

 

答案:正确

39.十进制数15的二进制数是1111.

 

答案:正确

40.若 a=3,b=2,c=1 则关系表达式"(a>b)==c" 的值为"真"

 

答案:正确

41.若有说明int c;则while(c=getchar());是正确的C语句

 

答案:正确

42.C语言中"%"运算符的运算对象必须是整型.

 

答案:正确

43.c程序总是从程序的第一条语句开始执行.

 

答案:错误

44.假设有int a[10],  *p;则p=&a[0]与p=a等价

 

答案:正确

45.#define 和printf 都不是C语句

 

答案:正确

46.C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的

 

答案:正确

47.十进制数15的二进制数是1111.

 

答案:正确

48.x*=y+8 等价于 x=x*(y+8)

 

答案:正确

49.若有 int i=10,j=2;则执行完i*=j+8;后ⅰ的值为28

 

答案:错误

50.关系运算符<= 与 == 的优先级相同

 

答案:错误

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

 

答案:错误

52.while和do…while循环不论什么条件下它们的结果都是相同的.

 

答案:错误

53.假设有int a[10],  *p;则p=&a[0]与p=a等价

 

答案:正确

54.字符处理函数strcpy(str1,str2)的功能是把字符串1接到字符串2的后面.

 

答案:错误

55.函数strlen("ASDFG\n")的值是7

 

答案:错误

56.7&3+12的值是15

 

答案:错误

57.表达式 (j=3, j++) 的值是4.

 

答案:错误

58.a=(b=4)+(c=6) 是一个合法的赋值表达式

 

答案:正确

59.语句 printf("%f%%",1.0/3);输出为 0.333333

 

答案:错误

60.若有定义和语句:

int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);

若通过键盘输入:

10,A,12.5,则a=10,c='A',f=12.5.

 

答案:正确

 

三:填空

1.表达式3.5 + 1 / 2的计算结果是_____

 

答案:

空 1:

3.5

2.请写出以下程序的输出结果_____

  1. main()
  2.         {   int  a = 100;
  3. if( a > 100)   printf(“%d\n”, a > 100);
  4. else         printf(“%d\n”, a <= 100);
  5.         }

 

答案:

空 1:

3.表达式(int)((double)(5/2)+2.5)的值是_____.

 

答案:

空 1:

4

4.阅读下面程序,程序执行后的输出结果为_____

  1. #include "stdio.h"
  2. main()
  3. {
  4. char a,b;
  5. for(a=0′,b=9′;a<b;a++,b--)
  6.  printf("%c%c",a,b);
  7. printf("\n");
  8. }

 

答案:

空 1:

0918273645

5.以下程序段的输出结果是_____

  1. int  i = 0, sum = 1;
  2.         do  
  3. {  sum += i++;
  4. } while( i < 5);
  5.         printf(“%d\n”, sum);

 

答案:

空 1:

11

6.以下程序段的输出结果是_____、_____、_____、_____、_____

  1.           int  x = 0177;
  2.         printf(“x = %3d, x = %6d, x = %6o, x = %6x, x = %6u\n”, x, x, x, x, x);

 

答案:

空 1:

x = 127

空 2:

x =    127

空 3:

x =    177

空 4:

x =   7f

空 5:

x =    127

7.以下程序的输出结果是_____

  1. main()
  2. {   int  a = 3, b = 2, c = 1;
  3.     c -= ++b;
  4.     b *= a + c;
  5.     {   int  b = 5, c = 12;
  6.         c /= b * 2;
  7.   a -= c;
  8. printf(“%d, %d, %d, ”, a, b, c );
  9. a += --c;
  10. }
  11. printf(“%d, %d, %d\n”, a, b, c);
  12. }

 

答案:

空 1:

2,5,1,2,3,-2

8.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是_____、最小十进制整数是_____,它们的二进制形式是_____

 

答案:

空 1:

65535

空 2:

-32768

空 3:

1111 1111 1111 1111,1000 0000 0000 0000

9.结构化程序由_______________三种基本结构组成

 

答案:

空 1:

顺序

空 2:

条件分支 【或】 选择

空 3:

循环

10.阅读下面程序,程序执行后的输出结果是_____

  1. #include "stdio.h"
  2. main()
  3. {
  4.  int x,y,z;
  5.  x = 1; y = 2; z = 3;
  6.  if(x>y)
  7. if(x>z)printf("%d",x);
  8. else printf("%d",y);
  9. printf("%d\n",z);
  10. }

 

答案:

空 1

11.请写出以下程序的输出结果_____

  1. main()
  2.         {   int  a = 100;
  3. if( a > 100)   printf(“%d\n”, a > 100);
  4. else         printf(“%d\n”, a <= 100);
  5.         }

 

答案:

空 1:

1

12.对以下数学式,写出三个等价的C语言表达式是_____、_____、_____

                                         

  

答案:

空 1:

a/c/b 【或】 a/(b*c) 【或】 a/b/c

空 2:

a/c/b 【或】 a/b/c  【或】 a/(b*c)

空 3:

a/b/c 【或】 a/c/b  【或】 a/(b*c)

13.表达式3.5 + 1 / 2的计算结果是_____

 

答案:

空 1:

3.5

14.若x为double型变量,请写出运算x = 3.2, ++x后表达式的值_____和变量的值_____

 

答案:

空 1:

4.2

空 2:

4.2

15.以下程序的执行结果是_____

  1. main()
  2. {
  3.    int k=8;
  4.    switch(k)
  5. {
  6.  case  9: k+=1;
  7. case 10: k+=1;
  8. case 11: k+=1; break;
  9. default: k+=1;
  10. }
  11. printf("%d\n",k);
  12. }

 

答案:

空 1:

9

16.若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是_____。请用<CR>代表Enter键

scanf(“%d%c%d%c%d%c%d%c”, &w, &a, &x,&b, &y, &c, &z, &d);

 

答案:

空 1:

10A20B30C40D<CR>

17.以下程序段的输出结果是_____、_____、_____、_____       

  1.      double   a = 513.789215;
  2.         printf(“a = %8.6f, a = %8.2f, a = %14.8f, a = %14.8lf\n”, a, a, a, a);

 

答案:

空 1:

a = 513.789215

空 2:

a =   513.79

空 3:

a =   513.78921500

空 4:

a =   513.78921500

18.以下程序的输出结果是_____

  1. main()
  2. {   int a=0;
  3. a+=(a=8);
  4. printf("%d\n",a);  }

 

答案:

空 1:

16

19.以下程序的执行结果是_____

  1. main()
  2.   {
  3.       int a, b, *p = &a, *q = &b;
  4.       a = 10;
  5.       b = 20;
  6.       *p = b;
  7.       *q = a;
  8.       printf(“a = %d, b = %d\n”, a, b);
  9.   }

 

答案:

空 1:

 a = 20, b = 20

20.以下程序的输出结果是_____

  1. main()
  2.         {   int  x = 2;
  3. while ( x-- );
  4. printf(“%d\n”, x);
  5.         }

 

答案:

空 1:

-1

21.以下程序的执行结果是_____

  1. main()
  2. {
  3.    int k=8;
  4.    switch(k)
  5. {
  6.  case  9: k+=1;
  7. case 10: k+=1;
  8. case 11: k+=1; break;
  9. default: k+=1;
  10. }
  11. printf("%d\n",k);
  12. }

 

答案:

空 1:

9

22.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是_____

 

答案:

空 1:

float  a1 = 1.0, a2 = 1.0;

23.以下程序的输出结果是_____

  1. #define  PR(ar)    printf(“ar = %d  “, ar)
  2. main()
  3. {   int  j, a[] = { 1, 3, 5, 7, 9, 11, 13, 15},  *p = a + 5;
  4.     for(j = 3;  j ; j--)
  5.        switch( j )
  6.        {  case  1:
  7.           case  2:  PR(*p++);  break;
  8.           case  3:  PR(*(--p) );
  9.        }
  10. }

 

答案:

空 1:

ar=9  ar=9  ar=11

24.表达式(int)((double)(5/2)+2.5)的值是_____.

 

答案:

空 1:

4

25.表达式3.5 + 1 / 2的计算结果是_____

 

答案:

空 1:

3.5

26.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为:_____、_____、_____       

  1.     if(a > c)
  2.            b = a; a = c; c = b;

 

答案:

空 1:

3

空 2:

2

空 3:

2

27.阅读下面程序,则执行后程序的结果为_____

  1. #include  "stdio.h"
  2. main()
  3. {
  4. int a=0,b=0;
  5. while(a<15
  6. a++;
  7. while(b++<15);
  8. printf("%d,%d\n",a,b);
  9. }

 

答案:

空 1:

15, 16

28.有以下程序段:

  1. s = 1.0;
  2.         for(k = 1; k <= n; k++)
  3.    s = s + 1.0 / (k * (k + 1));
  4.         printf(“%f\n”, s);
  5. 请填空,使下面的程序段的功能完全与之等同。
  6.         s = 0.0;
  7. _____;
  8.         k = 0;
  9.         do
  10.         {   s += d;
  11.             _____;
  12. d = 1.0 / (k * (k + 1));
  13.         }while(_____ );
  14.         printf(“%f\n”, s);

 

答案:

空 1:

d = 1.0

空 2:

k++

空 3:

k <= n

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

  1. main()
  2.         {   int  x = 2;
  3. while ( x-- );
  4. printf(“%d\n”, x);
  5.         }

 

答案:

空 1:

-1

30.下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0.请填空

  1. main()
  2. { int i, x, y=1;
  3. scanf("%d", &x);
  4. for(i=2; i<= _____; i++
  5. if_____{ y=0; break;}
  6. printf("%d\n", y);
  7. }

 

答案:

空 1:

x / 2

空 2:

!(x % i) 【或】 x % i == 0

31.若x为double型变量,请写出运算x = 3.2, ++x后表达式的值_____和变量的值_____

 

答案:

空 1:

4.2

空 2:

4.2

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

 

答案:

空 1:

1

33.当计算机用两个字节存放一个整数时,其中能存放的最大十进制整数是_____、最小十进制整数是_____,它们的二进制形式是_____

 

答案:

空 1:

65535

空 2:

-32768

空 3:

1111 1111 1111 1111,1000 0000 0000 0000

34.若从键盘输入58,则以下程序输出的结果是_____

  1. main()
  2. {
  3.   int a;
  4. scanf"%d",&a);
  5. if(a>50printf"%d",a);
  6. if(a>40printf"%d",a);
  7. if(a>30printf"%d",a);
  8. }

 

答案:

空 1:

585858

35.请写出与以下表达式等价的表达式是 A)_____B)_____

A)!(x>0)              B)!0

 

答案:

空 1:

x <= 0

空 2:

1

36.以下程序的输出结果是_____

  1. main()
  2. {   int a=0;
  3. a+=(a=8);
  4. printf("%d\n",a);  }

 

答案:

空 1:

16

37.以下程序的执行结果是_____

  1. main()
  2.   {
  3.       int a, b, *p = &a, *q = &b;
  4.       a = 10;
  5.       b = 20;
  6.       *p = b;
  7.       *q = a;
  8.       printf(“a = %d, b = %d\n”, a, b);
  9.   }

 

答案:

空 1:

 a = 20, b = 20

38.运用位运算,能将八进制数0125000除以4,然后赋给变量a的表达式是_____

 

答案:

空 1:

a = 0125000>>2

39.在C语言程序中,用关键字_____定义基本整型变量,用关键字_____定义单精度实型变量,用关键字_____定义双精度实型变量

 

答案:

空 1:

int

空 2:

float

空 3:

double

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

  1. int  i = 0, sum = 1;
  2.         do  
  3. {  sum += i++;
  4. } while( i < 5);
  5.         printf(“%d\n”, sum);

 

答案:

空 1:

11

41.表达式3.5 + 1 / 2的计算结果是_____

 

答案:

空 1:

3.5

42.以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的三种可能的输入形式_____、_____、_____        

  1.    int   k; flaot  a;  double  x;
  2.         scanf(“%d%f%lf”, &k, &a, &x);
  3.         printf(“k = %d, a = %f, x = %f\n”, k, a, x);

 

答案:

空 1:

100 25.81 1.8923

空 2:

100  25.81 1.8923

空 3:

100 25.81 1.8923

43.阅读下面程序,程序执行后的输出结果为_____

  1. #include "stdio.h"
  2. main()
  3. {
  4. char a,b;
  5. for(a=0′,b=9′;a<b;a++,b--)
  6.  printf("%c%c",a,b);
  7. printf("\n");
  8. }

 

答案:

空 1:

0918273645

44.以下程序的输出结果是_____

  1. unsigned  fun6(unsigned  num)
  2.         {   unsigned  k = 1;
  3. do
  4. {   k *= num % 10;
  5.   num /= 10;
  6. } while( num);
  7. return k;
  8.         }
  9. main()
  10. {   unsigned  n = 26;
  11.    printf(“%d\n”, fun6(n));
  12. }

 

答案:

空 1:

12

45.下列程序的功能是输入一个整数,判断其是否是素数,若为素数输出1,否则输出0.请填空

  1. main()
  2. { int i, x, y=1;
  3. scanf("%d", &x);
  4. for(i=2; i<= _____; i++
  5. if_____{ y=0; break;}
  6. printf("%d\n", y);
  7. }

 

答案:

空 1:

x / 2

空 2:

!(x % i) 【或】 x % i == 0

46.设变量a的二进制数是00101101,若想通过运算a^b使a的高4位取反,低4位不变,则b的二进制数应该是_____

 

答案:

空 1:

11110000

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

 

答案:

空 1:

1

48.把a1、a2定义成单精度实型变量,并赋初值1的说明语句是_____

 

答案:

空 1:

float  a1 = 1.0, a2 = 1.0;

49.若表达式(a+b)>c*2&&b!=5||!(1/2)中,a、b、c的定义和赋值为Int   a=3,b=4,c=2; 则表达式的值为_____

 

答案:

空 1:

1

50.以下程序的执行结果是_____

  1. #define PRINT(V)  printf(“V = %d\t”,V)
  2.    main()
  3.    {
  4.       int a, b;
  5.       a = 1; b = 2;
  6.       PRINT(a);
  7.       PRINT(b);
  8. }

 

答案:

空 1:

V = 1  V = 2  

51.当a = 1、b = 2、c = 3时,以下if语句执行后,a、b、c中的值分别为:_____、_____、_____     

  1.       if(a > c)
  2.            b = a; a = c; c = b;

 

答案:

空 1:

3

空 2:

2

空 3:

2

52.下列程序的执行结果是_____

  1. int d = 1;
  2.    fun(int p)
  3.    {   int d = 5;
  4.     d += p++;
  5.     pritnf(“%d “, d);
  6.  }
  7.  main()
  8.  {   int a = 3;
  9.      fun(a);
  10.      d += a++;
  11.      printf(“%d\n”, d);
  12.   }

 

答案:

空 1:

8 4

53.以下程序的输出结果是_____

  1. double  sub(double  x, double  y, double  z)
  2.         {   y -= 1.0;
  3. z = z + x;
  4. return z;
  5.         }
  6.         main()
  7.         {   double  a = 2.5, b = 9.0;
  8. printf(“%f\n”, sub(b - a, a, b));
  9.         }

 

答案:

空 1:

15.500000

54.以下程序段的输出结果是_____

  1.        int   k, n, m;
  2.         n = 10;  m = 1;  k = 1;
  3.         while( k <= n )
  4.   m *= 2;
  5.         printf(“%d\n”, m);

 

答案:

空 1:

无输出结果 【或】 死循环 【或】 死循环无输出结果

55.阅读下面程序,程序执行后的输出结果是_____

  1. #include "stdio.h"
  2. main()
  3. {
  4.  int x,y,z;
  5.  x = 1; y = 2; z = 3;
  6.  if(x>y)
  7. if(x>z)printf("%d",x);
  8. else printf("%d",y);
  9. printf("%d\n",z);
  10. }

 

答案:

空 1:

3

56.函数体由符号_____开始,用符号_____结束

 

答案:

空 1:

{

空 2:

}

57.若k为int型变量且赋值11,请写出运算k++后表达式的值_____和变量的值_____

 

答案:

空 1:

11

空 2:

12

58.将下列数学式改写成C语言的关系表达式或逻辑表达式是 A)_____B)_____

A)a=b或a<c              B)|x|>4

 

答案:

空 1:

a==b || a<c

空 2:

abs(x)>4 【或】 x<-4 || x>4

59.对以下数学式,写出三个等价的C语言表达式是_____、_____、_____

                                           

 

答案:

空 1:

a/c/b 【或】 a/(b*c) 【或】 a/b/c

空 2:

a/c/b 【或】 a/b/c  【或】 a/(b*c)

空 3:

a/b/c 【或】 a/c/b  【或】 a/(b*c)

 

 

四:程序设计题

1.【程序设计】功能:计算出k以内最大的10个能被13或17整除的自然数之 和。(k〈3000)

  1. #include <stdio.h>
  2. #include"conio.h"
  3. void  bky();
  4.   
  5. int fun(int k)
  6. {
  7.   /**********Begin**********/
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   
  14.   /**********  End  **********/
  15.   
  16. }
  17. main()   
  18. {
  19.   int  m;
  20.   printf("Enter m: ");
  21.   scanf("%d", &m);
  22.   printf("\nThe result is %d\n", fun(m));
  23.   bky();
  24. }   
  25. void bky()
  26. {
  27.   FILE *IN,*OUT;
  28.   int s ;
  29.   int t;
  30.   int o;
  31.   
  32.   IN=fopen("in.dat","r");
  33.   if(IN==NULL)
  34.   {
  35.     printf("Read FILE Error");
  36.   }
  37.   OUT=fopen("out.dat","w");
  38.   if(OUT==NULL)
  39.   {
  40.     printf("Write FILE Error");
  41.   }
  42.   for(s=1;s<=5;s++)
  43.   {
  44.     fscanf(IN,"%d",&t);
  45.     o=fun(t);
  46.     fprintf(OUT,"%d\n",o);
  47.   }
  48.   fclose(IN);
  49.   fclose(OUT);
  50. }

 

示例代码:

  1. int a=0,b=0;
  2. while((k>=2)&&(b<10))
  3. {if((k%13==0)||(k%17==0))
  4.   {a=a+k;b++;}
  5.   k--;
  6.      }
  7.      return a;

 

2.【程序设计】功能:将字符串中的小写字母转换为对应的大写字母,其它字符不变

  1. #include "string.h"
  2. #include <stdio.h>
  3. void  bky();
  4. void change(char str[])
  5. {
  6.   /**********Begin**********/
  7.   
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   /**********  End  **********/
  14. }
  15. main()
  16. {
  17.   void change();
  18.   char str[40];
  19.   gets(str);
  20.   change(str);
  21.   puts(str);
  22.   bky();
  23. }
  24. void bky()
  25. {
  26.   FILE *IN,*OUT;
  27.   char i[200];
  28.   IN=fopen("in.dat","r");
  29.   if(IN==NULL)
  30.   {
  31.     printf("Read FILE Error");
  32.   }
  33.   OUT=fopen("out.dat","w");
  34.   if(OUT==NULL)
  35.   {
  36.     printf("Write FILE Error");
  37.   }
  38.   fscanf(IN,"%s",i);
  39.   change(i);
  40.   fprintf(OUT,"%s\n",i);
  41.   fclose(IN);
  42.   fclose(OUT);
  43. }

示例代码:

  1. int i;
  2.     for(i=0;str[i]!='\0';i++)
  3.       if(str[i]>='a' && str[i]<='z')
  4.          str[i]=str[i]-32;

 

3.【程序设计】题目:用while语句求1~100的累计和

  1. void  bky();
  2. int  fun(int n)
  3. {
  4.   
  5.   /**********Begin**********/
  6.   /**********  End  **********/
  7.   
  8. }
  9. void  main()
  10. {  
  11.   int  sum = 0;
  12.   sum=fun(100);
  13.   printf ("sum = %d\n", sum);
  14.   bky();
  15. }
  16. void bky()
  17. {
  18.   FILE *IN,*OUT;
  19.   int i;
  20.   int iIN,iOUT;
  21.   IN=fopen("in.dat","r");
  22.   if(IN==NULL)
  23.   {
  24.     printf("Please Verify The Currernt Dir..it May Be Changed");
  25.   }
  26.   OUT=fopen("out.dat","w");
  27.   if(OUT==NULL)
  28.   {
  29.     printf("Please Verify The Current Dir.. it May Be Changed");
  30.   }
  31.   for(i=0;i<5;i++)
  32.   {        
  33.     fscanf(IN,"%d",&iIN);
  34.     iOUT=fun(iIN);
  35.     fprintf(OUT,"%d\n",iOUT);
  36.   }
  37.   fclose(IN);
  38.   fclose(OUT);
  39. }

示例代码:

  1.  int i=1,sum=0;
  2.   while(i<=n)     
  3.   {
  4. sum=sum+i;    
  5.     i++;    
  6.   }
  7.   return sum;

 

4.【程序设计】功能:求一个四位数的各位数字的立方和

  1. #include <stdio.h>
  2. void VV();
  3.      
  4. int fun(int n)
  5. {
  6.   
  7.   /**********  Begin  **********/
  8.   
  9.   
  10.   
  11.   
  12.   /**********   End  ***********/
  13.   
  14. }
  15. main()
  16. {
  17.   int k;
  18.   k=fun(1234);
  19.   printf("k=%d\n",k);
  20.   VV();
  21. }
  22. void VV()
  23. {
  24.   FILE *IN,*OUT;
  25.   int iIN,iOUT,i;
  26.   IN=fopen("22.IN","r");
  27.   if(IN==NULL)
  28.   {
  29.     printf("Please Verify The Currernt Dir..it May Be Changed");
  30.   }
  31.   OUT=fopen("22.out","w");
  32.   if(OUT==NULL)
  33.   {
  34.     printf("Please Verify The Current Dir.. it May Be Changed");
  35.   }
  36.   for(i=0;i<10;i++)
  37.   {
  38.     fscanf(IN,"%d",&iIN);
  39.     iOUT=fun(iIN);
  40.     fprintf(OUT,"%d\n",iOUT);
  41.   }
  42.   fclose(IN);
  43.   fclose(OUT);
  44. }

示例代码:

  1. int d,k,s=0;
  2. while (n>0)
  3. {
  4.   d=n%10;
  5.   s+=d*d*d;
  6.   n/=10;
  7. }
  8. return s

 

5.【程序设计】/*    请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标, 最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予

主函数中x是数组名, n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

    注意:部分源程序存在文件prog.c中。

    请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. void fun(int  a[],  int  n , int  *max, int  *d )
  5. {
  6.     /**********  Begin  **********/
  7.   
  8.   
  9.   
  10.   
  11.     /**********   End  ***********/
  12. }
  13. void NONO ( )
  14. {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  15.   FILE *fp, *wf ;
  16.   int i,  x[20],  max , index, n = 10, j ;
  17.   fp = fopen("bc06.in","r") ;
  18.   if(fp == NULL) {
  19.     printf("数据文件bc06.in不存在!") ;
  20.     return ;
  21.   }
  22.   wf = fopen("bc06.out","w") ;
  23.   for(i = 0 ; i < 10 ; i++) {
  24.     for(j = 0 ; j < n ; j++) fscanf(fp, "%d,", &x[j]) ;
  25.     fun( x, n , &max, &index);
  26.     fprintf(wf, "Max=%d,Index=%d\n", max, index) ;
  27.   }
  28.   fclose(fp) ;
  29.   fclose(wf) ;
  30. }
  31. main()
  32. { int i,  x[20],  max , index, n = 10;
  33.   srand(time(0));
  34.   for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d", x[i]) ; }
  35.   printf("\n");
  36.   fun( x, n , &max, &index);
  37.   printf("Max =%5d ,  Index =%4d\n",max, index );
  38.   NONO();
  39. }

 

示例代码:

  1. int i,base,subscript;
  2.      base=a[0]; /*假定第一个元素的值最大*/
  3.      subscript=0;  /*subscript用于存放数组下标*/
  4.    for(i=1;i<n;i++) {
  5.        if(a[i]>base) { /*将数组中的其他元素与变量base作比较,如果大于它则交换两者的值*/
  6.            subscript=i;
  7.            base=a[i];
  8.         }
  9.    }
  10.    *max=base; /*将最大值元素的值赋给*max*/
  11.    *d=subscript; /*将最大值元素的下标赋给*d*/

 

6.【程序设计】功能:对某一正数的值保留2位小数,并对第三位进行四舍 五入
 

  1. #include "stdio.h"
  2. #include "conio.h"
  3.   
  4. float fun(float h)
  5. {
  6.   /*********Begin**********/
  7.   
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   /**********  End  **********/
  14.   
  15. }
  16. main()   
  17. {
  18.   float  m;
  19.   void TestFunc();
  20.   printf("Enter m: ");
  21.   scanf("%f", &m);
  22.   printf("\nThe result is %8.2f\n", fun(m));
  23.   TestFunc();
  24.   
  25. }   
  26. void TestFunc()
  27. {
  28.   FILE *IN,*OUT;
  29.   int s ;
  30.   float t;
  31.   float o;
  32.   
  33.   IN=fopen("in.dat","r");
  34.   if(IN==NULL)
  35.   {
  36.     printf("Read File Error");
  37.   }
  38.   OUT=fopen("out.dat","w");
  39.   if(OUT==NULL)
  40.   {
  41.     printf("Write File Error");
  42.   }
  43.   for(s=1;s<=5;s++)
  44.   {
  45.     fscanf(IN,"%f",&t);
  46.     o=fun(t);
  47.     fprintf(OUT,"%8.2f\n",o);
  48.   }
  49.   fclose(IN);
  50.   fclose(OUT);
  51. }

示例代码:

  1. int i;
  2. i=(int)(h*1000)%10;
  3. if(i>=5)
  4.   return(int)(h*100+1)/100.0;
  5. else
  6.   return(int)(h*100)/100.0;

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/169766?site
推荐阅读
相关标签
  

闽ICP备14008679号