请用C语言二维字符数组写一个程序,输入姓名并按首字母输出
时间: 2024-11-27 22:24:03 浏览: 26
中文排序后按拼音分为二维数组
在C语言中,要实现输入姓名并按首字母输出的功能,可以使用二维字符数组来存储姓名,然后遍历数组查找以特定字母开头的名字。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
#define NAME_LEN 50 // 姓名长度限制
#define ALPHABET_LEN 26 // 字母表长度
void print_names_by_initial(char names[][NAME_LEN], int num_of_names) {
for (int i = 0; i < num_of_names; i++) {
char initial = names[i][0]; // 取名字的第一个字符
if (initial >= 'A' && initial <= 'Z') {
initial += 'a' - 'A'; // 转换成小写字母
}
for (char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
if (alphabet == initial) {
printf("%s\n", names[i]);
break;
}
}
}
}
int main() {
const int NUM_OF_NAMES = 3;
char names[NUM_OF_NAMES][NAME_LEN];
printf("请输入%d个人的姓名(格式:姓 名,每个姓名之间用空格分隔):", NUM_OF_NAMES);
for (int i = 0; i < NUM_OF_NAMES; i++) {
fgets(names[i], NAME_LEN, stdin); // 从标准输入读入姓名
names[i][strcspn(names[i], "\n")] = '\0'; // 去除换行符
}
print_names_by_initial(names, NUM_OF_NAMES);
return 0;
}
```
在这个程序中,`print_names_by_initial` 函数接收一个二维字符数组和其大小,然后按照姓名的首字母进行分类打印。注意,这里假设输入的姓名都是大写字母开头,如果实际输入可能包含小写字母,还需要对首字母进行转换。
阅读全文