问题 问答题

[说明1]

下面代码的设计意图是:将保存在文本文件data.txt中的一系列整数(不超过100个)读取出来存入数组arr[],然后调用函数sort()对数组arr的元素进行排序,最后在显示屏输出数组arr的内容。

[C代码]

以上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);”。

选择题
单项选择题 B型题