本文目录一览:
- 1、C语言中如何将10个字符串进行排序
- 2、c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出
- 3、C语言中输入一串字符,怎样让它按照字母从小到大的顺序排列?
- 4、字符串排序 C语言编程
- 5、c语言字符串排序
C语言中如何将10个字符串进行排序
#includestdio.h
#includestring.h
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i10;i++)
{
scanf("%s",s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i9;i++)
{
for(j=0;j9-i;j++)
if(strcmp(s[j],s[j+1])0)
{
for(k=0;kn;k++)
b[j][k]=s[j][k];
for(k=0;kn;k++)
s[j][k]=s[j+1][k];
for(k=0;kn;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i10;i++)
{
printf("%s ",s[i]);
}
return 0;
}
运行效果:
扩展资料:
scanf函数用法:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。
c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出
代码如下:
#define N 10 int main(){char str[N][100]; int i,j; for(i = 0; i N; i ++) scanf("%s",str[i]); for(i = 0; i N-1; i ++) { for(j = i+1; j N; j ++){ if(strcmp(str[i],str[j])0) { char temp[100]; strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp);} } } for(i = 0; i N; i ++) puts(str[i]);}。
运行代码:
执行结果:
扩展资料
在C语言编程中,常常需要对字符串比较和排序,经常遇到对字符串整体的控制等操作,strcmp 比较str1和str2的大小,而其它的c函数strlen(),字符串拷贝函数strcpy()/strncpy(),字符串比较函数 strcmp(),字符串连接函数strcat()/strncat()等,都可以帮助我们快速方便的对字符串操作。
参考资料:百度百科-C语言
C语言中输入一串字符,怎样让它按照字母从小到大的顺序排列?
这可以把字符串输入到字符数组中,然后采用排序的方法来实现:
(需要包含string.h头文件)
char t,s[200];
int i,i;
gets(s);
for(i=0;istrlen(s)-1;i++)
for(j=0;jstrlen(s)-1-i;j++)
if(s[j]s[j+1])
{t=s[j]; s[j]=s[j+1]; s[j+1]=t;}
puts(s);
字符串排序 C语言编程
#includelt;stdio.hgt;
#includelt;string.hgt;
#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(ctlt;LIMgets_s(input[ct],100)!=NULLinput[ct][0]!='\0')
{
ptstr[ct]=input[ct];
ct++;
}
stsrt(ptstr,ct);
puts("\n here's the sorted list:\n");
for(k=0;klt;ct;k++)
{
puts(ptstr[k]);
}
puts("\n here's the list:\n");
for(k=0;klt;ct;k++)
{
puts(input[k]);
}
return 0;
}
void stsrt(char*strings[],int num)
{
char*temp;
int top,seek;
for(top=0;toplt;num-1;top++)
{
for(seek=top+1;seeklt;num;seek++)
{
if(strcmp(strings[top],strings[seek])gt;0)
{
temp=strings[top];
strings[top]=strings[seek];
strings[seek]=temp;
}
}
}
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md--gt;m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
c语言字符串排序
你有两个错误,一是C的变量定义必须在所有语句之前,二是字符串不能赋值,必须使用strcpy函数,修改后的程序代码和运行结果如下:
$ cat a.c
#includestdio.h
#includestring.h
void Solve();
void sort(char *name[], int n);
int main()
{
Solve();
return 0;
}
void Solve()
{
int i,n;
char name[100][100];
scanf("%d",n);
for(i=0;in;i++)
{
gets(name[i]);
}
sort(name,n);
for(i=0;in;i++)
{
puts(name[i]);
}
}
void sort(char *name[100], int n)
{
int i,j,k;
char *temp;
for(i=0;in-1;i++)
{
k=i;
for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j;
if (k!=i)
{
{
strcpy(temp,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],temp);
}
}
}
}
$ cc a.c
"a.c", line 19: warning #2167-D: argument of type "char (*)[100]" is
incompatible with parameter of type "char **"
sort(name,n);
^
$ a.out
6dkjlfhgjkshdfjkgh
1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj
1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj
$ cc -V
cc: HP C/aC++ B3910B A.06.25 [Nov 30 2009]
/cq/u/cqjsdba/ygb