欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-25 18:29:58
...

华科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;
}

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

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

分析:前处理,判断字符串规格后是否在字符串末尾添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;
}

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

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;
}

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