常见编程题

来源:互联网 发布:telnet 80端口不通 编辑:程序博客网 时间:2024/06/03 22:42
1. 输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。

备注:1、两个整数都是正整数,被减数大于减数

示例:

输入:1000000000000001

            1

输出:1000000000000000


#include <iostream>#include<string>using namespace std;int main(){  string A,B;  cin>>A;  cin>>B;  int *Res=new int[A.size()];  int n=0;  int f=0; //借位标志  for(int i=A.size()-1,j=B.size()-1;i>=0;i--,j--)  {  int m1=A[i]-'0';  int m2;  if(j>=0)  {  m2=B[j]-'0';  }  else  {  m2=0;  }    if(1==f) //如果有借位  {         m1=m1-1; f=0;  }  if(m1>=m2)  {  Res[n++]=m1-m2;  }  else  {  f=1;  Res[n++]=m1+10-m2;  }  }  int flag=0; //判断最高为是否为0的标志  for(int i=n-1;i>=0;i--)  {  if(0==flag && 0==Res[i])  {  continue;  }  else  {   flag=1;  cout<<Res[i];  }  }  cout<<endl;  delete[] Res;  system("pause");  return 0;}

2.

输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。

 * 要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符

#include<iostream>#include<string>using namespace std;string GetConvertString(string s);int main(){string input;cin>>input;    cout<<GetConvertString(input)<<endl;system("pause");return 0;}string GetConvertString(string s){int n=s.length();for(int i=0;i<n;i++){s[i]='a'+(s[i]-'a'+5)%26;}return s;}

3.

编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。提示:用堆栈来做。

输入:if((a==1)&&(b==1))

输出:RIGTH3 3

输入:if((a==1))&&(b==1))

输出:WRONG3 4

#include<iostream>#include<string>#define Max 100using namespace std;int main(){string input;cin>>input;int n=input.length();    int LeftNum=0;int RightNum=0;char a[Max];int k=0;bool flag =true;for(int i=0;i<n;i++){if('('==input[i]){LeftNum++;a[k++]=1;}else if(')'==input[i]){RightNum++;if(k>0 && 1==a[k-1]){a[k-1]=0;k--;}else{flag=false;}}if((2==i && input[2]!='(')||(n-1==i && ')'!=input[n-1])){flag=false;}}if(true==flag && a[0]==0) {   cout<<"RIGHT"<<" ";}else{cout<<"WRONG"<<" ";}cout<<LeftNum<<" "<<RightNum<<endl;system("pause");return 0;}

4.手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。

输入:aaabbbccc

输出:a 3

      b 3

      c 3

#include<iostream>#include<string>using namespace std;int main(){int a[26]={0};string input;cin>>input;for(int i=0;i<input.length();i++){   a[input[i]-'a']++;}for(int i=0;i<26;i++){if(0!=a[i]){char tmp='a'+i;cout<<tmp<<" "<<a[i]<<endl;}}system("pause");return 0;}

5.

大数相加

#include<iostream>#include<string>using namespace std;int main(){string C;string D;cin>>C;cin>>D;string A;string B;if(C.length()>D.length()){A=C;B=D;}else{A=D;B=C;}int *res=new int[A.length()+1]; //有可能进位. 故加1int f=0; //进位标志int k=0;for(int i=A.length()-1,j=B.length()-1;i>=0;i--,j--){    int m1=A[i]-'0';int m2;if(j>=0){m2=B[j]-'0';}else{m2=0;}if(1==f){f=0;m1=m1+1;}if(m1+m2<10){res[k++]=m1+m2;}else{f=1;res[k++]=m1+m2-10;}}if(1==f){res[k++]=1;}for(int j=k-1;j>=0;j--){cout<<res[j];}cout<<endl;system("pause");return 0;}





0 0