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);
}
帮忙填一填空 (1) *p != *s(2) *(s2+ p- s1)
网上直接搜就好了https://wenku.baidu.com/view/49fa8605864769eae009581b6bd97f192279bf62.html 心驰神往 发表于 2021-1-3 08:55
(1) *p != *s(2) *(s2+ p- s1)
网上直接搜就好了https://wenku.baidu.com/view/49fa8605864769eae009581 ...
编译器显示有错? 肚子饿了233 发表于 2021-1-3 09:50
编译器显示有错?
我看一下 肚子饿了233 发表于 2021-1-3 09:50
编译器显示有错?
(2)少加了一个括号*(s2+ (p- s1)) 心驰神往 发表于 2021-1-3 10:14
(2)少加了一个括号*(s2+ (p- s1))
运行的结果不符题意 肚子饿了233 发表于 2021-1-3 10:22
运行的结果不符题意
结果不是要aBcBa吗 肚子饿了233 发表于 2021-1-3 10:22
运行的结果不符题意
你这个题不就是要将s中的大写AC变成小写ac 心驰神往 发表于 2021-1-3 10:31
你这个题不就是要将s中的大写AC变成小写ac
你是对的 肚子饿了233 发表于 2021-1-3 10:44
你是对的
可以的话给个最佳吧 本帖最后由 风过无痕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 中的对等字符
} 昨晚就看到这个求助帖子了,本以为我今天能够达成心愿 ---- 技术值达到 500,就在三个月内不再回答任何问题了,专心学习 《windows 程序设计》及《网络编程》。刚才一看只有 499,还差一个,就回答此帖子,并非我前两天说不回答你帖子的理由又改变了 我的 500 达到了,楼上的答案是正确的,我修改后,也不希望得到这个最佳 风过无痕1989 发表于 2021-1-3 11:10
谢谢回复哈,但是我得告诉你一个残忍的真相:你的06代码是错的!不符题意。 风过无痕1989 发表于 2021-1-3 11:23
昨晚就看到这个求助帖子了,本以为我今天能够达成心愿 ---- 技术值达到 500,就在三个月内不再回答任何问题 ...
啧啧啧,都懂都懂{:5_109:} 风过无痕1989 发表于 2021-1-3 12:03
我的 500 达到了,楼上的答案是正确的,我修改后,也不希望得到这个最佳
最佳答案别人早就给了。 心驰神往 发表于 2021-1-3 10:14
(2)少加了一个括号*(s2+ (p- s1))
大神,*(s2+(p-s1))这是啥意思呀?为啥中间不打括号编译器无法编译? 肚子饿了233 发表于 2021-1-3 19:08
大神,*(s2+(p-s1))这是啥意思呀?为啥中间不打括号编译器无法编译?
作用是找到用s2对应字符替换,具体为什么这么写的话我还不知道。最近刚开始学。你可以看下这个https://blog.csdn.net/weixin_33834910/article/details/93844968
页:
[1]