C语言程序题
假定输入的字符串中只包含字母和*号。请编写程序,功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。字符串从键盘上输入。#include<stdio.h>
#include<string.h>
int main()
{
char a;
gets(a);
int i,l;
l=strlen(a);
char b;
for(i=l-1;i>=0;i--){
if(a!='*'){
b='\0';
break;
}
}
for(i;i>=0;i--){
b=a;
}
printf("%s",b);
} 本帖最后由 jackz007 于 2020-12-9 19:46 编辑
#include <stdio.h>
int main(void)
{
char s ;
int i ;
for(i = 0 ; (s = getchar()) != '\n' ; i ++) ;
s = '\0' ;
for(; i > 0 && s == '*' ; i --) s = '\0' ;
printf("%s\n" , s) ;
}
编译、运行实况
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
H***ello***W***orl*****d*******
H***ello***W***orl*****d
D:\00.Excise\C> 下面的程序基本符合你的题意:只包含字母和 * 号,但出现非字母以外的字符,就不能删除最后边的 * 号,其原因还需要时间探讨
#include<stdio.h>
int main()
{
int i, j = 0, n = 0, count = 0;
char ch, a;
while ((ch = getchar()) != '\n')
{
a = ch;
n++;
}
a = '8'; // 设置字符串结束标志
for (i = 0;i <= n;i++)
{
if (a == '*')
{
for (j = i + 1;j <= n;j++)
{
if (a == '*')
{
count++;
}
else if (a == '8')
{
break;
}
else
count = 0; // *号之后出现非*号
}
}
if (a == '8') // j 已经遍历完数组
{
break;
}
}
a = '\0';
printf("%s", a);
printf("\n");
} 头发 发表于 2020-12-9 18:56
你的程序没有输出 void fun(int *a, int *p)
{
char *t=a;
for(t=0;t<=p;t++)
while(*t!='*')
*(a++)=*t;
for(t=0;*t!='\0';t++)
*(a++)=*t;
*a='\0';
}
页:
[1]