输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
string str1;
cin>>str;
string::iterator iter =str1.begin();
for(int i=str.length()-1;i>=0;i--) {
if(str[i]=='-')
cout<<"-";
else if(str[i]=='0'&&i==str.length()-1)
continue;
else if(str1.find(str[i])==-1)
{
str1.insert(iter,str[i]);
iter++;
}
}
cout<<str1<<endl;
return 0;
}
编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。提示:用堆栈来做。
输入:if((a==1)&&(b==1))
输出:RIGTH 3 3
输入:if((a==1))&&(b==1))
输出:WRONG 3 4
#include <iostream>
#include <stack>
#include <string>
using namespace std;
stack <char> p;
string str;
int main()
{
cin>>str;
int num1=0,num2=0;
for(int i=0;i<str.length();i++) {
if(str[i]=='(')
{
p.push(str[i]);
num1++;
}
else if(str[i]==')')
{
num2++;
if(p.empty())
{
cout<<"WRONG"<<" "<<num1<<" "<<num2<<endl;
return 0;
}
else {
p.pop();
}
}
}
if(p.empty()==1)
cout<<"RIGHT"<<" "<<num1<<" "<<num2<<endl;
else
cout<<"WRONG"<<" "<<num1<<" "<<num2<<endl;
return 0;
}
输入m个字符串 和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。
如 n=8 m=9 ,
123456789划分为:12345678
90000000
123化为 :12300000
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
string str1;
int n;
cin>>str;
cin>>n;
int m=str.length();
int k=m/n;
if(k==0) {
for(int i=m;i<n;i++)
str.append("0");
}
else {
for(int i=m;i<(k+1)*n;i++)
{
//str.reserve((k+1)*n);
str.append("0");
}
}
int j=0,l=n;
while(k>-1) {
str1=str.substr(j,l);
cout<<str1<<endl;
j=l;
l=l+n;
k--;
}
return 0;
}
整数化为2进制数,32位长度。然后逆序输出
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int num,n=0;
cin>>num;
while(num) {
str.push_back(num%2+'0');
num/=2;
n++;
}
while(n<32)
{
str.push_back('0');
n++;
}
for(int i=0;i<str.length();i++)
cout<<str[i];
return 0;
}
给定一个数,比如20
然后 再给定几个数字 1 3 5 7 8
1 3 5 7 8
0 0 1 1 1
因为5+7+8=20
#include<iostream>
#include<string>
using namespace std;
int find(int m,int num[],bool l[],int n)
{
if(m==0)
return 1;
if((m>0&&n<0)||m<0)
return 0;
if(find(m-num[n],num,l,n-1))
{
l[n]=true;
return 1; //这步需要返回1
}
else
return find(m,num,l,n-1);
}
int main()
{
int num[100],m,n=-1;
cin>>m;
while(cin>>num[++n]);
bool *l=new bool[n];
for(int i=0;i<n;i++)
l[i]=false;
if(find(m,num,l,n-1))
{
for(int i=0;i<n;i++)
cout<<l[i]<<" ";
cout<<endl;
}
else
cout<<"NO"<<endl;
delete []l;
return 0;
}