1093 字符串A+B (20分)
 

给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。

输入格式:

输入在两行中分别给出 A 和 B,均为长度不超过 1的、由可见 ASCII 字符 (即码值为32~126)和空格组成的、由回车标识结束的非空字符串。

输出格式:

在一行中输出题面要求的 A 和 B 的和。

输入样例:

This is a sample test
to show you_How it works
 

输出样例:

This ampletowyu_Hrk

我战战兢兢 的 写了一个  while (~scanf("%c", &ch))  ,居然还真的A了,つ﹏⊂,我拿了一个128大小的数组当作去重的数组,凡是输入过的字符都会被标记,第二次输入的时候都会被跳过,不过需注意的是 '\0' 和 '\n' 需要特殊处理,要不然就有可能会出现输出不完全的情况或者换行输出的情况。还有就是记得给字符数组初始化,要不然就得一个个%c输出,不过这种代码没多大通用性

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 1000000 int main(void)
{
char ch;
int count = ;
int flag[] = {};
char str[MAX_SIZE] = {}; flag[(int)'\n'] = ;
while (~scanf("%c", &ch))
{
if (flag[(int)ch])
{
continue;
}
flag[(int)ch] = ;
str[count++] = ch;
} printf("%s\n", str); return ;
}

2020-02-15 11:36:51更新:

好吧,我觉得这样子更U•ェ•*U一点

#include <stdio.h>
#include <stdlib.h> int main(void)
{
int flag[] = {};
char c;
for (int i = ; i < ; i++)
{ //两个字符串,所以循环两次
while ((c = getchar()) != '\n')
{ //用输入是否为'\n'来判断字符串输入是否结束
if (flag[(int)c] == )
{
flag[(int)c] = ;
printf("%c", c);
}
}
}
return ;
}

干脆,数组也不要,直接裸奔,跑完就输出完了。(完了我又想到RTT了)

PAT不易,诸君共勉!

最新文章

  1. JVM内存管理------杂谈(借此也论一论obj=null)
  2. oracle中的exists 和not exists 用法详解
  3. Oracle数据库程序包全局变量的应用
  4. BZOJ 1028: [JSOI2007]麻将 暴力
  5. Oracle性能调优(AWR)
  6. HTML基本介绍
  7. thinkphp中find()和select()的区别
  8. ThinkPHP中,display和assign用法详解
  9. javascript学习日志:前言
  10. H5 音频标签自定义样式修改以及添加播放控制事件
  11. 优秀代码摘录片段一:LinkedList中定位index时使用折半思想
  12. 两个VirtualBox版本装的语言不一样?
  13. 4.1.6 Grundy数-硬币游戏2
  14. C#生成带Logo二维码
  15. html03
  16. Spring boot 注解简单备忘
  17. Java线程池相关类-Executor框架
  18. 【js】with 语句
  19. HDU 4489(DP)
  20. React Native开发环境的搭建

热门文章

  1. Tomcat热部署与热加载!
  2. 5种JVM调优配置方法概览
  3. win8.1 virtualbox 安装centos7注意事项
  4. word2vec词向量处理英文语料
  5. ubuntu修改pip的官方源为豆瓣源
  6. Ollydbg使用问题汇总
  7. VS Code 入门
  8. hdfs dfs ls /列出了本地根目录下文件夹和文件Warning: fs.defaultFS is not set when running &quot;ls&quot; command
  9. redis地理位置
  10. UGUI 特效怎样在UI上裁剪