IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 计算机二级考试C语言编程解读:排查字符串查找代码错误 -> 正文阅读

[C++知识库]计算机二级考试C语言编程解读:排查字符串查找代码错误

给定程序MODI1.C中, 函数fun的功能是:逐个判断字符串s2中的字符是否在字符串s1中出现过, 并把出现过的字符按照原来在s2中的顺序形成新字符串s3, 不去除重复字符。
例如, 当s1为:"abcdefghijk", s2为:"zbcyedmnpggn" 时, 则s3应该是:"bcedgg"
请改正函数fun中指定部位的错误, 使它能得出正确的结果。
注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构 !

考点:函数

MODI1.C代码文件

#include <stdio.h> 
#include <string.h> 
void fun( char *s1, char *s2, char *s3)
{   int i,j,k=0;
	for(i = 0; i<strlen(s2); i++)  
	{	for(j = 0; j<strlen(s1); j++)  
/**********************found***********************/
			if (s2[i] != s1[j])
			   break;
/**********************found***********************/
		if (j>=strlen(s1))
/**********************found***********************/
			s3[++k]=s2[i];
	}
	s3[k] = '\0';
}
void main() 
{	char s1[128], s2[128], s3[128];  
	printf("Please input string1:"); 
	gets(s1);   
	printf("Please input string2:");  
	gets(s2);    
	fun(s1,s2,s3);
	printf("string:%s\n", s3);   
}

试题解读:

(1) 根据题意, fun函数在循环中需要判断s2[i]是否在s1中出现, 所以将s2[i]与s1的每一个字符进行比较, 如果与s1[j]相等, 说明s2[i]在s1中出现了, 跳出s1的循环, 第一空修改为:if (s2[i] == s1[j]) 。

(2) 内嵌的s1循环结束后, 需要判断j是否遍历完s1字符串, 若j小于strlen(s1), 说明在内嵌的循环中执行了break语句, 满足s2[i] == s1[j], s2[i]在s1中出现了, 需要存放到s3中; 若j不小于strlen(s1), 说明内嵌的for循环是循环条件不满足终止的, s2[i]在s1中未出现, 不需要存放到s3中; 所以第二空修改为:if (j < strlen(s1)) 。

(3) 由(2)可知若j小于strlen(s1), 说明在内嵌的循环中执行了break语句, 满足s2[i] == s1[j], s2[i]在s1中出现了, 需要存放到s3中, 由于k初值为0, 所以k表示当前应该存放的下标, s2[i]存放到s3[k]中后, k再自增1。

参考答案:

(1) if (s2[i] == s1[j])

(2) if (j < strlen(s1))

(3) s3[k++] = s2[i];

---------------------------------------------------------------------------------------------------------------------------------

编程训练营APP

计算机二级考试学习刷题工具

安卓手机应用商店

搜索编程训练营下载
?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 15:59:31  更:2022-04-06 16:02:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:48:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码