gpt4 book ai didi

c - 在 c 中按字母顺序升序和降序对用户输入名称数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:00 24 4
gpt4 key购买 nike

我是 C 的新手,有一个类(class)作业。我需要//构建一个程序,该程序使用一维数组来存储用户输入的 10 个名称。//输入姓名后,用户应该会看到一个菜单,其中有两个选项可以按升序或降序对 10 个姓名进行排序和打印。

到目前为止我在这里

`

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char names[10][10];
char temp[10],i,j;
int count;
int sort;
count=1;
for ((i=0);i<10;i++)
{
while (count<11)
{
printf("Please enter name %i\n",count);
scanf("%s",names);
count=count+1;
}
}
printf("Would you like to print in Ascending (press 1) or Descending (press 2) order?\n\n");
scanf("%d",&sort);
switch (sort) {
case 1:
printf("\n Ascending order:\n ");


printf("%s\n",names);
qsort(temp, 10, 10, names);
break;
default:
case 2:
printf("\n Descending order:\n ");
printf("%s\n",names);
break;
}
return 0;

我需要帮助弄清楚如何让它排序。

最佳答案

首先有一些错误:

1、一维数组不能存10个人名,需要二维数组,char names[10][10]即可.

2、当你使用qsort函数时,第四个参数是一个函数指针int (*cmp)(const void*, const void*) .

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp1(const void* l, const void* r)
{
return strcmp((char*)l , (char*) r);
}
int cmp2(const void* l, const void* r)
{
return -strcmp((char*)l , (char*) r);
}
int main()
{
char names[10][10] = {0};
char temp[10];
int count;
int sort;
count=1;
for (int i=0;i<10;i++)
{
printf("Please enter name %i\n",i+1);
scanf("%s",names[i]);
}
printf("Would you like to print in Ascending (press 1) or Descending (press 2) order?\n\n");
scanf("%d",&sort);
switch (sort)
{
case 1:
printf("\n Ascending order:\n ");
qsort(names, 10, 10, cmp1);
break;
case 2:
printf("\n Descending order:\n ");
qsort(names, 10, 10, cmp2);
break;
}

for (int i = 0; i < 10; i ++)
{
printf("%s\n", names[i]);
}
return 0;
}

关于c - 在 c 中按字母顺序升序和降序对用户输入名称数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com