|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 小飞侠 于 2011-6-19 16:44 编辑
问题在代码的注释里(望大家帮助,很费解~~);- #include <stdio.h>
- #include <stdlib.h>
- void sort(int a[],int n, char style);
- int main()
- {
- int a[60] , i , count = 0 , number = 0;
- char style ;
- printf("\n请输入有多少人数(number<60):\n");
- scanf("%d" , &number);
- printf("\n请输入学生的分数 :\n");
- for(i = 0 ; i < number ; i++)
- scanf("%d" , &a[i]);
- printf("\n请问你希望怎样对成绩进行排列(a:升序 / d:降序):\n");
- scanf(" %c" , &style);//注意" %c" %c前得空格;
- sort(a , number , style);
- for(i = 0 ; i < number ; i++)
- {
- printf("%4d" , a[i]);
- }
- printf("\n");
- system("pause");
- }
- void sort(int a[] , int n , char style)
- {
- void ascending(int *p , int n);
- void descending(int *p , int n);
- if('d' == style)
- {
- descending(a , n);
- }
- else
- if('a' == style)
- {
- ascending(a , n);
- }
- else
- {
- printf("\n输入有误!!!....\n");
- }
- }
- void ascending(int *p , int n)
- {
- int i , j , temp;
- printf("\n好的!我们将按照 升序 将成绩进行排列:\n");
- for(i = 0 ; i < n ; i++)
- {
- for(j = 0 ; j < n-i-1 ; j++) //注意这里的j < n-i-1;只有这种情况是可行的;
- {
- if(*(p+j) > *(p+j+1))
- {
- temp = *(p+j);
- *(p+j) = *(p+j+1);
- *(p+j+1) = temp;
- }
- }
- }
- }
- void descending(int *p , int n)
- {
- int i , j , temp;
- printf("\n好的我们将按照 降序 将成绩进行排列:\n");
- for(i = 0 ; i < n ; i++)
- {
- for(j = 0 ; j <= n-i ; j++)//你会发现以下两种情况都是可行的:j<n-i & j<=n-i; 误解中求解答;
- {
- if(*(p+j) < *(p+j+1))
- {
- temp = *(p+j);
- *(p+j) = *(p+j+1);
- *(p+j+1) = temp;
- }
- }
- }
- }
复制代码
|
|