C语言中如何将10个字符串进行排序
答案:5 悬赏:40 手机版
解决时间 2021-02-22 05:34
- 提问者网友:趣果有间
- 2021-02-21 07:51
C语言中如何将10个字符串进行排序
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-02-21 09:12
#include<stdio.h>
#include<string.h>
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i<10;i++)
{
scanf("%s",s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
for(k=0;k<n;k++)
b[j][k]=s[j][k];
for(k=0;k<n;k++)
s[j][k]=s[j+1][k];
for(k=0;k<n;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i<10;i++)
{
printf("%s ",s[i]);
}
return 0;
}
运行效果:
扩展资料:
scanf函数用法:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。
#include<string.h>
int main()
{
int j,k,i,t,n;
char s[10][10],b[10][10];
for(i=0;i<10;i++)
{
scanf("%s",s[i]);
}
n=strlen(s[1]);
k=0;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
for(k=0;k<n;k++)
b[j][k]=s[j][k];
for(k=0;k<n;k++)
s[j][k]=s[j+1][k];
for(k=0;k<n;k++)
s[j+1][k]=b[j][k];
}
}
for(i=0;i<10;i++)
{
printf("%s ",s[i]);
}
return 0;
}
运行效果:
扩展资料:
scanf函数用法:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。
全部回答
- 1楼网友:走死在岁月里
- 2021-02-21 12:03
不好意思,你说的这个我不是很了解呢,没能帮到你,希望您可以得到满意的答复,祝您生活愉快,谢谢!
- 2楼网友:第幾種人
- 2021-02-21 11:09
public static Connection createConnection()
{
Connection connection=null;
try
{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/java", "root","root");
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (SQLException e)
{
e.printStackTrace();
}
return connection;
}
- 3楼网友:酒醒三更
- 2021-02-21 09:31
C语言中如何将十个字符串进行排序?这十个。这十个字符分别是爱与毕西谛艾艾夫记。
- 4楼网友:污到你湿
- 2021-02-21 09:18
一、算法设计:
1、输入10个字符串;
2、任选一种排序算法对字符串排序,比较时需要使用strcmp, 复制时需要使用strcpy。
3、输出排序后的结果。
二、算法优化:
字符串比较必须使用strcmp,这一点无法优化。 但每次将字符串整体复制,交换值,效率偏低,所以可以使用字符指针数组存储每个字符串的地址,排序时交换指针即可。
另外,输入时可以同步完成排序操作。
三、参考代码:
#include <stdio.h>
#include <string.h>
int main()
{
char a[10][100];//10个字符串空间,每个最长限制为100个字节。
char *p[10];//字符指针数组。
int i,j;
char *t;
for(i = 0; i < 10; i ++)
{
scanf("%s",a[i]);//输入第i个字符串。
t=a[i];
for(j = i-1; j>=0; j--)//查找插入的位置。
if(strcmp(p[j], t)<=0) break;//从小到大按字典序排序。
else p[j+1]=p[j];//后移一位。
p[j+1] = t;//插入。
}
//循环结束后,p中就是排序好的10个字符串。
for(i = 0; i < 10; i ++)
{
printf("%s\n", p[i]);
}//输出结果。
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯