我的一个数组字符排序(输入可以用回车结束)
来源:互联网 发布:中国长征火箭 vi 知乎 编辑:程序博客网 时间:2024/06/05 06:48
这几天,我写了一个用数组指针来排序的程序。因为用数组指针可以提高程序执行的时间,因为这可以不必移动原来的 数值内容。而只要用一个数组指针来指向就可以了。 下面是我用gets和scanf来分别做的代码。会发现有很多的不同。
1 的代码如下:
# include <stdio.h>
# include <string.h>
int main()
{
char aa[10][20] ,*p[10],*temp;
int k,j,i=0;
printf("输入要排序的字符串,以回车结束。/n");
do{
gets(aa[i]); //注意,scanf不能获取回车。
p[i] = aa[i] ;
i++;
}while (strlen(aa[i-1]) != 0 && i < 10);
//while (strcmp(aa[i-1]," ") != 0 && i < 10);
printf("i is %d/n",i);
printf("开始排序。/n");
for (j = 0;j < i - 1; j++)
{
for(k = j + 1; k < i - 1; k++)
{
if(strcmp(p[j], p[k]) >= 0)
{
temp = p[k] ;
p[k] = p[j] ;
p[j] = temp ;
}
}
}
for (j = 0;j < i - 1; j++)
printf("%s/n",p[j]);
}
运行结果如下:
[root@localhost apue example]# ./gets.out
输入要排序的字符串,以回车结束。
fajl
fdsa
erafas
fasg
i is 5
开始排序。
erafas
fajl
fasg
fdsa
[root@localhost apue example]#
注意:其中有个空白行,是我用回车。
2 的代码如下:
# include <stdio.h>
# include <string.h>
int main()
{
char aa[10][20] ,*p[10],*temp;
int k,j,i=0;
printf("输入要排序的字符串,以回车结束。/n");
do{
scanf("%s",aa[i]); //注意,scanf不能获取回车。
p[i] = aa[i] ;
i++;
} while (strcmp(aa[i-1],"q") != 0 && i < 10); // while (strlen(aa[i-1]) != 0 && i < 10);
printf("i is %d/n",i);
printf("开始排序。/n");
for (j = 0;j < i - 1; j++)
{
for(k = j + 1; k < i - 1; k++)
{
if(strcmp(p[j], p[k]) >= 0)
{
temp = p[k] ;
p[k] = p[j] ;
p[j] = temp ;
}
}
}
for (j = 0;j < i - 1; j++)
printf("%s/n",p[j]);
}
运行结果如下:
[root@localhost apue example]# ./sorting.out
输入要排序的字符串,以回车结束。
fjas;lg
fas
ewrtfeg
fas
q
i is 5
开始排序。
ewrtfeg
fas
fas
fjas;lg
[root@localhost apue example]#
注意:其中有个空白行,是我用回车。
感想:
1 要用回车做数组的结束符的话,只能用gets 加 strlen的方法。因为从上面可以看出来scanf是不能接收回车和空格的。比如:你用一个scanf 后,你输入回车和空格,或只有回车等,都没有用。
2 对于字符排序有了比较深刻的印象。
3 可以把一个字符串赋值给一个指针值。
1 的代码如下:
# include <stdio.h>
# include <string.h>
int main()
{
char aa[10][20] ,*p[10],*temp;
int k,j,i=0;
printf("输入要排序的字符串,以回车结束。/n");
do{
gets(aa[i]); //注意,scanf不能获取回车。
p[i] = aa[i] ;
i++;
}while (strlen(aa[i-1]) != 0 && i < 10);
//while (strcmp(aa[i-1]," ") != 0 && i < 10);
printf("i is %d/n",i);
printf("开始排序。/n");
for (j = 0;j < i - 1; j++)
{
for(k = j + 1; k < i - 1; k++)
{
if(strcmp(p[j], p[k]) >= 0)
{
temp = p[k] ;
p[k] = p[j] ;
p[j] = temp ;
}
}
}
for (j = 0;j < i - 1; j++)
printf("%s/n",p[j]);
}
运行结果如下:
[root@localhost apue example]# ./gets.out
输入要排序的字符串,以回车结束。
fajl
fdsa
erafas
fasg
i is 5
开始排序。
erafas
fajl
fasg
fdsa
[root@localhost apue example]#
注意:其中有个空白行,是我用回车。
2 的代码如下:
# include <stdio.h>
# include <string.h>
int main()
{
char aa[10][20] ,*p[10],*temp;
int k,j,i=0;
printf("输入要排序的字符串,以回车结束。/n");
do{
scanf("%s",aa[i]); //注意,scanf不能获取回车。
p[i] = aa[i] ;
i++;
} while (strcmp(aa[i-1],"q") != 0 && i < 10); // while (strlen(aa[i-1]) != 0 && i < 10);
printf("i is %d/n",i);
printf("开始排序。/n");
for (j = 0;j < i - 1; j++)
{
for(k = j + 1; k < i - 1; k++)
{
if(strcmp(p[j], p[k]) >= 0)
{
temp = p[k] ;
p[k] = p[j] ;
p[j] = temp ;
}
}
}
for (j = 0;j < i - 1; j++)
printf("%s/n",p[j]);
}
运行结果如下:
[root@localhost apue example]# ./sorting.out
输入要排序的字符串,以回车结束。
fjas;lg
fas
ewrtfeg
fas
q
i is 5
开始排序。
ewrtfeg
fas
fas
fjas;lg
[root@localhost apue example]#
注意:其中有个空白行,是我用回车。
感想:
1 要用回车做数组的结束符的话,只能用gets 加 strlen的方法。因为从上面可以看出来scanf是不能接收回车和空格的。比如:你用一个scanf 后,你输入回车和空格,或只有回车等,都没有用。
2 对于字符排序有了比较深刻的印象。
3 可以把一个字符串赋值给一个指针值。
- 我的一个数组字符排序(输入可以用回车结束)
- 输入一个字符,字母输出‘c’,数字输出本身,回车结束(8086汇编)
- 编写一个程序,输入一行字符,以回车结束,分别统计出其中的英文字母、空格、数字和其他字符的数
- 输入一串字符,以回车换行符为结束标志,并统计输入的英文字符和数字字符
- C语言中空格符、空字符、字符数组结束符、换行、回车的区别
- C语言中空格符、空字符、字符数组结束符、换行、回车的区别
- cin 回车结束输入
- scanf("%d\n",&a)和scanf("%d",&a) 前者为什么我输入一个数字后一直按回车都无法结束 除非输入数字回车
- C语言输入一串数据到数组中,用空格隔开回车结束
- 输入数据 回车结束 基数偶数分开排序
- 输入一个很大的数,然后按下回车结束 c语言实现
- C语言,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中
- 排序一个数组可以是有用的
- c++用cin和getline实现输入回车结束输入
- 一个可以用来检测输入字符的widget
- scanf 两个回车结束输入
- C++ vector回车结束输入
- 输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
- as3——检测系统语言,检测播放器的类型,检测版本
- petshop4.0 详解之三(PetShop数据访问层之消息处理)
- as3——派遣事件,创建常量
- 需求调研经验分享-2 需求调研实施及注意事项
- petshop4.0 详解之四(PetShop之ASP.NET缓存)
- 我的一个数组字符排序(输入可以用回车结束)
- 80386 控制转移指令,串操作指令 (四)
- C++字符串完全指南 - Win32字符编码
- [转]VS.NET 2008 beta2中文版试用
- 其下Coding
- petshop4.0 详解之五(PetShop之业务逻辑层设计)
- as3——类的继承,类的保存设置
- 编译指令#pragma详解
- vb.net与c#的语法区别