鱼C论坛

 找回密码
 立即注册
查看: 1396|回复: 5

[已解决]C语言程序题

[复制链接]
发表于 2020-12-9 17:55:48 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假定输入的字符串中只包含字母和*号。请编写程序,功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。字符串从键盘上输入。
最佳答案
2020-12-9 19:38:33
本帖最后由 jackz007 于 2020-12-9 19:46 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char s[256]                                            ;
  5.         int i                                                  ;
  6.         for(i = 0 ; (s[i] = getchar()) != '\n' ; i ++)         ;
  7.         s[i] = '\0'                                            ;
  8.         for(; i > 0 && s[i - 1] == '*' ; i --) s[i - 1] = '\0' ;
  9.         printf("%s\n" , s)                                     ;
  10. }
复制代码

       编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. H***ello***W***orl*****d*******
  4. H***ello***W***orl*****d

  5. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-9 18:56:13 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.         char a[66];
  6.         gets(a);
  7.         int i,l;
  8.         l=strlen(a);
  9.         char b[88];
  10.         for(i=l-1;i>=0;i--){
  11.                 if(a[i]!='*'){
  12.                         b[i+1]='\0';
  13.                         break;
  14.         }
  15.         }
  16.         for(i;i>=0;i--){
  17.                 b[i]=a[i];
  18.         }
  19.         printf("%s",b);
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-9 19:38:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-9 19:46 编辑
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.         char s[256]                                            ;
  5.         int i                                                  ;
  6.         for(i = 0 ; (s[i] = getchar()) != '\n' ; i ++)         ;
  7.         s[i] = '\0'                                            ;
  8.         for(; i > 0 && s[i - 1] == '*' ; i --) s[i - 1] = '\0' ;
  9.         printf("%s\n" , s)                                     ;
  10. }
复制代码

       编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. H***ello***W***orl*****d*******
  4. H***ello***W***orl*****d

  5. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-10 00:36:28 | 显示全部楼层
下面的程序基本符合你的题意:只包含字母和 * 号,但出现非字母以外的字符,就不能删除最后边的 * 号,其原因还需要时间探讨
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         int i, j = 0, n = 0, count = 0;
  5.         char ch, a[256];
  6.         while ((ch = getchar()) != '\n')
  7.         {
  8.                 a[n] = ch;
  9.                 n++;
  10.         }
  11.         a[n] = '8';          // 设置字符串结束标志
  12.        
  13.     for (i = 0;i <= n;i++)
  14.         {
  15.                 if (a[i] == '*')
  16.                 {
  17.                         for (j = i + 1;j <= n;j++)
  18.                         {
  19.                                 if (a[j] == '*')
  20.                                 {
  21.                                         count++;
  22.                                 }
  23.                                 else if (a[j] == '8')
  24.                                 {
  25.                                         break;
  26.                                 }
  27.                                 else
  28.                                         count = 0;   // *号之后出现非*号
  29.                         }
  30.                 }
  31.                 if (a[j] == '8')         // j 已经遍历完数组
  32.                 {
  33.                         break;
  34.                 }
  35.         }
  36.         a[n - count] = '\0';
  37.         printf("%s", a);
  38.         printf("\n");
  39. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-10 00:50:52 | 显示全部楼层

你的程序没有输出
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-3 08:46:35 From FishC Mobile | 显示全部楼层
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';
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表