7-1 删除字符串中指定字母
分数 10
作者 齐心
单位 湖北汽车工业学院
请使用指针的方法编写程序,程序的功能是从键盘输入一个字符串(字符串长度小于100),删除其中的字母a后输出。例如,输入字符串abcaca,输出bcc。
输入样例:
abcaca
输出样例:
bcc
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C (gcc)
1
稍等,人工回答,比较慢
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
scanf("%s", str);
char *p = str;
while (*p != '\0')
{
if (*p != 'a')
{
printf("%c", *p);
}
p++;
}
return 0;
}
以下是使用指针的方法编写的C语言程序,可以实现从键盘输入一个字符串,删除其中的字母a后输出:
c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char *p = str;
int len = strlen(str);
int i;
printf("Enter a string (less than 100 characters): ");
fgets(str, sizeof(str), stdin);
for (i = 0; i < len; i++) {
if (str[i] != 'a') {
*(p++) = str[i];
}
}
*(p-1) = '\0';
printf("Result: %s\n", str);
return 0;
}
程序首先定义了一个字符数组str和一个指向字符数组的指针p。然后使用fgets()函数从标准输入中读取一个字符串,并将其存储在str中。
接下来,程序使用一个循环遍历str中的每个字符,如果当前字符不是字母a,则将其复制到指针p所指向的位置。
最后,程序将指针p所指向的字符串的末尾设置为'\0',以确保输出的字符串以空字符结尾。最后,程序使用printf()函数输出结果。
注意,在使用指针时,需要注意指针的类型和指针的位置。在本程序中,我们使用了一个字符指针p来指向字符数组str,并使用*(p++)来复制字符。
供参考:
#include <stdio.h>
int main()
{
char s[100], c = 'a', * p = s, * q = s;
gets(s);
while (*p) {
if (*p != c) *q++ = *p;
p++;
}
*q = '\0';
puts(s);
return 0;
}
#include <stdio.h>
int main()
{
char a[101],b[101],*p1=a,*p2=b;
gets(a);
for(;*p1!='\0';p1++)
if(*p1!='a')
*(p2++)=*p1;
*p2='\0';
puts(b);
return 0;
}
当指针变量指向一个包含四个元素的数组 int (*p)[4]p指向一个包含四个元素的一维数组如何进行调用
int a[4]={1,2,3,4};
int (*p)[4];
p=&a;
printf("%d\n",(*p)[3]);//p=a恒等于p=&a[0],此时指向的就是一个元素了
p=a;//表示p指向二维数组的第0行
调用printf函数,%s的格式输出字符串时,字符数组名、字符指针和字符串常量都可以作为输出参数。
数组的基地址是在内存中存储数组的起始位置,数组名本身就是一个地址即指针值。
定义一个指针数组并初始化赋值若干个字符串常量,则指针数组并不存放这些字符串,而仅仅指向各个字符串。
指针定义后,可以指向同类型的任何变量。
定义数组之后如果用数组输入的话就不要加地址符了,因为指针本来就指向一个地址