肚子饿了233 发表于 2021-1-3 00:09:03

C语言程序填空题!

1. 以下程序中函数replace的功能是:将字符串s中所有属于字符串s1中的字符都用s2中的对应位置的字符替换。假如s为“ABCBA”,s1为“AC”,s2为“ac”,则调用replace函数后,字符串s的内容将变换为“aBcBa”。试完善程序以达到要求的功能。
#include <stdio.h>
#define MAX 20
void replace(char *s, char *s1, char *s2)
{char *p;
   for(; *s; s++)
   {p=s1;
      while(*p&&   (1)   ) p++;   
      if(*p)*s=      (2)      ;      
   }
}
void main( )
{char s="ABCBA",s1="AC", s2= "ac";
      replace(s, s1, s2);            
      printf("The string of s is:");
      printf("%s\n", s);
}

帮忙填一填空

心驰神往 发表于 2021-1-3 08:55:21

(1) *p != *s(2) *(s2+ p- s1)
网上直接搜就好了https://wenku.baidu.com/view/49fa8605864769eae009581b6bd97f192279bf62.html

肚子饿了233 发表于 2021-1-3 09:50:05

心驰神往 发表于 2021-1-3 08:55
(1) *p != *s(2) *(s2+ p- s1)
网上直接搜就好了https://wenku.baidu.com/view/49fa8605864769eae009581 ...

编译器显示有错?

心驰神往 发表于 2021-1-3 09:59:43

肚子饿了233 发表于 2021-1-3 09:50
编译器显示有错?

我看一下

心驰神往 发表于 2021-1-3 10:14:48

肚子饿了233 发表于 2021-1-3 09:50
编译器显示有错?

(2)少加了一个括号*(s2+ (p- s1))

肚子饿了233 发表于 2021-1-3 10:22:34

心驰神往 发表于 2021-1-3 10:14
(2)少加了一个括号*(s2+ (p- s1))

运行的结果不符题意

心驰神往 发表于 2021-1-3 10:25:35

肚子饿了233 发表于 2021-1-3 10:22
运行的结果不符题意

结果不是要aBcBa吗

心驰神往 发表于 2021-1-3 10:31:17

肚子饿了233 发表于 2021-1-3 10:22
运行的结果不符题意

你这个题不就是要将s中的大写AC变成小写ac

肚子饿了233 发表于 2021-1-3 10:44:16

心驰神往 发表于 2021-1-3 10:31
你这个题不就是要将s中的大写AC变成小写ac

你是对的

心驰神往 发表于 2021-1-3 10:51:15

肚子饿了233 发表于 2021-1-3 10:44
你是对的

可以的话给个最佳吧

风过无痕1989 发表于 2021-1-3 11:10:31

本帖最后由 风过无痕1989 于 2021-1-3 12:09 编辑

{
    p = s1;                     // 将s1的地址赋给指针p
    while (*p && *p != *s)      // *p != '0'&&*p != *s 时循环
      p++;                      // 否则,p 指向下一个字符
    if (*p)                     // *p != '0'
      *s = *((p - s1) + s2);    // 用 s2 中的字符置换 s 中的对等字符
}

风过无痕1989 发表于 2021-1-3 11:23:17

昨晚就看到这个求助帖子了,本以为我今天能够达成心愿 ---- 技术值达到 500,就在三个月内不再回答任何问题了,专心学习 《windows 程序设计》及《网络编程》。刚才一看只有 499,还差一个,就回答此帖子,并非我前两天说不回答你帖子的理由又改变了

风过无痕1989 发表于 2021-1-3 12:03:21

我的 500 达到了,楼上的答案是正确的,我修改后,也不希望得到这个最佳

肚子饿了233 发表于 2021-1-3 12:05:10

风过无痕1989 发表于 2021-1-3 11:10


谢谢回复哈,但是我得告诉你一个残忍的真相:你的06代码是错的!不符题意。

肚子饿了233 发表于 2021-1-3 12:05:45

风过无痕1989 发表于 2021-1-3 11:23
昨晚就看到这个求助帖子了,本以为我今天能够达成心愿 ---- 技术值达到 500,就在三个月内不再回答任何问题 ...

啧啧啧,都懂都懂{:5_109:}

肚子饿了233 发表于 2021-1-3 12:09:15

风过无痕1989 发表于 2021-1-3 12:03
我的 500 达到了,楼上的答案是正确的,我修改后,也不希望得到这个最佳

最佳答案别人早就给了。

肚子饿了233 发表于 2021-1-3 19:08:12

心驰神往 发表于 2021-1-3 10:14
(2)少加了一个括号*(s2+ (p- s1))

大神,*(s2+(p-s1))这是啥意思呀?为啥中间不打括号编译器无法编译?

心驰神往 发表于 2021-1-3 22:05:45

肚子饿了233 发表于 2021-1-3 19:08
大神,*(s2+(p-s1))这是啥意思呀?为啥中间不打括号编译器无法编译?

作用是找到用s2对应字符替换,具体为什么这么写的话我还不知道。最近刚开始学。你可以看下这个https://blog.csdn.net/weixin_33834910/article/details/93844968
页: [1]
查看完整版本: C语言程序填空题!