CC语习题
题目:规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如:字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容
应当是:****ABCDEFG。
注意:请勿改动主函数main和其它函数中的任何内容
在 /**********Program**********/
/**********End**********/中补充完整
#include <stdio.h>
voidfun( char *a )
{
/**********Program**********/
/**********End**********/
}
main()
{
chars;
printf("Enter a string:\n");
gets(s);
fun( s );
printf("The string after deleted:\n");
puts(s);
} 题目要求编写一个函数fun,功能是删除字符串中除了字符串前导的*号之外的所有*号。
我们可以使用两个指针来解决这个问题。一个指针用于遍历字符串,另一个指针用于记录删除*号后的字符串。
具体实现如下:
void fun(char *a) {
char *p = a;// 遍历指针
char *q = a;// 记录删除*号后的字符串指针
// 跳过字符串前导的*号
while (*p == '*') {
p++;
}
// 遍历字符串
while (*p != '\0') {
if (*p != '*') {
// 将非*号字符复制到删除*号后的字符串中
*q = *p;
q++;
}
p++;
}
// 在删除*号后的字符串末尾添加字符串结束符'\0'
*q = '\0';
}
在主函数中,我们首先输入一个字符串,然后调用fun函数进行处理,最后输出删除*号后的字符串。
int main() {
char s;
printf("Enter a string:\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
return 0;
}
这样就完成了对字符串中除了字符串前导的*号之外的所有*号的删除操作。 #include <stdio.h>
void fun(char *a) {
int leadingAsterisks = 0;
int i;
// 计算字符串前导的*号个数
for (i = 0; a[ i] == '*'; i++) {
leadingAsterisks++;
}
// 将非前导的*号删除
int j = leadingAsterisks;
while (a[ i] != '\0') {
if (a[ i] != '*') {
a = a[ i];
}
i++;
}
a = '\0'; // 添加字符串结束符
}
int main() {
char s;
printf("Enter a string:\n");
gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s);
return 0;
}
如果问题已经解决,请设置最佳答案
页:
[1]