蹈厉 发表于 2020-12-9 17:55:48

C语言程序题

假定输入的字符串中只包含字母和*号。请编写程序,功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。字符串从键盘上输入。

头发 发表于 2020-12-9 18:56:13

#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:38:33

本帖最后由 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>

风过无痕1989 发表于 2020-12-10 00:36:28

下面的程序基本符合你的题意:只包含字母和 * 号,但出现非字母以外的字符,就不能删除最后边的 * 号,其原因还需要时间探讨
#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");
}

风过无痕1989 发表于 2020-12-10 00:50:52

头发 发表于 2020-12-9 18:56


你的程序没有输出

萨迪滴 发表于 2021-3-3 08:46:35

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]
查看完整版本: C语言程序题