二级C语言笔试379-真题(含答案与解析)-交互_第1页
二级C语言笔试379-真题(含答案与解析)-交互_第2页
二级C语言笔试379-真题(含答案与解析)-交互_第3页
二级C语言笔试379-真题(含答案与解析)-交互_第4页
二级C语言笔试379-真题(含答案与解析)-交互_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级C语言笔试379(总分100,做题时间90分钟)一、选择题1.

语句“printf("a\bhow\'are\'y\\\bou\n");”的输出结果是(

)。A

a\bhow\'are\'y\\bouB

a\bhow\'are\'y\bouC

how'are'youD

ahow'are'y\bou

分值:2答案:C[解析]“\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\b'’

格式符前面的字母不能输出;“\'”格式符表示输出单引号字符;“\\”格式符表示输出反斜线字符。2.

下列程序中c的二进制值是(

)。

chara=2,b=4,C;

c=a^b>>2;A

00000011B

00010100C

00011100D

00011000

分值:2答案:A[解析]本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。3.

下列描述中正确的是(

)。A

软件工程只是解决软件项目的管理问题B

软件工程主要解决软件产品的生产率问题C

软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D

软件工程只是解决软件开发过程中的技术问题

分值:2答案:C[解析]软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。4.

两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是(

)。

main()

{

intx;

scanf("%d",&x);

if(x++>2)printf("%d",x);

elseprintf("%d\n",x--);

}A

4和2B

4和1C

4和0D

3和1

分值:2答案:A[解析]本题考查ifelse语句。首先scanf函数通过键盘读入x的值。,当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。5.

下列合法的字符型常量是(

)。A

'\x13'B

'\081'C

'65'D

"\n"

分值:2答案:A[解析]C语言的字符常量是用单引号(')括起来的一个字符,也可以用以一个“\”开头的字符序列来表示字符常量。其中形式\ddd表示1到3位8进制数所代表的字符;形式\xhh表示1到2位16进制数所代表的字符。在本题中'\x13'表示回车符,是一个字符常量;而'\081'用8进制数所代表的字符形式不正确,因为8进制数所表示的字符中不会出现数字“8”;'65'单引号(即撇号)括起来的不是一个字符,而是一个+进制数字:"\n"是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。6.

下列程序段的运行结果是(

)。

#include<stdio.h>

voidmain()

{

charstr[]="ABC",*p=str;

printf("%d\n",*(p+3));

}A

67B

0C

字符'C'的地址D

字符'C'

分值:2答案:B[解析]先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],又因为字符型数组在存放字符串时会自动在末尾加上'\0',所以*(p+3)=0。7.

下列程序的输出结果是(

)。

#include<stdio.h>

main()

{

stmctst

{

inty,x,z;

};

union

{

longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(stmctst),sizeof(un));

}A

6,2B

6,4C

8,4D

8,6

分值:2答案:B[解析]本题主要考查结构体和联合内存使用的区别:结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立;联合所占用的内存空间为最长的成员所占用的空间。8.

下列说法不正确的是(

)。A

C程序是以函数为基本单位的,整个程序由函数组成B

C语言程序的一条语句可以写在不同的行上C

C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D

C程序的每个语句都以分号结束

分值:2答案:C[解析]本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;⑧注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。9.

下列程序的运行结果是(

)。

#include<stdio.h>

#include<string.h>

main()

{

char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}A

正数B

负数C

零D

不确定的值

分值:2答案:A[解析]本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。②strcmp(s1,s2)的返回值,当str1<str2时,返回值<0:当str1=str2时,返回值为0;当str1>str2,返回值>0。10.

设有下列定义:

structsk

{

intm;

floatx;

}data,*q;

若要使q指向data中的m域,正确的赋值语句是(

)。A

q=&datm;B

*q=datm;C

q=(structsk*)&datm;D

q=(structsk*)datm;

分值:2答案:C[解析]利用强制类型转换(streetsk*),把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。11.

下列4个关于C语言的结论中错误的是(

)。A

可以用do…while语句实现的循环一定可以用while语句实现B

可以用for语句实现的循环一定可以用while语句实现C

可以用while语句实现的循环一定可以用for语句实现D

do…while语句与while语句的区别仅是关键字“while”出现的位置不同

分值:2答案:D[解析]本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。12.

待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第(

)个位置。A

3B

5C

7D

9

分值:2答案:B[解析]快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。13.

分值:2答案:C[解析]带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:预处理程序将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。14.

数据库系统的核心是(

)。A

数据模型B

数据库管理系统C

数据库D

数据库管理员

分值:2答案:B[解析]数据库系统由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等工作。15.

栈和队列的共同点是(

)。A

都是先进先出B

都是先进后出C

只允许在端点处插入和删除元素D

没有共同特点

分值:2答案:C[解析]栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。16.

下列程序段的输出结果为(

)。

#include<stdio.h>

main()

{

staticchara[]="language";

char*p;

p=a;

for(p=a;p<a+8;p+=2)

putchar(*p);

}A

languageB

lnugC

有语法错误D

lang

分值:2答案:B[解析]本程序首先定义了静态字符数组a,然后将指针p指向数组a的首地址。

第1次for循环,p=a,p指向数组的第1个元素,*p是取指针p所指地址的内容,输出1;第2次for循环,p=p+2,则p指向数组的第3个元素,*p是取指针p所指地址的内容,输出n;第3次for循环,p=p+2,则p指向数组的第5个元素,*p是取指针p所指地址的内容,输出u;第4次for循环,p=p+2,则p指向数组的第7个元素,*p是取指针p所指地址的内容,输出g,结束循环。17.

下列二维数组初始化语句中,不正确的是(

)。A

intb[][2]={1,2,3,4,5,6,7};B

intb[3][5]={0,0,0};C

intb[][4]={{1,2},{3,4,5},{6}};D

intb[3][2]={(1,2),(3,4),(5,6)};

分值:2答案:D[解析]在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式:赋的初值不能多于事先定义好的数组元素个数。选项D)赋值表达式中对每一维的元素赋初值应用{},而不是()。18.

源程序的文档化不包括(

)。A

符号名的命名要有实际意义B

正确的文档形式C

良好的视觉组织D

正确的程序注释

分值:2答案:B[解析]源程序的文档化主要包括3点:①符号名应具有一定实际的含义,便于理解程序功能;②正确的程序注释;⑧良好的视觉组织(利用空格、空行、缩进等技巧使程序层次清晰)。19.

下列程序的运行结果是(

)。

main()

{

inta=-5,b=1,c=1;

intx=0,y=2,z=0;

if(c>0)x=x+y;

if(a<=0)

{

if(b>0)

if(c<=0)y=x-y;

}

elseif(c>0)y=x-y;

elsez=y;

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

}A

2,2,0B

2,2,2C

0,2,0D

2,0,2

分值:2答案:A[解析]本题考查ifelse语句的使用。

先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个汀语句的条件均不满足,不执行任何语句退出,在这个过程中y和x的值没有发生变化。20.

数据的存储结构是指(

)。A

数据所占的存储空间B

数据的逻辑结构在计算机中的存放形式C

数据在计算机中的顺序存储方式D

存储在计算机外存中的数据

分值:2答案:B[解析]数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。21.

若有说明inta[][3]={0,0};,则不正确的叙述是(

)。A

数组a的每个元素的初值都是0B

数组a的第一维大小为1C

数组a的行数为1D

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

分值:2答案:D[解析]本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。②二维数组第一维的大小由下列规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小:所得商数+1。22.

已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是(

)。A

scanf("%3d,%3d,%3d",&i,Aj,&;B

scanf("%d,%d,%d",&i,&j,&;C

scanf("%d%d%d",&i,&J,&;D

scanf("i=%d,j=%d,k=%d",&i,&j,&;

分值:2答案:B[解析]scanf函数的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。

若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。23.

下列叙述中正确的是(

)。A

算法的执行效率与数据的存储结构无关B

算法的空间复杂度是指算法程序中指令(或语句)的条数C

算法的有穷性是指算法必须能在执行有限个步骤之后终止D

以上三种描述都不对

分值:2答案:C[解析]算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。24.

若变量已正确定义,下列正确的程序段是(

)。A

while(ch=getchar()=='\N')putchar(c;B

while((ch=getchar())=='\n')putchar(c;C

while((ch=getchar())!='\N')putchar(c;D

while((ch=getchar())!='\n')putchar(c;

分值:2答案:D[解析]本题考查两个知识点:①C语言用'\n'这个字符常量表示换行:②getchar函数的作用是从终端输入一个字符,当遇到换行时结束输入。25.

下列程序的输出结果是(

)。

#include<stdio.h>

intfun(intx)

{

inta;

if(x==0‖x==1)

return3;

else

a=x-fun(x-2);

returna;

}

voidmain()

{

printf("%d",fun(7));

}A

2B

8C

9D

5

分值:2答案:A[解析]本题考查函数的递归调用。在函数递归调用时,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的计算结果为2。26.

若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是(

)。

w=2,x=3,y=4,z=5;

m=(w<x)?W:x:

m=(m<z)?m:Z;

m=(m<y)?m:y;A

2B

3C

5D

4

分值:2答案:A[解析]条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,当a为假时,其值等于表达式c的值。

表达式运算过程:第1个表达式:w=2<x=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2<z=5为真,所以返回m的值,即m=2;第3个表达式:w=2<y<4为真,所以返回m的值,即m=2。27.

有下列函数定义:

intfun(doublea,doubleB)

{returna*b;}

若下列选项中所用变量都已正确定义并赋值,错误的函数调用是(

)。A

if(fun(x,){……}B

z=fun(fun(x,,fun(x,);C

z=fun(fun(x,x,;D

fun(x,;

分值:2答案:C[解析]本题考查函数调用时的参数传递。C项中第一个参数的表达式不正确,因此不能得到正确的结果。28.

下列标识符不是关键字的是(

)。A

breakB

charC

SwitchD

return

分值:2答案:C[解析]break、char、return、switch都是C语言中的关键字,Switch不是。因为C语言区分字母的大小写。29.

标准库函数fgets(s,n,file)的功能是(

)。A

从文件file中读取长度为n的字符串存入字符数组s中B

从文件file中读取长度不超过n-1个字符的字符串放到字符数组s中C

从文件file中读取n个字符串存入字符数组s中D

从文件file中读取长度为n-1个字符的字符串存入字符数组s中

分值:2答案:B[解析]字符串输入函数fgets()的调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针;“n”为要读取的最多的字符个数;“fp”是指向该文件的文件型指针。

fgets函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串放到字符数组s中;读入字符串后会自动在字符串末尾加入“'\0'”结束符,表示字符串结束。30.

下列叙述中正确的是(

)。A

break语句只能用于switch语句体中B

continue语句的作用是使程序的执行流程跳出包含它的所有循环C

break语句只能用在循环体内和switch语句体内D

在循环体内使用break语句和continue语句的作用相同

分值:2答案:C[解析]只能在循环体内和switch语句体内使用break语句。当break出现在循环体的switch语句体内时,其作用只是跳出该switch语句体,并不能中止循环体的执行。若想强行中止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。31.

下列程序的运行结果是(

)。

#include<stdio.h>

voidfun(int*s,int*p)

{

staticintt=3;

*p=s[t];

t--;

}

voidmain()

{

inta[]={2,3,4,5},k;

intx;

for(k=0;k<4;k++)

{

fun(a,&x);

printf("%d,",x);

}

}A

5,4,3,2B

2,3,4,5,C

2,2,2,2,D

5,5,5,5,

分值:1答案:A[解析]分析fun函数程序段,可知fun函数要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数组x,最后输出x数组。32.

下列选项中不合法的+六进制数是(

)。A

OxffB

OXllC

OxlgD

OXabc

分值:1答案:C[解析]+六进制是以“0x”或“0X”开头的字符串,字符串中只能含有0~9这10个数字和a、b、c、d、s、f这6个字母。33.

分值:1答案:D[解析]由题意可知,小写字符a和大写字符A的ASCⅡ代码相差为32,所以选项C)能将大写字符c的ASCⅡ代码转换为小写字符c的ASCⅡ代码:选项A)和C)左侧的表达式都是大写字符c与大写字符A的差与'a'的ASCⅡ代码的和就是小写字符c的ASCⅡ代码。而选项D)中应该是加上'a',而不是减去'a'。34.

对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为(

)。A

125B

n/2C

nD

n+1

分值:1答案:C[解析]对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。35.

有下列函数:

intfun(char*S)

{char*t=s;

while(*t++);

return(t-s);

}

该函数的功能是(

)。A

比较两个字符串的大小B

计算s所指字符串占用内存字节的个数C

计算s所指字符串的长度D

将s所指字符串复制到字符串t中

分值:1答案:C[解析]在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。36.

下列程序的执行结果是(

)。

#include<stdio.h>

main()

{

inta,b,c;

a=b=2;

c=(a++)-1;printf("%d,%d",a,c);

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

}A

3,14,1B

3,14,2C

2,04,1D

2,14,1

分值:1答案:A[解析]本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。

本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),

c=1+(-3)+3=1,

此时a=4,b=3。37.

为了提高软件模块的独立性,模块之间最好是(

)。A

控制耦合B

公共耦合C

内容耦合D

数据耦合

分值:1答案:D[解析]耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。38.

有下列二叉树,对此二叉树中序遍历的结果为(

)。

A

ABCDEFB

BDAECFC

ABDCEFD

ABCDFE

分值:1答案:B[解析]对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。39.

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

)。A

函数定义时在函数首部所说明的函数类型B

return语句中表达式值的类型C

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

函数定义时形参的类型

分值:1答案:A[解析]在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换。即函数类型决定返回值的类型。40.

判断字符串s1是否大于字符串s2,应该使用(

)。A

if(strcmp(s1,s2)<0)B

if(s1>s2)C

if(strcmp(s2,s1)<0)D

if(strcmp(s1,s2))

分值:1答案:C[解析]本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。二、填空题1.

在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

分值:2答案:前后件关系[解析]在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。2.

按照“先进先出”的原则组织数据的结构是______。

分值:2答案:队列[解析]队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。3.

深度为5的满二叉树中,叶子结点的个数为______。

分值:2答案:16

[解析]满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。4.

在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

分值:2答案:类[解析]在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。5.

Jackson方法是一种面向______的结构化方法。

分值:2答案:数据结构[解析]Jackson方法是一种结构化分析方法,它是一种面向数据结构的结构化方法。6.

若a是血型变量,则表达式(a=2*3,a*2),a+6的值为______。

分值:2答案:12[解析]本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。

本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。7.

表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

分值:2答案:整型[解析]上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。8.

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

intn='C';

switch(n++)

{

default:printf("error");break;

case'a':printf("good");break;

case'C':printf("moming");

case'd':printf("class");

}

分值:2答案:morningclass[解析]本题考查了两个知识点:①“++、--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c':”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。9.

写出下列程序的输出结果______。

main()

{

intn=0;

while(n++<=1);

printf("%d,",n);

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

}

分值:2答案:3,3[解析]本题在while(n++<=1”语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做;n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=0<=1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件a++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3。退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但输出的是3。10.

下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{

charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

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

}

分值:2答案:(c=getchar())!='\n'[解析]分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\n'。11.

下列程序输出的结果是______。

intm=17;

intfun(intx,inty)

{

intm=3;

return(X*y-m);

}

main()

{

inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

分值:2答案:1[解析]本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。

本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论