请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc
时间: 2023-05-31 21:19:02 浏览: 168
从键盘输入一个字符串,如“www.moe.gov.cn”,编写程序,实现如下功能
### 回答1:
以下是使用指针的方法编写的程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
char *p = str; // 定义指向字符串的指针
while (*p != '\') { // 遍历字符串
if (*p != 'a') { // 如果当前字符不是'a',输出
printf("%c", *p);
}
p++; // 指针后移
}
printf("\n");
return ;
}
```
程序首先定义了一个字符数组 `str`,用于存储输入的字符串。然后定义了一个指向字符串的指针 `p`,并将其指向 `str` 的首地址。接着使用 `while` 循环遍历字符串,判断当前字符是否为字母 'a',如果不是,则输出该字符。最后,指针后移,继续遍历下一个字符。最终输出结果。
### 回答2:
首先,我们需要定义一个字符型指针变量,用于存储输入的字符串。然后,通过scanf函数从键盘读入字符串,并使用gets函数将其存储到指针变量中。代码片段如下:
```c
char *str;
str = (char *)malloc(100 * sizeof(char));
printf("请输入字符串:");
scanf("%s", str);
```
接下来,我们需要遍历字符数组,删除其中的字母a。由于字符串的长度不确定,我们需要使用while循环进行遍历。当遍历到字符串末尾时,循环结束。在循环中,可以使用if语句判断当前字符是否为字母a,如果不是则将其存储到新的字符数组中。代码片段如下:
```c
char *newstr;
newstr = (char *)malloc(100 * sizeof(char)); // 定义新的字符数组
int i = 0, j = 0; // i是遍历数组需要用到的变量,j是记录新字符串长度的变量
while(*(str + i) != '\0') { // 遍历数组
if(*(str + i) != 'a') { // 判断是否为字母a
*(newstr + j) = *(str + i); // 存储非a字符
j++; // 更新新字符串长度
}
i++; // 更新遍历变量
}
*(newstr + j) = '\0'; // 给新字符串添加结束符
```
最后,我们输出新的字符数组即可。代码片段如下:
```c
printf("删除后的字符串为:%s\n", newstr);
```
完整程序如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char *str;
str = (char *)malloc(100 * sizeof(char));
printf("请输入字符串:");
scanf("%s", str);
char *newstr;
newstr = (char *)malloc(100 * sizeof(char));
int i = 0, j = 0;
while(*(str + i) != '\0') {
if(*(str + i) != 'a') {
*(newstr + j) = *(str + i);
j++;
}
i++;
}
*(newstr + j) = '\0';
printf("删除后的字符串为:%s\n", newstr);
return 0;
}
```
### 回答3:
首先,需要定义一个字符数组来存储用户输入的字符串,并且使用scanf()函数来读取用户输入的字符串。
然后,需要定义一个指针变量来指向该字符串,以便删除其中的字符a。在定义指针变量时,需要使用char *变量名的形式来表示该指针变量类型为char型。
接下来,利用while循环和if语句来遍历字符串中的每一个字符,如果当前字符不是字符a,则将其添加到另一个新的字符串中,最终输出这个新字符串。
以下为示例代码:
```c
#include <stdio.h>
#include <string.h>
int main(){
char str[100];
printf("请输入一个字符串(字符串长度小于100):");
scanf("%s", str);
char *p = str;
char newstr[100];
int i = 0, j =0;
while(*p != '\0'){
if(*p != 'a'){
newstr[i] = *p;
i++;
}
p++;
}
newstr[i] = '\0';
printf("删除字母后的字符串为:%s\n", newstr);
return 0;
}
```
在上面的代码中,首先通过scanf()函数读取用户输入的字符串,并将其存储在名为str的字符数组中。
然后,定义指针变量p指向该字符串的首地址,即p=str。
使用while循环和if语句遍历字符串中的每一个字符,如果当前字符不是字符a,则将其添加到另一个新的字符数组newstr中,然后将指针p向后移动一位。
最后,在newstr的末尾添加一个空字符'\0',以表示字符串的结束,并输出结果。
阅读全文