重生之我是带学生(2021.9.21)

PTA练习题

1.输出A+B千位逗号

 第一次提交,部分正确

#include <iostream>
using namespace std;
int main() {
	int a, b;
	int count = 0;	//用于控制逗号位置 
	
	cin >> a >> b;
	string s = to_string(a + b);	//转字符串处理 

	if(s[0] == '-'){
		cout << '-';
		s.erase(0, 1);	//为负数则输出负号,再处理逗号 
	}
	
	for(int i = 0;i <= s.length();i++){
		count++;
		if(count%3==0){
			cout << ",";
		}
		cout << s[i];
	}
}

大意了,未去掉末尾的逗号

  

第二次提交还是部分出错,找了半天发现是因为逗号输出是从前向后的,修改输出方式为插入逗号后最终整体输出

#include <iostream>
using namespace std;
int main() {
	int a, b;
	int count = 0;	//用于控制逗号位置 
	
	cin >> a >> b;
	string s = to_string(a + b);	//转字符串处理 

	if(s[0] == '-'){
		cout << '-';
		s.erase(0, 1);	//为负数则输出负号,再处理逗号 
	}
	
	for(int i = s.length();i >= 0;i--){
		count++;
		if((count%3==0)&&(i > 0)){
			s.insert(i - 1, ",");
		}
	}
	
	cout << s;
}

哭了,还是有两个测试点错误,反复测试发现有时会在第一位输出逗号,将判定范围后移,终于对了。

#include <iostream>
using namespace std;
int main() {
	int a, b;
	int count = 0;	//用于控制逗号位置 
	
	cin >> a >> b;
	string s = to_string(a + b);	//转字符串处理 

	if(s[0] == '-'){
		cout << '-';
		s.erase(0, 1);	//为负数则输出负号,再处理逗号 
	}
	
	for(int i = s.length();i > 0;i--){
		count++;
		if((count%3==0)&&(i > 1)){
			s.insert(i - 1, ",");
		}
	}
	
	cout << s;
}

2.多项式相加

#include <iostream>
using namespace std;

int main(){
	
	double pol[1002] = {0.0};	//总矩阵初始为0.0,存放对应位置的系数 
	int ex,n;	//每行的输入指数和输入项数 
	int count = 0;	//计数共有多少非零项 
	double co;	//每行的输入系数 
	
	//输入 
	cin >> n;
	for(int i = 0;i < n;i++){
		cin >> ex >> co;
		pol[ex] += co;
	}
	cin >> n;
	for(int i = 0;i < n;i++){
		cin >> ex >> co;
		pol[ex] += co;
	}
	
	//清点非零项个数 
	for(int i = 0;i < 1002;i++){
		if(pol[i] != 0){
			count++;
		}
	}
	
	cout << count << " ";
	
	for(int i = 1001;i >= 0;i--){
		if(pol[i] != 0){
			cout << i << " " << pol[i] << " ";
		}
	}
}

对上了题例,多种错误,麻了,明天再继续 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值