编写C程序:用指针数组操作,将输入的5个字符串按从小到大的顺序输出

高手哪位知道,编写C程序:用指针数组操作,将输入的5个字符串按从小到大的顺序输出
最新回答
倾城佳人

2024-04-15 14:27:06

// chapter7.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string.h>
#include <ctype.h>

void order(int * string) //把数组按从小到大排列,返该数组首地址 输入0结束
{
int i,j,temp;
int n = 0; //计算输入数组的长度(包括结束数0)
int * p = string;
while(0 != *p++)
{
n++;
}

//起泡法排序
p = string;
for(i = 0;i < n; i++)
{
for(j = 0;j < n-i; j++)
{
if(*(p+j) > *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}

int main(int argc, char* argv[])
{
/*已有一个已排好序的数组,要求输入一个数后,
按原来排序的规律将它插入数组中。

特殊要求:任意输入一个数列,先排序由小到大
然后再随意插入一个数,按有小到大排列

思路1:输入数接着存入数组,从新排列。(简单)
思路2:排列完大小后插入(复杂)。

本程序采用思路1.
*/
int a[256];
int i = 0;
//p = a;
do
{
scanf("%d",&a[i]);
}
while(0 != a[i++]); //正确的输入方式

order(a);
i = 0;
do
{
printf("%d ",a[i]);
}
while(0 != a[i++]); //正确的输出方式
putchar('\n');

return 0;
}

/*
为什么while(0 != *p++) 把*p++拆开就不能输入了?
{
scanf("%d",p);
}

*/
青春命葬校园

2024-04-15 11:37:05

//在主函数中输入10个的字符串,用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串
#include<stdio.h>
#define N 100
void sort(char *s[],int n);
#include<iostream>
#include<string>
using namespace std;
main()
{
char *s[10];
char a[10][N];
int i;
printf("请输入10个的字符串\n");
for(i=0;i<3;i++)
{
s[i]=a[i];
printf("输入第%d个字符串:",i+1);
scanf("%s",s[i]);
}
printf("排序之前的10个等长的字符串为:\n");
for(i=0;i<3;i++)
printf("%s\n",*(s+i));
sort(s,3);
printf("排序之后的输出如下:\n");
for(i=0;i<3;i++)
printf("%s\n",*(s+i));
system("pause");
}
void sort(char *s[],int n)//从小到大排列
{
char *t;
int i;
for(i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
t=s[j];s[j]=s[j+1];s[j+1]=t;
}
}