c语言不用指针实现数字的替换存储
时间: 2023-05-23 21:07:05 浏览: 37
A:可以使用数组来实现数字的替换存储,如下所示:
```c
#include <stdio.h>
#define SIZE 10
int main() {
int arr[SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int replace_num = 6;
int new_num = 0;
// 找到要替换的数字
for (int i = 0; i < SIZE; i++) {
if (arr[i] == replace_num) {
// 新的替换数字
new_num = replace_num + 1;
// 替换数字
arr[i] = new_num;
}
}
// 打印新的数组
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这里我们定义了一个大小为10的数组,然后找到要替换的数字,并使用新的数字来替换它。最后打印出新的数组。这种方法虽然不需要使用指针,但是只适用于固定大小的数组。如果数组大小不确定,则必须使用指针来实现。
相关问题
c语言利用指针将 10 个学生的姓名排序
可以通过使用指向指针的指针来实现对学生姓名的排序。以下是一个基本的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define NUM_STUDENTS 10
int main() {
char names[NUM_STUDENTS][MAX_NAME_LENGTH];
char *ptrs[NUM_STUDENTS];
// 读取学生姓名并将指针存储到ptrs数组中
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入学生 %d 的姓名:", i + 1);
fgets(names[i], MAX_NAME_LENGTH, stdin);
// 如果fgets函数读取了换行符,则将其替换为字符串结束符
if (names[i][strlen(names[i]) - 1] == '\n') {
names[i][strlen(names[i]) - 1] = '\0';
}
ptrs[i] = names[i];
}
// 使用指向指针的指针对学生姓名进行排序
char *temp;
for (int i = 0; i < NUM_STUDENTS - 1; i++) {
for (int j = i + 1; j < NUM_STUDENTS; j++) {
if (strcmp(ptrs[i], ptrs[j]) > 0) {
temp = ptrs[i];
ptrs[i] = ptrs[j];
ptrs[j] = temp;
}
}
}
// 打印排序后的学生姓名
printf("\n排序后的学生姓名为:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", ptrs[i]);
}
return 0;
}
```
在此示例中,我们首先使用二维字符数组`names`来存储学生姓名,然后使用字符指针数组`ptrs`来存储指向每个学生姓名的指针。接下来,我们使用`fgets`函数从用户输入中读取每个学生姓名,并将指向该姓名的指针存储到`ptrs`数组中。
最后,我们使用指向指针的指针对学生姓名进行排序。在这里,我们使用了C标准库中的`strcmp`函数来比较两个字符串的大小关系,并通过交换指针来实现排序。最后,我们打印排序后的学生姓名列表。
请注意,在此示例中,我们假设每个学生的姓名长度不超过50个字符。如果需要处理更长的姓名,请相应地增加`MAX_NAME_LENGTH`的值。
用c语言和指针交换输入的两个字符串
以下是用C语言和指针交换输入的两个字符串的示例代码:
```c
#include <stdio.h>
void swap(char **str1, char **str2) {
char *tmp = *str1;
*str1 = *str2;
*str2 = tmp;
}
int main() {
char str1[100], str2[100];
char *ptr1 = str1, *ptr2 = str2;
printf("Enter string 1: ");
scanf("%s", str1);
printf("Enter string 2: ");
scanf("%s", str2);
printf("Before swapping: \n");
printf("String 1: %s\n", str1);
printf("String 2: %s\n\n", str2);
swap(&ptr1, &ptr2);
printf("After swapping: \n");
printf("String 1: %s\n", str1);
printf("String 2: %s\n", str2);
return 0;
}
```
在这个示例中,我们定义了两个字符数组str1和str2,以及两个指向字符数组的指针ptr1和ptr2。我们使用scanf函数从标准输入中读取这两个字符串,并将它们分别存储在str1和str2中。
然后,我们将指向这两个字符串的指针作为参数传递给一个名为swap的函数。在这个函数中,我们定义了一个指针tmp来暂存str1的值,然后将str1的值替换为str2的值,最后将str2的值替换为tmp中存储的原始str1的值,从而交换了这两个字符串。
最后,我们在主函数中输出交换后的字符串。