黑马程序员技术交流社区
标题: 今天面试中遇到难题,谁会啊? [打印本页]
作者: wangchao1992 时间: 2015-9-13 15:55
标题: 今天面试中遇到难题,谁会啊?
题目:从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
本人只会接收 6个字符串。再往下不会了。求大神指导
#include <stdio.h>
void main()
{
char one[100];// 定义接收第1个字符串
char two[100];// 定义接收第2个字符串
char three[100];// 定义接收第3个字符串
char four[100];// 定义接收第4个字符串
char five[100];// 定义接收第5个字符串
char six[100];// 定义接收第一个字符串
printf("请输入第1个字符串(仅包含英文字母和数字):");
gets(one);
printf("请输入第2个字符串(仅包含英文字母和数字):");
gets(two);
printf("请输入第3个字符串(仅包含英文字母和数字):");
gets(three);
printf("请输入第4个字符串(仅包含英文字母和数字):");
gets(four);
printf("请输入第5个字符串(仅包含英文字母和数字):");
gets(five);
printf("请输入第6个字符串(仅包含英文字母和数字):");
gets(six);
}
作者: 65006636 时间: 2015-9-13 18:26
排序加compare就可以了
作者: oxzjsku 时间: 2015-9-13 21:42
从小到大排列输出,再加个排序的函数不就OK了吗
作者: 大宝820 时间: 2015-9-13 23:16
写一个冒泡不就可以吗?用strcmp函数比较ascii大小。需要头文件string.h
作者: 荣荣 时间: 2015-9-14 06:04
请问是黑马入学面试么
作者: 18503582292 时间: 2015-9-14 09:14
基础题可以在论坛提问吗?
作者: wangchao1992 时间: 2015-9-15 11:03
标题: 代码已补全,欢迎来纠错
本帖最后由 wangchao1992 于 2015-9-15 11:26 编辑
char *temp;//定义temp变量用于交换
char *sort[6];
sort[0]=one;
sort[1]=two;
sort[2] =three;
sort[3]=four;
sort[4]=five;
sort[5]=six;
//定义字符串指针数组存放 6个字符串的地址
for(int i=0;i<5;i++)//冒泡排序
{
for(int j=0;j<j+1-i;j++)
{
if(strcmp(sort,sort[j]))
{
//交换两个变量的地址
temp=sort;
sort=sort[j];
sort[j]=temp;
}
}
}
//循环输出
for(int i=0;i<6;i++)
{
printf("%s\n",sort);
}
}
作者: wangchao1992 时间: 2015-9-15 11:10
以前的贴子有讨论面试题的.应该可以吧
作者: wangchao1992 时间: 2015-9-15 11:11
是啊,....
作者: wangchao1992 时间: 2015-9-15 11:12
兄弟来看看我写的对不对
作者: Judyisapunk 时间: 2015-9-15 12:43
如意大师视频里有
作者: 18503582292 时间: 2015-9-15 15:06
j<j+1-i怎么解释?
作者: jsh_513 时间: 2015-9-16 08:33
攒,写的好。。。。。。。。。。。。。。。
作者: f1gogo 时间: 2015-9-16 09:28
如果是输入10个数字,估计你用冒泡或者其他方法能排序。对于字符串,把字符串看成数字,只不过比较的时候用strcmp函数即可。
作者: wangchao1992 时间: 2015-9-16 10:08
最佳答案
/*
从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
*/
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
char ch[6][50];
for (int i = 0; i<6; i++) {
printf("键入第%d个字符串:",i+1);
scanf(" %s",ch);
}
int a=0;
for (int i = 0; i<6; i++) {
for (int j = 1; j<5; j++) {
printf("%d",++a);
if (strcmp(ch, ch[j])<0) {
char temp[50];
strcpy(temp, ch);
strcpy(ch, ch[j]);
strcpy(ch[j],temp);
}
}
}
printf("由小大到排序完毕:");
for (int i = 0; i<6; i++) {
printf("%s ",ch);
}
printf("\n");
}
return 0;
}
作者: wangchao1992 时间: 2015-9-16 10:10
看其他代码,模仿的。
作者: wangchao1992 时间: 2015-9-16 10:13
本人是菜鸟。代码是有错误的。
作者: tangbinbin 时间: 2015-9-16 11:17
都是大神啊,,厉害
作者: jsh_513 时间: 2015-9-18 21:32
大神呀,膜拜。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |