您的位置:首页 > 其它

改谭浩强教授《C程序设计题解与上机指导(第二版)》习题10.14

2009-07-28 19:43 260 查看
谭教授的错误程序:

#include <stdio.h>
#include <string.h>

main()
{
void sort();
int i,n;
char *p,num[20];
printf("input n:");
scanf("%d",&n);
printf("please input these numbers:/n");
for(i=0;i<n;i++)
scanf("%d",num+i);
p=&num[0];
sort(p,n);
printf("Now, the sequence is:/n");
for(i=0;i<n;i++)
printf("%d ",num[i]);
printf("/n");
}

void sort(char p,int m)//字符型变量是不能直接与指针变量进行运算的,所以此处的p应改为*p或p[]
{
int i;
char temp,*p1,*p2;
for(i=0;i<m/2;i++)
{
p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}


修改后,正确代码如下:

#include <stdio.h>
#include <string.h>

main()
{
void sort();
int i,n;
char *p,num[20];
printf("input n:");
scanf("%d",&n);
printf("please input these numbers:/n");
for(i=0;i<n;i++)
scanf("%d",num+i);
p=&num[0];
sort(p,n);
printf("Now, the sequence is:/n");
for(i=0;i<n;i++)
printf("%d ",num[i]);
printf("/n");
}

void sort(char p[],int m)
{
int i;
char temp,*p1,*p2;
for(i=0;i<m/2;i++)
{
p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: