求C语言高手帮我看看这道题怎么做!

阅读以下说明和C代码,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明1】下面代码的设计意图是:将保存在文本文件data.txt中的一系列整数(不超过100个)读取... 阅读以下说明和C代码,回答问题1和问题2,将解答写在答题纸的对应栏内。
【说明1】
下面代码的设计意图是:将保存在文本文件data.txt 中的一系列整数(不超过100个)读取出来存入数组arr[],然后调用函数sort()对数组arr 的元素进行排序,最后在显示屏输出数组arr 的内容。
【C代码】
行号 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include<stdio.h>
void sort(int a[], int n) {/*对n个元素的整型数组a按递增方式排列*/
/*此处代码省略*/
return;
}

int main(){
int i, num = 0;
int arr[100];
FILE fp;
fp = fopen("data.txt", "r");
if (!fp)
return -1;
while(!feof(fp)) {
fscanf(fp, "%d", arr[num++]);
}
sort(arr[], num);
for(i=0; i < num; )
fprintf(stdout, "%d ", arr[i++]);
fclose(fp);
return 0;
}
【问题1】(9分)
以上C 代码中有三处错误(省略部分的代码除外),请指出这些错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行。
【说明2】
下面是用C语言书写的函数get_str 的两种定义方式以及两种调用方式。
定义方式1 定义方式2
void get_str(char* p)
{
p = (char *) malloc(1+sizeof("testing"));
strcpy(p, "testing");
} void get_str(char** p)
{
*p =(char *) malloc(1+sizeof("testing"));
strcpy(*p, "testing");
}

调用方式1 调用方式2
int main( )
{
char* ptr = NULL;
get_str(ptr);
if (ptr)
printf("%s\n", ptr);
else
printf("%p\n", ptr); /* 输出指针的值*/
return 0;
} int main( )
{
char* ptr = NULL;
get_str(&ptr);
if (ptr)
printf("%s\n", ptr);
else
printf("%p\n", ptr);
return 0;
}
【问题2】(6分)
若分别采用函数定义方式1、2 和调用方式1、2,请分析程序的运行情况,填充下
面的空(1)~(3)。
若采用定义方式1 和调用方式1,则输出为“00000000”。
若采用定义方式1 和调用方式2,则(1) 。
若采用定义方式2 和调用方式1,则(2) 。
若采用定义方式2 和调用方式2,则(3) 。
问题1 行号 解答

问题2 编号 解答
(1)
(2)
(3)
展开
 我来答
jimmyc2006
2010-12-31 · TA获得超过1153个赞
知道小有建树答主
回答量:572
采纳率:100%
帮助的人:708万
展开全部
【问题1】
FILE fp;改为FILE *fp;
fscanf(fp,"%d",arr[num++]);改为fscanf(fp,"%d",&arr[num++]);
fprintf(stdout,"%d ",arr[i++]);没有这种用法,应改为printf("%d ",arr[i++]);
【问题2】
(1)输出为“00000000”
(2)报错
(3)输出为“testing”
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式