试题三:阅读以下说明和C代码,回答问题1和问题2,将解答写在答题纸的对应栏内。
【说明1】 下面代码的设计意图是:将保存在文本文件data.txt中的一系列整数(不超过100个)读取出来存入数组arr[ ],然后调用函数sort()对数组arr的元素进行排序,最后在显示屏输出数组arr的内容。 【C代码】
以上C代码中有三处错误(省略部分的代码除外),请指出这些错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行。
参考答案:
解析:
在说明1之后的C代码中有三处错误。第1个错误的源头在第14行对变量fp的定义上。FILE是预定义的一个结构体类型,在C语言程序中,必须通过定义FILE类型的指针变量和文件操作 函数来访问外存文件。因此,第14行的代码应为"FILE *fp;"。第2个错误位于第19行,函数fscanf与scanf函数的用法相同,以整型、浮点型和字符型格式控制方式读取文件中的数据时,需要在获取值的变量 名前加取地址运算符号"&",arr[num++]等同于arr[num],num+=1,而数组元素arr[num]的作用等同于一个变量,因 此,该行的正确代码为"fscanf(fp,"%d",&arr[num++]);"。 第3个错误位于第21行。根据函数sort的定义可知,调用函数sort时第一个实参应该为数组名或对数组元素取地址。因此,该行的正确代码 为"sort(arr, num);"或者"sort(&arr[0], num);"。