沒有必要這麽寫,壹般都不這麽寫的。
以下的程序已經改寫,運行通過,運行截圖中上例是原來的程序,第二次運行是改進後的程序運行的結果:
#include <stdio.h>
#define ?N 80
void fun(char ?s[], int ?n)
{
int ?i, j; char ?ch; for (i=0; i<n-1; i++) for (j=i+1; j<n; j++)if (s[i] < s[j])
{
ch = s[j];
s[j]=s[i];
s[i] = ch;
}
}
main()
{
int ?i = 0, strlen = 0; char ?str[N]; printf("\nInput a string:\n"); gets(str); while (str[i] != '\0') { strlen++; i++; } fun(str, strlen); printf("\n********* display string *********\n"); puts(str);}
在程序算法不變的前提下,程序可以簡化為:
#include <stdio.h>
#include <string.h>/*使用庫函數*/
#define ?N 80
void fun(char ?s[])
{
int ?i, j,n; char ?ch; n=strlen(s); for (i=0; i<n-1; i++) for (j=i+1; j<n; j++)if (s[i] < s[j])
{
ch = s[j];
s[j]=s[i];
s[i] = ch;
}
}
main()
{
int ?i = 0; char ?str[N]; printf("\nInput a string:\n"); gets(str); fun(str); printf("\n********* display string *********\n"); puts(str);}