要求用c++写一个程序,程序内容为输入n个名字,可以随机排序,
时间: 2023-08-31 12:33:32 浏览: 74
### 回答1:
答: 可以使用以下C语言代码来实现: #include <stdio.h>
#include <stdlib.h>
#include <time.h> int main()
{
int n;
char name[20][20]; printf("Enter the number of names: ");
scanf("%d", &n); printf("Enter %d names: \n", n);
for (int i=0; i<n; i++)
scanf("%s", &name[i]); // Use current time as seed for random generator
srand(time(0)); // Start from the last element and swap one by one. We don't
// need to run for the first element that's why i > 0
for (int i=n-1; i>0; i--)
{
// Pick a random index from 0 to i
int j = rand() % (i+1); // Swap arr[i] with the element at random index
char temp[20];
strcpy(temp, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], temp);
} printf("\nRandomly arranged names: \n");
for (int i=0; i<n; i++)
printf("%s\n", name[i]); return 0;
}
### 回答2:
这是一个简单的用C语言编写的程序,它可以接受用户输入的n个名字,并随机对这些名字进行排序。
首先,我们需要包含相应的头文件:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
```
接下来,我们定义一个函数来实现随机排序的功能:
```c
void shuffle(char **names, int n) {
srand(time(NULL)); // 设置随机数种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
char *temp = names[i];
names[i] = names[j];
names[j] = temp;
}
}
```
然后在主函数中,我们先提示用户输入名字的个数n,并根据n动态分配一个二维字符数组来存储名字:
```c
int main() {
int n;
printf("请输入名字的个数: ");
scanf("%d", &n);
char **names = (char **) malloc(n * sizeof(char *));
for (int i = 0; i < n; i++) {
names[i] = (char *) malloc(100 * sizeof(char));
printf("请输入第%d个名字: ", i + 1);
scanf("%s", names[i]);
}
```
接下来,我们调用之前定义的shuffle函数来随机排序这些名字,并输出结果:
```c
shuffle(names, n);
printf("随机排序后的名字为:\n");
for (int i = 0; i < n; i++) {
printf("%s\n", names[i]);
}
```
最后,我们要记得在程序结束时释放所有动态分配的内存:
```c
for (int i = 0; i < n; i++) {
free(names[i]);
}
free(names);
return 0;
}
```
以上就是一个简单的用C语言编写的程序,它可以接受用户输入的n个名字,并随机对这些名字进行排序。希望对你有所帮助!
阅读全文