麻烦大家给这个程序添加注释啊!!
写一个函数,用“起泡法”对输入的10个字符由小到大顺序排列
#define N 10
char str[N];这里是不是函数说明
main()
{void sort (char str[]);
int i,flag;
for (flag=1;flag==1;)为什么要加个flag=1啊??
{printf("\nInput string:\n");
scanf("%s",&str);
if(strlen(str)>N)
printf("String too long,input again!");
else
flag=0;
}
sort(str);
printf("string sorted:\n");
for (i=0;i<N;i++);
printf("%c",str[i]);
}
void sort(char str[]) 怎么这里又重复出现啊???与上面一样啊!
{int i,j;定义i,j具体指代什么啊???
char t;
for(j=1;j<N;j++)
for(i=0;(u<N-j)&&(str[i]!='\0');i++)
if(str[i]>str[i+1])
{t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
问题点数:0、回复次数:4Top
1 楼angelboycn(这段时间目光瞄准java`)回复于 2003-11-03 19:02:03 得分 0
void sort(char str[]) 怎么这里又重复出现啊???与上面一样啊!
上面是void sort (char str[]);
最后有个分号,这是函数声明。。。
建议楼主去找本基础语法书看看。
int i,j;定义i,j具体指代什么啊???
i,j,k当然是循环变量拉~
建议楼主去找本基础语法书看看。
Top
2 楼yiyepianzhou(一叶扁舟)回复于 2003-11-03 19:06:14 得分 0
#define N 10
char str[N]; //此处定义全局型N个元素的字符数组(或者说是字符串)
main()
{
void sort (char str[]); //定义函数
int i,flag;
for (flag=1;flag==1;) //此处flag=1作用是赋初值,for语句结构是for(*;*;*)这里最后一个*语句省略
{
printf("\nInput string:\n");
scanf("%s",&str);
if(strlen(str)>N)
printf("String too long,input again!");
else
flag=0;
}
sort(str);
printf("string sorted:\n");
for (i=0;i<N;i++);
printf("%c",str[i]);
}
void sort(char str[]) //函数的具体实现部分
{
int i,j; //i,j是临时变量,在循环中使用
char t;
for(j=1;j<N;j++)
for(i=0;(u<N-j)&&(str[i]!='\0');i++)
if(str[i]>str[i+1])
{
t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
//小兄弟应该是程序没有看多少写多少,不过这是开始,以后常上来发发帖子,你会成为高手的:)
//好好干!Top
3 楼gccr(古城痴人)回复于 2003-11-03 19:06:41 得分 0
#define N 10
char str[N];这里是不是函数说明//全局变量
main()
{
void sort (char str[]); //声明函数原型
int i,flag;
for (flag=1;flag==1;)为什么要加个flag=1啊??//加flag是为了判断输入字符串长度 //是否超过N。
{
printf("\nInput string:\n");
scanf("%s",&str);
if(strlen(str)>N) //如果输入的字符串长度过长,重新输入。
printf("String too long,input again!");
else //flag=0时,会跳出这个for循环
flag=0;
}
sort(str); //对所输入的字符串排序
printf("string sorted:\n");
for (i=0;i<N;i++); //打印出排序后的数
printf("%c",str[i]);
}
void sort(char str[]) 怎么这里又重复出现啊???与上面一样啊!//这里的才时真正函数开始
{
int i,j;定义i,j具体指代什么啊???//i是每趟循环所比的位置 j是所要进行的循环的次数
char t;
for(j=1;j<N;j++)
for(i=0;(u<N-j)&&(str[i]!='\0');i++)
if(str[i]>str[i+1])
{
t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
Top
4 楼huizai123()回复于 2003-11-03 19:17:19 得分 0
谢谢大家的帮助啊!!!!!我是初学者!!!!!!!所以才那么菜啊!!!!!!
我会好好的学习啊!!!!!!!!!!!!Top




