指针原来是套娃的


私信TA

用户名:uq_92467646842

访问量:43397

签 名:

数学改变科学,科学改变世界

等  级
排  名 10
经  验 25172
参赛次数 49
文章发表 128
年  龄 0
在职情况 学生
学  校
专  业 物联网工程

  自我简介:

QQ:2830671713

解题思路:

这道题用c++的cin和c语言的%s做都很简单,因为cin输入%s输入都是遇到空格就停止,所以在输入的时候就实现了单词分隔。

当然 c++的string类型更方便一点,因为string类型可以进行=的赋值,还可以直接用==进行比较,不过差距也不大。

在代码里面,在全部输入结束以后,使用字符指针指向最后面的两个字符串,通过字符指针来实现快速的“赋值”。

使用string.h里面的strcmp函数,进行两个字符串的比较,如果相等就会返回0。

最后打印出来即可。


注意!!!

这里在输入的时候将EOF结束符也读取了进去,所以最后一个不是我们看到的b字符串,而是EOF结束符。

所以代码里面是-3和-2 而不是我们逻辑上的-2 -1。这是判题原理的问题,不是逻辑上的问题。


参考代码:

#include <stdio.h>
#include <string.h>

int main(){
	char s[107][107];
	char *a,*b;
	int i=0,k=0;
	while(scanf("%s",s[k++])!=EOF);
	// 指向需要替换的字符串 
	a=s[k-3];
	b=s[k-2];
	for(i=0;i<k-3;i++){
		// 如果是需要替换的字符串 
		if(strcmp(s[i],a)==0){
			// 替换 
			printf("%s ",b);
		}else{
			printf("%s ",s[i]);
		}
	}
	
	return 0;
}


以上。

 

0.0分

157 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

作者你好,我认为索引多减1的地方不在于eof,而在于while后置递增符(包含敏感词,打不出来,烦死了)
2024-03-06 22:53:24
  • «
  • 1
  • »