1[填空题]请补充主函数main(),该函数的功能是:把从键盘输人的3个整数按从小到大输出。
例如,输入“50 60 40”,结果输出“40 50 60”。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在横线上填人所编写的若干表达式或语句。
试题程序:
参考解析:
【1】x>y【2】x>z【3】y>z【解析】由程序最后的输出可知变量x 中存放3个整数中最小的,变量2中存放3个整数中最大的。当x大于y时,变量x和y互换,因此,【1】处填x>y。当x大于2时,变量x和z互换,因此,【2】处填x>z。当y大于z时,变量y和z互换,因此’【3】处填y>z。
2[简答题]下列给定的程序中,函数proc()的功能是:将str所指字符串中出现的t1所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。
例如,当str所指字符串中所指的内容为abcdabcdef9,t1所指字符串中的内容为bc,t2所指字符串中的内容为11时,结果在w所指的数组中的内容应为alldalldefg。请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
(1)错误:int proc(char*str,char*t1,char*t2,char*w)
正确:void proc(char*str,char*t1.char*t2,char*w)
(2)错误:while(r)
正确:while(*r)
(3)错误:r++
正确:r++;
【解析】:由主函数中proc()函数的调用以及proc()函数的定义,可知该函数没有返回值,因此把proc()前的“int”改为“void”;由proc()函数可知,变量r指向的是字符串t1地址,while循环要判断的是字符串tl是否结束,因此,“while(r)”应改为“while(*r)”;C语言中,每一条语句都以分号结束,因此。“r++”后要加上分号。
3[单选题]以下叙述中正确的是
A.在c语言中,逻辑真值和假值分别对应1和0
B.关系运算符两边的运算对象可以是C语言中任意合法的表达式
C.对于浮点变量x和y,表达式:x==y是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
参考答案:B
参考解析:A选项中,在c语言中,逻辑真值对应非0;C选项中,表达式:x==y是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。
4[简答题]下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
参考解析:
(1)错误:*t=calloe(m,sizeof(STU));
正确:(struct ss*)calloc(m,sizeof(STU));
(2)错误:for(i=j=0;i
正确:for(i=j=0;i
(3)错误:t[k].s=b[j].s;
正确:t[k]=b[j];
【解析】由函数proc()可知,变量t是指向动态存储空间的变量,因此不能间接访问运算符,而函数calloc的返回值类型为void*,要进行显式类型转换,因此“*t=calloc(m,si-zeof(STU));”应改为“(struct ss*)calloc(m,sizeof(STU));”。
由程序可知,变量i为控制学生个数的变量,因此“for(i=j=
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |