用指针写一个程序读入你的姓名,然后每个字母间加一个空格后输出。例如,姓名John显示为J o h n。 **输入格式要求:"%s" 提示信息:"请输入你的姓名:",用c语言
时间: 2024-05-10 15:18:19 浏览: 7
以下是用指针实现的程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
int main() {
char name[MAX_NAME_LENGTH];
printf("请输入你的姓名:");
scanf("%s", name);
int len = strlen(name);
for (int i = 0; i < len; i++) {
printf("%c ", *(name + i));
}
return 0;
}
```
这个程序首先定义一个 `char` 类型的数组 `name`,长度为 `MAX_NAME_LENGTH`,用于存储输入的姓名。然后使用 `scanf` 函数读入姓名。接着使用 `strlen` 函数获取姓名的长度,并使用指针遍历姓名的每个字符并输出,每个字符后面加上一个空格。其中 `*(name + i)` 表示数组 `name` 中第 `i` 个元素的值。
相关问题
写一个c语言程序利用指针将10个学生的姓名排序
下面是一个简单的C语言程序,利用指针将10个学生的姓名按字母顺序排序。这里假设每个学生的姓名是一个字符串。
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define NUM_STUDENTS 10
int main() {
char names[NUM_STUDENTS][MAX_NAME_LEN];
char *pointers[NUM_STUDENTS];
char *temp;
// 获取学生姓名
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", names[i]);
pointers[i] = names[i];
}
// 使用指针进行排序
for (int i = 0; i < NUM_STUDENTS - 1; i++) {
for (int j = i + 1; j < NUM_STUDENTS; j++) {
if (strcmp(pointers[i], pointers[j]) > 0) {
temp = pointers[i];
pointers[i] = pointers[j];
pointers[j] = temp;
}
}
}
// 输出排序结果
printf("排序后的结果为:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%d. %s\n", i+1, pointers[i]);
}
return 0;
}
```
解释一下程序:
首先定义了两个常量,一个是每个学生姓名字符串的最大长度,另一个是学生的总数。
然后定义了一个二维字符数组 `names`,用于存储每个学生的姓名。另外定义了一个指针数组 `pointers`,用于存储每个学生姓名字符串的地址。还定义了一个临时指针变量 `temp`,用于交换指针变量的值。
接着使用循环获取每个学生的姓名,并将每个学生姓名字符串的地址存储到 `pointers` 数组中。
然后使用两层循环,从第一个学生开始依次比较每个学生的姓名字符串的大小,如果前面的字符串大于后面的字符串,则交换对应的指针变量。
最后输出排序结果,依次输出每个学生的姓名。
写一个c语言程序利用指针将10个学生的姓名排序。
下面是一个简单的 C 语言程序,使用指针将 10 个学生的姓名排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define NUM_STUDENTS 10
int main() {
char names[NUM_STUDENTS][MAX_NAME_LEN];
char *p[NUM_STUDENTS];
int i, j;
// 读入学生姓名
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第 %d 个学生的姓名:", i+1);
scanf("%s", names[i]);
p[i] = names[i];
}
// 使用冒泡排序法按字典序排序
for (i = 0; i < NUM_STUDENTS - 1; i++) {
for (j = 0; j < NUM_STUDENTS - i - 1; j++) {
if (strcmp(p[j], p[j+1]) > 0) {
char *temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
// 输出排序结果
printf("按字典序排序后的学生姓名为:\n");
for (i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", p[i]);
}
return 0;
}
```
程序中使用了一个二维字符数组 `names` 存储学生姓名,同时定义了一个字符指针数组 `p`,用于存储指向每个学生姓名的指针。首先通过循环读入 10 个学生的姓名,并将每个姓名的指针存储到 `p` 数组中。接着使用冒泡排序法按字典序对 `p` 数组进行排序,最后输出排好序的学生姓名。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)