C语言字符串排序问题
发布网友
发布时间:2022-05-12 17:02
我来回答
共2个回答
热心网友
时间:2023-10-14 21:52
#include<stdio.h>
#include<string.h>
#define SIZE 91
#define LIM 31
#define HALT""
void stsrt(char*strings[],int num);
int main(void)
{
char input[LIM][SIZE];
char*ptstr[LIM];
int ct=0;
int k=0;
printf("input up to%d lines,and I will sort them.\n",LIM);
printf("To stop,press the enter key at a line's start.\n");
while(ct<LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='\0')
{
ptstr[ct]=input[ct];
ct++;
}
stsrt(ptstr,ct);
puts("\n here's the sorted list:\n");
for(k=0;k<ct;k++)
{
puts(ptstr[k]);
}
puts("\n here's the list:\n");
for(k=0;k<ct;k++)
{
puts(input[k]);
}
return 0;
}
void stsrt(char*strings[],int num)
{
char*temp;
int top,seek;
for(top=0;top<num-1;top++)
{
for(seek=top+1;seek<num;seek++)
{
if(strcmp(strings[top],strings[seek])>0)
{
temp=strings[top];
strings[top]=strings[seek];
strings[seek]=temp;
}
}
}
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
热心网友
时间:2023-10-14 21:53
因为char *strings[]不是指针而是指针数组,那么
temp = strings[top];
strings[top] = strings[seek];
strings[seek] = temp;
这种交换交换的就是主调函数中的数组中的指针,把指向字符串的指针顺序改变了,当然按次序输出就达到排序目的了……
C语言字符串排序问题,求解
define N 3 void sort_string(char *p[],int n); /*排序函数声明*/ int main(){ char *p[N];/*定义指针数组*/ int i;for(i=0;i<N;i++)/*动态分配空间*/ p[i]=(char*)malloc(21*sizeof(char));/*设字符串不超过20字节*/ printf("Input %d Strings:\n",N);for(i=0;i<...
c语言字符串排序问题!
int cmp(char *p1,char *p2) /* 字符串比较函数 */ {int i=0;while (*(p1+i)==*(p2+i))if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */ return (*(p1+i)-*(p2+i));} void sort(char *a[N]) /*排序函数*/ {char *temp...
用C语言,输入一字母串,将其从小到大排列(如果输入字母为大写,要将其...
include <stdio.h>#include <string.h>#include <stdlib.h>int comp(const void*a, const void*b){return (((char *)a)[0])-(((char *)b)[0]);}int main(){int len, i;char str[100];scanf("%s", str);len = strlen(str);for (i=0;i<len;i++) {if ((str[i] >= ...
c语言排序问题,急,加分奖励
for(int i=strlen(s)-1;i>=0;i--)//从后往前打印 printf("%c",s[i]);} 第二种:include <stdio.h> include <string.h> void fun( char t[] ){ char c;int i, j;/***found***/ for( i = 0; i<strlen(t)-1; i++ )//冒泡排序。for( j =0; j < strlen(t)-...
c语言编程问题,字符串数组排序的问题
void ranger(char a[][10]){ int i,count=0; char s[100]; while(count<10) { for(i=0;i < 9-count;i++) { if(strcmp(a[i],a[i+1])>0) { strcpy(s,a[i]),strcpy(a[i],a[i+1]),strcpy(a[i+1],s); } } count++; }}...
C语言程序:题目:从键盘输入一个字符串,按照字符顺序从小到大进行排序...
int main(void){ char str1[500]={0},str2[256]={0};//定义二个数组,并赋初值为0 int i;gets(str1);//读取一个字符串 for(i=0;str1[i];i++){ str2[str1[i]]=1;//str1中每个字符的assic码作为str2的下标值,并把对应位置填充为1,同一个字符的assci值相同,所以这样就...
C语言问题:将一字符串按ASCII大小排序
a[i]>a[j]) 时,因为a[i]='\0',所以就总会小于a[j],于是保持a[i]='\0',输出屏幕上就是空,而a[k]=='\0',字符串不会再变化,并陷入死循环。把for(i=0;a[0]!='\0'; )改为for(i=0;a[0]!='\0';i=0 )就好了。(好吧,我很啰嗦,希望讲清楚了~)...
C语言练习题:输入n个字符串,将它们按字典顺序输出。(请用数组的指针和...
// 下面是字典序:#include<stdio.h>#include <string.h>void swap(char *a,char *b){ char temp=*a; *a = *b; *b = temp;}int nextperm(char a[], int n) // 字典序排列(从升序到降序排列(也可从降序到升序))基于ASCII码准则{ int i,j,k=-1,l; for(i=...
C语言中 字符串怎么排序
直接借助冒泡排序,选择排序即可进行字符串的排序,但是需注意的是,字符串的比较需要借助strcmp函数完成,而字符串的复制需要借助strcpy函数完成。示例代码如下:include "stdio.h"#include "string.h"void sort(char array[][20],int n);main(void){ char str[10][20]; int i,j,k,n; ...
...把字符数组中的字母按由小到大 的顺序排列并输出
include <stdio.h>#include <stdlib.h>#include <string.h>int cmp(const void *a, const void *b) { return *(char*)a - *(char*)b; // 这里记住一定要用排序的元素类型的指针做强制装换并且再取指针指向的值。}int main() { char s[] = "kjferu21398dyfkaqpoia"; qs...