| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 819 人关注过本帖
标题:指针运用及函数调用,求高手指教!!!
只看楼主 加入收藏
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
结帖率:69.23%
收藏
已结贴  问题点数:5 回复次数:14 
指针运用及函数调用,求高手指教!!!
编写子函数,实现将一个二维字符数组中的每一个字符串的字符按升序重新排列。要求能初始化输入字符串数组并输出。主函数只能调用一次子函数
2011-06-20 21:59
H675534537
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2011-5-5
收藏
得分:1 
不懂,帮顶起!
2011-06-20 23:05
c564794923
Rank: 2
等 级:论坛游民
帖 子:64
专家分:95
注 册:2011-5-25
收藏
得分:1 
程序代码:
#include "stdio.h"
#include "stdlib.h"
main()
{
     // void insort(int s[],int n);
      int a[11],i;
      printf("please input 10 numbers:\n");
      for(i=1;i<=10;i++)
      scanf("%d",&a[i]);
      printf("the original order:\n");
      for(i=1;i<=10;i++)
      printf("%4d",a[i]);
      printf("\nthe sorted numbers:\n");
      insort(a,10);
      for(i=1;i<=10;i++)
      printf("%4d",a[i]);
      printf("\n");
      system("pause");
      }
     

      void insort(int s[],int n)
      {
           int i,j;
           for(i=2;i<=n;i++)
           {
                            s[0]=s[i];//s[0]为监视哨

                            for(j=i-1;s[j]>s[0];j--)
                            s[j+1]=s[j];
                            s[j+1]=s[0];//确定位置插入s[i]

                            }
                            }

2011-06-21 08:38
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
程序代码:
//对M行N列数组做升序排列
        for(i=0;i<M;i++) {
                for(j=0;j<N;j++) {
                        for(l=i;l<M;l++) {
                                for(k=j;k<N;k++) {
                                        if(a[i][j]>a[l][k]) {
                                                temp=a[i][j];
                                                a[i][j]=a[l][k];
                                                a[l][k]=temp;
                                        }
                                }
                        }
                }
        }

不会用指针处理二维数组

[ 本帖最后由 ansic 于 2011-6-21 10:34 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-21 10:31
icysky
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:1 
既然是主函数只能调用一次子函数   那么应该把二维字符数组作参数  传递给子函数   
然后子函数 (*P)[n]一行行的处理

不管怎么走、总有一个终点...
2011-06-21 10:37
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
程序代码:
#include <stdio.h>

void sort_chars(char * s, int max_length, int cnt) {
    char * p, * q, c;
    for (; cnt-- > 0; s += max_length) {
        for (p = s; *p; p++) {
            for (q = p + 1; *q; q++) {
                if (*p > *q) {
                    c = *p;
                    *p = *q;
                    *q = c;
                }
            }
        }
    }
}

int main() {
    char s[100][100];
    int n, i;
    printf("How many strings will give me? (1 ~ 100) ");
    while(scanf("%d", &n) == 0) {
        printf("I need a number between 1 and 100 ");
        while (getchar() != '\n');
    }
    while (getchar() != '\n');
    for (i = 0; i < n; i++) {
        gets(s[i]);
    }
    sort_chars(&s[0][0], 100, n);
    printf("\nAfter sorting, the strings look like these:\n");
    for (i = 0; i < n; i++) {
        puts(s[i]);
    }
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-21 12:01 编辑 ]
2011-06-21 12:00
hugh浪迹
Rank: 2
等 级:论坛游民
帖 子:30
专家分:39
注 册:2011-6-17
收藏
得分:1 
一个中午的劳动成果。。。
#include<stdio.h>
#include<stdlib.h>
#define N 2
#define M 51
int main()
{
    void range(char b[][M]);
    char a[N][M];
    int i;
    printf("请输入%d个字符串,每个字符串不超过%d个字符(每个字符串以回车键结束):\n",N,M-1);
    for(i=0;i<N;i++)
        gets(a[i]);
    printf("您输入的字符串为:\n");
    for(i=0;i<N;i++)
    {
        puts(a[i]);
    }
    printf("对每个字符串按升序排列:\n");
    range(a);
    printf("排序后的字符串为:\n");
    for(i=0;i<N;i++)
    {
        puts(a[i]);
        printf("\n");
    }
    return(0);
}
void range(char b[][M])
{
    int m,n,p,sum=0;
    char c;
    for(n=0;n<N;n++)
    {
        for(m=0;b[n][m]>0;m++)
            sum+=1;
        for(p=0;p<sum-1;p++)
        {
            for(m=0;m<sum-1-p;m++)
                if(b[n][m]>b[n][m+1])
                {
                    c=b[n][m];
                    b[n][m]=b[n][m+1];
                    b[n][m+1]=c;
                }
        }
    }
}
2011-06-21 13:05
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 3楼 c564794923
嗯,嘿嘿,谢了
2011-06-21 14:51
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 6楼 voidx
有点小问题……改好了,谢谢啦
 char s[100][100];
    int n, i;
    printf("How many strings will give me? (1 ~ 100) ");
loop:scanf("%d", &n);
     while(n==0){printf("I need a number between 1 and 100 \n");
     goto loop;}
    printf("please input the strings you want to sort:\n");
    while (getchar() != '\n');
    for (i = 0; i < n; i++) {
        gets(s[i]);
    }
    sort_chars(&s[0][0], 100, n);
    printf("\nAfter sorting, the strings look like these:\n");
    for (i = 0; i < n; i++) {
        puts(s[i]);
    }
    return 0;
}
2011-06-21 20:01
多余的流星
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2011-5-2
收藏
得分:0 
回复 6楼 voidx
不甚感谢,可运行结果有点问题……
2011-06-21 20:02
快速回复:指针运用及函数调用,求高手指教!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021421 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved