全国计算机c语言二级考试题库

阅读: 评论:0

2024年1月30日发(作者:)

全国计算机c语言二级考试题库

全国计算机c语言二级考试题库一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,一、选择题(请在【答题】菜单上选择【选择题】命令,启动选择题测试程序,按照题目上的内容进行答题。作答选择题时键盘被封锁,使用键盘无效,考生须使用鼠标答题。选择题部分只能进入一次,退出后不能再次进入。选择题部分不单独计时。)1、以下程序段中的变量已正确定义for( i=0; i<4; i++,i++ ) for( k=1; k<3; k++ );printf("*" );该程序段的输出结果是(  )。 A. ******** B. **** C. ** D. *【答案】D【解析】for语句在没有"{}"说明时仅仅是跟随其后的第一条语句,即另外一个for语句,第二个for循环有个";"结束,所以整个双重循环将被视为空语句。然后执行下一个顺序语句,即输出语句,只输出一个"*"。答案选择D选项。2、以下合法的转义字符是(  )。 A. 'x41' B. '0x41' C. 'X41' D. '0X41'【答案】A【解析】转义字符以反斜杠''开头,后面跟一个字符或一个八进制或十六进制数表示。十六进制转义字符是由反斜杠''和字母x及随后的1~2个十六进制数字构成的字符序列。答案选择A选项。3、下面描述不属于软件特点的是(  )。 A.

软件是一种逻辑实体,具有抽象性 B.

软件在使用中不存在磨损、老化问题 C.

软件复杂性高 D.

软件使用不涉及知识产权【答案】D【解析】软件具有以下特点:①软件是一种逻辑实体,具有抽象性;②软件没有明显的制作过程;③软件在使用期间不存在磨损、老化问题;④软件对硬件和环境具有依赖性;⑤软件复杂性高,成本昂贵;⑥软件开发涉及诸多的社会因素,如知识产权等。答案选择D选项。4、以下选项中叙述正确的是(  )。 A. C程序必须由main语句开始 B.

函数体必须由{开始

C. C程序中的注释可以嵌套 D. C程序中的注释必须在一行完成【答案】B【解析】函数体是函数首部下面的花括号内的部分,所以函数体必须由{开始,B选项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是main语句,A选项错误。C程序中允许两种注释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D选项错误。函数可以嵌套,注释不能嵌套,C选项错误。答案选择B选项。5、以下叙述中正确的是(  )。 A.

在C语言中,预处理命令行都以“#”开头 B.

预处理命令行必须位于C源程序的起始位置 C. #include 必须放在C程序的开头 D. C语言的预处理不能实现宏定义和条件编译的功能【答案】A【解析】“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A项正确,在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾;C项错误,#include 可以出现在程序的任意一行的开始部位;D项错误,预处理可以实现宏定义、条件编译和文件包含。答案选择A选项。6、下面结构体的定义语句中,错误的是(  )。 A. struct ord {int x;int y;int z;} struct ord a; B. struct ord {int x;int y;int z;}; struct ord a; C. struct ord {int x;int y;int z;} a; D. struct {int x;int y;int z;} a;【答案】A【解析】C语言中结构体变量的定义有三种方法:①定义结构体类型的同时定义结构体变量,如C项;②使用无名结构体类型定义结构体变量,如D项;③先定义结构体类型,后定义结构体变量,如B项,A项错在分别定义结构体类型与结构体变量时需要用“;”隔开。故答案选择A选项。7、以下叙述中正确的是(  )。 A.

在C语言中,预处理命令行都以“#”开头 B.

预处理命令行必须位于C源程序的起始位置 C. #include 必须放在C程序的开头 D. C语言的预处理不能实现宏定义和条件编译的功能【答案】A【解析】“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A项正确,在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾;C项错误,#include 可以出现在程序的任意一行的开始部位;D项错误,预处理可以实现宏定义、条件编译和文件包含。答案选择A选项。8、在源程序的开始处加上“#include ”进行文件引用的原因,以下叙述正确的是(  )。 A. stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数 B.

将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行 C.

将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接 D.

将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接

【答案】A【解析】“stdio.h”文件中包含标准输入输出函数的函数说明,预处理指令#include是指程序可以在该文件中找到printf,scanf等函数,答案选择A选项。9、程序测试的目的是(  )。 A.

为被测程序设计正确的测试用例 B.

发现并改正程序中的错误 C.

发现程序中的错误 D.

改正程序中的错误【答案】C【解析】程序测试是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别,即为发现错误而执行程序的过程,而不是改正错误,调试是在测试的基础上去改正错误。答案选择C选项。10、下面结构体的定义语句中,错误的是(  )。 A. struct ord {int x; int y; int z; } struct ord a; B. struct ord {int x; int y; int z; }; struct ord a; C. struct ord {int x; int y; int z; } a; D. struct {int x; int y; int z; } a;【答案】A【解析】C语言中结构体变量的定义有三种方法:①定义结构体类型的同时定义结构体变量,如C项;②使用无名结构体类型定义结构体变量,如D项;③先定义结构体类型,后定义结构体变量,如B项,A项错在分别定义结构体类型与结构体变量时需要用“;”隔开。故答案选择A选项。11、将E-R图转换为关系模式时,实体和联系都可以表示为(  )。 A.

属性 B.

键 C.

关系 D.

域【答案】C【解析】为了适应数据库的处理,E-R图需要转换到关系模式,其中,实体转换成了元组,实体集和联系都转换成了关系,实体的属性转换为了元组的属性。答案选择C选项。12、有如下程序#include main()

{ int i, *ptr; int array[5] = {5,3,1}; for (ptr=array, i=0; i<5; i++, ptr++) {  if (*ptr == 0)   putchar('X');  else   putchar('A' + *ptr); } printf("n");}

程序运行后的输出结果是(  )。 A. ABCDE B. FFFXX C. FDBBB D. FDBXX【答案】D【解析】对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C语言将自动对余下的元素赋初值,即array={5,3,1,0,0}。程序执行过程为:执行for循环,将数组首地址赋给指针ptr,依次遍历每一个元素,如果数组元素为0则输出'X',如果不为0则按照字母表输出字符'A'后第array[i]个字符。程序运行后的输出结果为:FDBXX,答案选择D选项。13、以下叙述中正确的是(  )。 A.

分支结构是根据算术表达式的结果来判断流程走向的 B.

在C语言中,逻辑真值和假值分别对应1和0 C.

对于浮点变量x和y,表达式:x==y

是非法的,会出编译错误 D.

关系运算符两边的运算对象可以是C语言中任意合法的表达式【答案】D【解析】C语言中,运算符两侧的运算对象可以任意合法的表达式,选项D正确;非0和0分别对应逻辑真值和假值,选项B错;关系运算符“==”两侧的运算对象只要为合法的表达式就可以编译通过,选项C错;分支结构是根据if或者else if后面的圆括号内的表达式(不仅仅是算术表达式,还有赋值表达式、逗号表达式、关系表达式、逻辑表达式等)的值来判定流程走向的,选项A错误;答案选择D选项。14、若有定义:int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是(  )。 A. (x-y==0) B. (x-y<0) C. (x-y>0) D. (x-y<0ǁx-y>0)【答案】D【解析】条件表达式:x=表达式1?表达式2:表达式3,其含义是先求解表达式1,若其值为非0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x。与表达式(x-y)等价的是(x-y<0ǁx-y>0)。答案选择D选项。15、下列关于数据库设计的叙述中,正确的是(  )。 A.

在需求分析阶段建立数据字典 B.

在概念设计阶段建立数据字典 C.

在逻辑设计阶段建立数据字典 D.

在物理设计阶段建立数据字典【答案】A【解析】数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流图中的各个元素做出详细的说明。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。答案选择A选项。16、下面对类-对象主要特征描述正确的是(  )。 A.

对象唯一性 B.

对象无关性

C.

类的单一性 D.

类的依赖性【答案】A【解析】类是对象的抽象具有抽象性、概括性等,对象是类的具体实例,具有标识惟一性、分类性、多态性、封装性、模块独立性。故答案选择A选项。17、下列叙述中正确的是(  )。 A.

有一个以上根结点的数据结构不一定是非线性结构 B.

只有一个根结点的数据结构不一定是线性结构 C.

循环链表是非线性结构 D.

双向链表是非线性结构【答案】B【解析】线性结构应满足:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。有一个以上根结点的数据结构一定是非线性结构,所以A错误。树只有一个根结点,但是树是非线性结构,B项正确。循环链表和双向链表都是线性结构。答案选择B选项。18、关于地址和指针,以下说法正确的是(  )。 A.

通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量 B.

可以取一个常数的地址赋值给同类型的指针变量 C.

可以取一个表达式的地址赋值给同类型的指针变量 D.

可以取一个指针变量的地址赋值给基类型相同的指针变量【答案】A【解析】常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义,C语言也不允许这样做,编译会出错,B项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临时变量的区域,对这块地址进行操作也是没有意义的,C语言不允许这样做,编译会出错,C项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量,D项错误。答案选择A选项。19、栈和队列的共同点是(  )。 A.

都是先进后出 B.

都是先进先出 C.

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

没有共同点【答案】C【解析】栈和队列都是操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。答案选择C选项。20、若要使用C数学库中的sin函数,需要在源程序的头部加上#include 关于引用数学库,以下叙述正确的是(  )。 A.

将数学库中sin函数的源程序插入到引用处,以便进行编译链接 B.

将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行 C.

通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类型 D.

实际上,不引用math.h文件也能正确调用sin函数

【答案】C【解析】考查文件包含处理。文件包含命令的功能是把指定的文件添加到预处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了程序要调用的函数的声明。由此,选项A、B、D表述错误。答案选择C选项。21、有以下程序#include main(){ int a,b; for(a=0; a<3; a++)

 {  scanf("%d", &b);  switch(b)  {   default: printf("%d,", ++b);   case 1: printf("%d,", ++b);   case 2: printf("%d,", ++b);  } }}执行时输入:1 2 3 <回车>,则输出结果是(  )。 A. 2,3,3,4,5,6, B. 2,3,4, C. 2,2,3,4,4,4, D. 2,3,4,3,4,4,【答案】A【解析】考查C语言中的switch-case语句。执行switch-case语句时,一定会先进行匹配,匹配成功则执行当前case语句,再根据是否有break,判断是否继续输出,或是跳出判断。程序中输入1时,与case 1匹配成功,执行后面的输出语句,输出2,且此时b=2,因为后面没有break语句,继续执行下一条输出语句,输出3。继续输入2时,与case 2匹配成功,执行后面的输出语句,输出3。输入3时,没有可匹配的case语句,执行default语句,输出4,b变为4;后面没有break语句,继续执行case 1后的输出语句,输出5,b变为5;同理继续执行case2后面的输出语句,输出6。答案选择A选项。22、有以下程序段,若变量已正确定义并赋值 if(a>b)printf("x=%d,",x); else printf("y=%d,",y); if(a<=b)i++; else j++;则与此程序段功能相同的选项是(  )。 A.

if(a>b){ printf("x=%d,",x); j++}else{ printf("y=%d,",y); i++}

B.

if(a>b){ printf("x=%d,",x); i++}else{ printf("y=%d,",y); j++} C.

if(a<=b){ printf("x=%d,",x); i++}else{ printf("y=%d,",y); j++} D.

if(a>=b){ printf("x=%d,",x); i++}else{ printf("y=%d,",y); j++}【答案】A【解析】程序段执行过程为:如果a>b,输出x,否则输出y;如果a<=b,i加1,否则j加1。A项如果a>b,输出x且j加1,否则输出y且i加1,与题目中功能相同,A项正确。B项如果a>b,输出x且i加1,否则输出y且j加1,与题目中功能不相同,B项错误。C项如果a<=b,输出x且i加1,否则输出y且j加1,与题目中功能不相同,C项错误。D项判断条件为a>=b,多了a=b,D项错误。答案选择A选项。23、以下叙述中正确的是(  )。 A.

数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 B.

一条语句只能定义一个数组 C.

每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 D.

在引用数组元素时,下标表达式可以使用浮点数【答案】C【解析】A项错误,方括号中应当是整型常量表达式,可以使用表达式,只要计算结果是整型常量即可;B项错误,可以使用逗号隔开,来定义多个数组;D项错误,引用数组时,下标必须是自然数,还应保证下标不越界。C项正确,数组内部的变量都是同一类型,在内存中是连续存储的。答案选择C选项。24、以下能正确输出字符a

的语句是(  )。 A. printf("%s", "a"); B. printf("%s",'a'); C. printf("%c", "a");

D. printf("%d",'a');【答案】A【解析】输出函数printf()的一般形式为“printf("格式控制字符串",输出项1,输出项2,…)”,输出项的形式要和格式控制字符串中的格式控制符保持一致,"%s"为输出字符串,"%c"为输出单个字符,"%d"为以十进制形式输出带符号整数,答案选择A选项。25、关于C语言标识符,以下叙述错误的是(  )。 A.

标识符可全部由数字组成 B.

标识符可全部由下划线组成 C.

标识符可全部由小写字母组成 D.

标识符可全部由大写字母组成【答案】A【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。26、以下叙述中正确的是(  )。 A.

语句 int a[][3] = {1,2,4,5};

是错误的初始化形式 B.

语句 int a[4][3] = {1,2,4,5};

是错误的初始化形式 C.

在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 D.

语句 int a[4][3] = {{1,2},{4,5}};

是错误的初始化形式【答案】C【解析】考查二维数组的初始化。初始化二维数组的时候可以对其部分元素赋初值,选项B错。还可以对数组的全部元素赋初值,此时第一维的元素个数可以不指定,也可以分行赋值,只对部分元素赋初值,选项A、D错。C的描述正确,答案选择C选项。27、设有定义:char p[]={'1','2','3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是(  )。 A. sizeof(p) B. sizeof(char) C. sizeof(*q) D. sizenf(p[0])【答案】A【解析】p是char类型数组,sizeof(p)计算的是数组p中所有元素所占用的字节数,而不是char型数据所占字节数。答案选择A选项。28、通常软件测试实施的步骤是(  )。 A.

集成测试、单元测试、确认测试 B.

单元测试、集成测试、确认测试 C.

确认测试、集成测试、单元测试 D.

单元测试、确认测试、集成测试【答案】B【解析】软件测试的实施过程主要有4个步骤:单元测试、集成测试、确认测试(验收测试)和系统测试。答案选择B选项。29、以下定义语句中正确的是(  )。 A. int a=b=0; B. char A=65+1,b='b'; C. float a=1,*b=&a,*c=&b;

D. double a=0.0;b=1.1;【答案】B【解析】A项错误,变量定义的时候不能用连续用等号,等号在定义是初始化的一种;C项错误,b是指针变量,*c=&b表示将一个二级指针赋值给一个一级指针,应该为*c = b或者**c =&b;D项错误,变量前为分号“;”表示前面的语句定义完毕,变量b的定义没有指明变量类型。答案选择B选项。30、设p是指针变量,语句p = NULL;等价于(  )。 A. p = '0'; B. p = ''; C. p = ""; D. p = 0;【答案】D【解析】考查指针变量。p=NULL表示给指针p赋以空指针,NULL为一个符号常量,代表整数0,答案选择D选项。31、以下叙述中正确的是(  )。 A.

不同函数的形式参数不能使用相同名称的标识符 B.

用户自己定义的函数只能调用库函数 C.

实用的C语言源程序总是由一个或多个函数组成 D.

在C语言的函数内部,可以定义局部嵌套函数【答案】C【解析】一个C程序可以有一个或多个程序文件,所以也可以有一个或多个函数,选项C正确;除了main函数不能被其他函数调用之外,用户自定义函数可以调用其他任意函数,包括库函数和用户自定义函数,选项B错误;函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标识符可以相同,选项A错误;函数体内部只可以调用但是不可以定义其他函数,选项D错误;答案选择C选项。32、有以下程序#includemain(){ int b[3][3] = {0,1,2,0,1,2,0,1,2},i,j,t = 1; for(i = 0;i<3;i++)  for(j = i;j <= i;j++)t+=b[i][b[j][i]]; printf("%dn",t);}程序运行后的输出结果是(  )。 A. 4 B. 3 C. 1 D. 9【答案】A【解析】本题中,两层for循环等价于t = t + b[0][b[0][0]] + b[1][b[1][1]] + b[2][b[2][2]] = 1+ b[0][0] + b[1][1] + b[2][2] = 1+0+ 1+ 2 = 4。答案选择A选项。33、面向对象方法中,继承是指(  )。 A.

一组对象所具有的相似性质 B.

一个对象具有另一个对象的性质

C.

各对象之间的共同性质 D.

类之间共享属性和操作的机制【答案】D【解析】继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用,即实现了类之间共享属性和操作。答案选择D选项。34、有以下程序#include main(){ int i,j = 0;

 char a[] = "How are you", b[10] = {0}; for (i=0; a[i]; i++)  if (a[i] == ' ')   b[j++] = a[i+1]; printf("%sn",b);}程序运行后的输出结果是(  )。 A. ay B. Howareyou C. we D. Hay【答案】A【解析】本题的功能是:一旦出现空格,即把空格后面的字符输出。答案选择A选项。35、设有两行定义语句:int scanf;float case;则以下叙述正确的是(  )。 A.

第2行语句不合法 B.

两行定义语句都合法 C.

第1行语句不合法 D.

两行定义语句都不合法【答案】A【解析】预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名,属于预定义标识符,可以被用户重定义,第一行语句合法。C语言关键字是被保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。case是选择结构switch语句中的关键字,不可被用户重定义,第二行语句不合法。答案选择A选项。36、设有定义:double x=2.12;,以下不能完整输出变量x值的语句是(  )。 A. printf("x=%5.0fn",x); B. printf("x=%fn",x); C. printf("x=%lfn",x); D. printf("x=%0.5fn",x);【答案】A

【解析】printf函数控制字符%f输出float类型,%lf输出double类型。格式控制%,表示数据输出总的宽度为m位,其中小数部分占n位。当数据的小数位多于指定宽度n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n时,在小数的右边补零;当m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n指定位数输出。A项按照float格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出x。B项按照float格式输出数据,输出为2.120000。C项按照double格式输出数据,输出为2.120000。D项按照float格式输出数据,保留小数位数为5,输出为2.12000。答案选择A选项。37、设某二叉树的后序序列为CBA,中序序列为ABC,则该二叉树的前序序列为(  )。 A. BCA B. CBA C. ABC D. CAB【答案】C【解析】后序序列为CBA,中序序列为ABC,则说明,A为根结点,并且B和C均在A的右子树上;结点B和C中,后序序列为CB,中序序列为BC,则说明结点C在结点B的右子树上,根据分析可得,该二叉树的前序序列为ABC,答案选择C选项。38、以下叙述中错误的是(  )。 A. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件 B. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 C.

用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D. C语言源程序经编译后生成后缀为.obj的目标程序【答案】B【解析】B项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择B选项。39、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈f顺序是(  )。 A. 12345ABCDE B. EDCBA54321 C. ABCDE12345 D. 54321EDCBA【答案】B【解析】栈是按照“先进后出”的原则组织数据的,入栈的顺序为12345ABCDE,则依次出栈的顺序应为其逆序,即EDCBA54321。答案选择B选项。40、有以下程序:#include#define PT 3.5;#define S(x) PT*x*x;main(){ int a=1,b=2; printf("%4.1fn",S(a+b));}程序运行后的输出结果是(  )。 A. 31.5 B. 7.5 C.

程序有错无输出结果

D. 14.0【答案】C【解析】宏定义是预处理命令,不是C语句,结尾不加";",所以程序会出现编译错误,答案选择C选项。二、程序填空题1、给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数.并通过形参指针n传回所指变量。  例如输入一个数:27638496,新的数:为739。  请在程序的下划线处填八正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANKl.C中。  不得增行或删行,也不得更改程序的结构!/**********code.c**********/#include void fun(unsigned long *n){ unsigned long x=0, i; int t; i=1; while(*n) {  /**********found**********/  t=*n %

①______;  /**********found**********/  if(t%2!=

②______)  {   x=x+t*i;   i=i*10;  }  *n =*n /10; } /**********found**********/ *n=③______;}main(){ unsigned long n=-1; while(n>99999999||n<0) {  printf("Please input(0

三、程序改错题1、给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现的次数。  例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。  请改正程序中的错误,使它能计算出正确的结果。  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!/**********code.c**********/#include int fun (char *str,char *substr){ int i,j,k,num=0; /**********found**********/ for(i = 0, str[i], i++)  for(j=i,k=0;substr[k]==str[j];k++,j++)   /**********found**********/   If(substr[k+1]=='0')   {    num++;    break;   } return num;}void main(){ char str[80],substr[80]; printf("Input a string:") ; gets(str); printf("Input a substring:") ; gets(substr); printf("%dn",fun(str,substr));}/**********-code.c**********/输入答案内容...【答案】  (1)错误:for(i=0,str[i],i++)  正确:for(i=0;str[i];i++)  (2)错误:If(substr[k+1]=='0')  正确:if(substr[k+1]== '0')【解析】  错误1:循环条件for(i = 0, str[i], i++),不难发现此处for循环语句的格式有误,其中表达式之间应以“;”相隔。  错误2:if条件语句处的关键字书写错误。四、程序设计题1、学生的记录由学号和成绩组成,N名学生的数据已在主函数中敲入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。  注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。/**********code.c**********/#include #define N 16typedef struct{ char num[10]; int s;}STREC;void fun( STREC a[] )

{ STREC tmp; int i,j; for(i = 1; i < N; i++)  for(j = 0; j < N-1; j++)  {   /*

请按题目要求,完成一下代码*/  }}void main(){ STREC s[N] = {{"GA005",85}, {"GA003",76}, {"GA002",69}, {"GA004",85}, {"GA001",91}, {"GA007",72}, {"GA008",64}, {"GA006",87}, {"GA015",85}, {"GA013",91}, {"GA012",64}, {"GA014",91}, {"GA011",66}, {"GA017",64}, {"GA018",64}, {"GA016",72}}; int i; FILE *out ; fun(s); printf("The data after sorted :n"); for(i=0;i

  if((i)%4==0 )printf("n");  printf("%s %4d ",s[i].num,s[i].s); } printf("n"); out = fopen("","w"); for(i=0;i

全国计算机c语言二级考试题库

本文发布于:2024-01-30 13:20:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170659200320293.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:答案   函数   输出   定义
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23