#include <stringh>
#include <stdioh>
int main()
{
char name[10][20], temp[20];
int i,j;
for (i = 0; i < 10; ++i){
scanf ("%s", name[i]);
}
for (i = 0; i < 10; ++i){
for (j = i+1; j < 10; ++j){
if (strcmp(name[i], name[j]) < 0){
strcpy(temp, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], temp);
}
}
}
for (i = 0; i < 10; ++i){
printf ("%s\n", name[i]);
}
return 0;
}
一个学生的这样搞:
姓名分开,成两个字符串。
分别排序,形成新的字符串,然后输出。
其他学生一样的方法。
#include <stdioh>#include <stringh>
#define STU_NAME_MAX_LEN 20
char stu_name[][STU_NAME_MAX_LEN] =
{
"iker cassilas",
"luis suarez",
"cristiano ronaldo",
"lionl messi"
};
void main()
{
int stu_count = sizeof(stu_name)/sizeof(stu_name[0]);
int i, j, k;
for (i=0; i<stu_count; i++)
{
char firstname[STU_NAME_MAX_LEN];
char familyname[STU_NAME_MAX_LEN];
int blankpos = 0;
//将姓名分开
memset(firstname, 0, STU_NAME_MAX_LEN);
memset(familyname, 0, STU_NAME_MAX_LEN);
for (j=0; j<sizeof(stu_name[i]); j++)
{
if (stu_name[i][j] == ' ')
{
blankpos = j;
break;
}
}
memcpy(firstname, &stu_name[i][0], blankpos);
memcpy(familyname, &stu_name[i][blankpos+1], sizeof(stu_name[i])-blankpos-1);
printf("old: %s %s\n", firstname, familyname);
//排序
for (j=0; firstname[j]!='\0'; j++)
{
for (k=j+1; firstname[k]!='\0'; k++)
{
if (firstname[j] < firstname[k])
{
char ctemp = firstname[j];
firstname[j] = firstname[k];
firstname[k] = ctemp;
}
}
}
for (j=0; familyname[j]!='\0'; j++)
{
for (k=j+1; familyname[k]!='\0'; k++)
{
if (familyname[j] < familyname[k])
{
char ctemp = familyname[j];
familyname[j] = familyname[k];
familyname[k] = ctemp;
}
}
}
printf("new:%s %s\n\n", firstname, familyname);
}
}#include <stdioh>
#include <stringh>
int main()
{
char string[10][50], temp[50];
printf("请输入6个单词:\n");
for(int i = 0; i < 6; i++)
scanf("%s", string[i]);
/冒泡排序/
for(int i = 0; i < 5; i++ )
for(int j = i+1; j < 6; j++)
if(strcmp(string[i], string[j]) == 1)//比较字符串大小,可以用strcmp
{
strcpy(temp, string[i]) ;//交换要strcpy
strcpy(string[i], string[j]) ;
strcpy(string[j], temp) ;
}
//输出
printf("输出排好序的6个单词:\n");
for(int i = 0; i < 6; i++ )
puts(string[i]);
return 0;
}按照C语言语法,main函数须为void类型;另外,你所编辑的程序段没有输入。就排序方式来讲你所用的是函数的址传递及字符串比较大小的函数,这点没有错误;就理解而言strcmp函数的确可以实现你所需的功能,其大小的比较式按ASCⅡ码值进行的比较,不知道你有没有意识到。试了试,可以排序啊。有几个简单的错误不知道是不是因为你提问时打错了。第一个,printf提示是不能直接用汉语的吧。还有就是if(strcmp(name[min],name[j]>0))括号加的不大对,if(strcmp(name[min],name[j])>0)然后,我输入就可以了。什么内存错误,没有发现。如果有问题,请及时补充。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)