#include<iostream> #include<string.h> #include<stdio.h> using namespace std; #define N 128 int main() { int i=0,sum; bool is_exist[N]; char ch; char str[10000]; //void *memset(void *s,int ch,size_t n) //将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值 memset(is_exist,0,sizeof(is_exist)); //把用户的每个输入的字符放入str中,直到用户输入了换行停止 while(scanf("%c",&ch)&&ch!=‘\n‘){ //输入的这个字符放在数组中自动转换成对应的ASCII值,更新 is_exist is_exist[ch]=true; //把输入的字符存入str这个字符数组 str[i++]=ch; } //sum记录的是第一次输入的字符串的长度 sum=i; //让用户第二次输入字符串 while(scanf("%c",&ch)&&ch!=‘\n‘){ //让is_exist对应的字符的ASCII位标记为false is_exist[ch]=false; } i=0; while(i<sum){ //如果在str[i]的ASCII值做下标 ,在is_exist中不是false,那么是0或者true //说明这个字符在第二次的输入中没有出现过 if(is_exist[str[i]]!=false) //输出该字符 printf("%c",str[i]); i++; } return 0; }
总结:1.把字符作为数组的下标会转化为该字符对应的ASCII码。
2.memset函数的使用:void *memset(void *s, int ch, size_t n);
含义:将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定
作用:在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
PAT---1050. String Subtraction (20)
时间: 2024-10-18 18:25:10