华科2017年计算机学院机试题(c++)

在这里插入图片描述
分析:直接记录字符对应数字进行输入输出

#include<iostream>
using namespace std;


int main(){
	char c;
	cin>>c;
	if('A'<=c&&c<='Z'){
		int n=c-'A';
		for(int i=0;i<=n;i++)
		{
			for(int j=0;j<i;j++)
			cout<<"  ";
			for(int k=0;k<=n-i;k++)
			{
				char s='A'+k;
				cout<<s<<" ";
			}
			for(int k=n-i-1;k>=0;k--){
				char s='A'+k;
				cout<<s<<" ";
			}
			cout<<endl;
		}	
	}
		if('a'<=c&&c<='z'){ //两个部分可以统一处理减少代码
		int n=c-'a';
		for(int i=0;i<=n;i++)
		{
			for(int j=0;j<i;j++)
			cout<<"  ";
			for(int k=0;k<=n-i;k++)
			{
				char s='a'+k;
				cout<<s<<" ";
			}
			for(int k=n-i-1;k>=0;k--){
				char s='a'+k;
				cout<<s<<" ";
			}
			cout<<endl;
		}	
	}
	
	return 0;
}

在这里插入图片描述

在这里插入图片描述

分析:前处理,判断字符串规格后是否在字符串末尾添0;之后将字符转化为数字,再转字符添到末尾即可。

#include<iostream>
#include<string>
using namespace std;
string news;


int main(){
	string str;
	getline(cin,str);
	if(str.size()%2)str+="0";
	int sum=0;
	for(int i=0;i<str.size();i++){
		sum=sum*10+str[i]-'0';
		if(i%2){
			sum+=32;
		    news+=sum;
			sum=0;
		}
	}
	cout<<news<<endl; 
	return 0;
}

在这里插入图片描述

3.任意两个大数(正数)相加

分析:因为可能会溢出,不妨用字符串模拟相加结果,有点类似于两个链表相接的题目

#include<iostream>
#include<string>
using namespace std;

int main(){
	string a,b,c;
	getline(cin,a);
	getline(cin,b);
	int k=0;//进位标识符
	 int n=a.size(),m=b.size();
	 //下面步骤类似于两链表拼接
	 while(m&&n) {
	 	int h=a[--n]+b[--m]-'0'-'0'+k;
	 	c+=h%10+'0';
	 	k=h/10;
	 }
	 while(n>0){
		int h=a[--n]-'0'+k;
	 	c+=h%10+'0';
	 	k=h/10;
	 }
	 
	 while(m>0){
	 	int h=b[--m]-'0'+k;
	 	c+=h%10+'0';
	 	k=h/10;
	 }
	if(k)//进位到最高位 
	c+=k+'0';
	for(int i=c.size();i>0;){
		cout<<c[--i];
	}
	cout<<endl;
	return 0;
}

在这里插入图片描述

发布了63 篇原创文章 · 获赞 6 · 访问量 2009

猜你喜欢

转载自blog.csdn.net/qq_36684096/article/details/104982202