大小写互换
现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。
输入
第一行只有一个整数m(m<=10),表示测试数据组数。
接下来的m行,每行有一个字符串(长度不超过100)。
输出
输出互换后的字符串,每组输出占一行。
样例输入
2 Acm ACCEPTED
样例输出
aCM accepted
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define endl '\n'
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int m;
cin>>m;
while(m--){
string s,t;
cin>>s;
t.resize(s.size());
//transform函数的作用是:将某操作应用于指定范围的每个元素。
/*transform(first,last,result,op);first是容器的首迭代器,last为容器的末迭代器,result为存放结果的容器,op为要进行操作的一元函数对象或sturct、class。*/
transform(s.begin(),s.end(),t.begin(),[](char c){
if(isupper(c))return tolower(c);//isupper()函数用来判断一个字符是否为大写字母
else return toupper(c);});
//toupper()函数:把小写字母转换为大写字母
//tolower()函数:把大写字母转换为小写字母
cout<<t<<endl;
}
return 0;
}
机器指令
“让我看看…下一个语句是$C64410…翻译成二进制代码是110001100100010000010000…分段后是110-00-110-1100100010000010000…第一段的110对应的汇编指令是mov…接下来的00表示的是寄存器ax…第三段的110表示的是间接寻址…然后1100100010000010000是内存地址…Finallyyyyyy…对应的汇编语句是mov([1044],ax)--将内存地址为1044的内存中的数据存入ax.”
丁丁同学正为下午的Understanding The Machine 作业中一道将十六进制机器码翻译成汇编语言的题忙得焦头烂额。这种对着一个译码表“进行符号转化”的活,向来是丁丁同学最不能容忍的 – 宝贵的时间就在这样的一道”民工题”上一秒一秒地流逝…唉…
丁丁希望你能编写一个程序来帮帮他。当然,他不会那么残忍地让你去编写一个编译器完成整套工作。他只希望你帮他完成一个小小的模块--将十六进制数转化为二进制数。你可以帮助他么?
输入
多组输入,样例数最大为100。
每组输入是一个由"0123456789ABCDEF"十六种字符组成的一个序列。序列的长度N的满足: 1<= N <= 10,000。每个序列以换行符结束。
输出
这个序列对应的二进制数。输出每个序列后换行。
样例输入
C6 88D7
样例输出
11000110 1000100011010111
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define endl '\n'
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string n;
int x;
while(cin>>n){
for(char ch:n){
string s(1,ch);// 将字符 ch 转换为一个只包含该字符的字符串s
istringstream iss(s);//istringstream作用是从string对象str中读取字符
iss>>hex>>x;
//将 iss 输入流中的数据依次按十六进制格式读取并解析,然后将解析得到的整数存储到变量 x 中
int a=x/8,b=x%8/4,c=x%4/2,d=x%2;
cout<<a<<b<<c<<d;
}
cout<<endl;
}
return 0;
}
istringstream作用举例
#include<bits/stdc++.h>
using namespace std;
int main(){
string str="i am a boy";
istringstream is(str);
string s;
while(is>>s)
{
cout<<s<<endl;
}
}
输出为:
i
am
a
boy
分数化小数
输入正整数a,b,c 其中1≤a,b<1e6,c≤100输出a/b的小数形式,精确到小数点后的c位,例如a=1,b=6,c=4输出应该是0.1667
输入
多组输入,每行有3个正整数a,b,c
输出
输出a/b的小数形式,精确到小数点后的c位
样例输入
1 6 4 1 2 20
样例输出
0.1667 0.50000000000000000000
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define endl '\n'
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int a,b,c;
while(cin>>a>>b>>c){
vector<int> v;
cout<<a/b<<".";
a%=b;
for(int i=0;i<=c;i++){
a*=10;
v.push_back(a/b);
a%=b;
}
int cs;
if(v.back()>=5)cs=1;
else cs=0;//cs用来四舍五入的,若小数点后c+1位大于等于五则c位加一,否则不加
v.pop_back();
//这段代码用来处理四舍五入导致前面位置的小数产生进数
//如a/b=0.8999,保留后面三位,第四位为9,要四舍五入进一,可是这样就导致了第三位小数变成了10,产生了进位
for(int i=v.size()-1;i>=0&&cs;i--){
int temp=v[i]+cs;
v[i]=temp%10;
cs=temp/10;
}
for(int i=0;i<v.size();i++)
cout<<v[i];
cout<<endl;
}
return 0;
}