PTA 1001 1002(C++)
2022/1/4 14:08:21
本文主要是介绍PTA 1001 1002(C++),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
自己记录用!方法很笨,底子不好!
输入数据很大,用字符串输入转成数字。用strlen计算字符串长,把字符串读到char类型数组A中。用它得加一个<string.h>,<string>不行。A[i]-'0'后就变成了每一位数字(ASCII码)。其中本来用gets(A)读取字符串,自己电脑用DEVC++可以,但是PTA上不识别,改成了cin。
switch不加break会满足一个case及之后的都会输出,所以要记得加break。case后可以是‘1’则是字符1,只写1才是数字。不是switch格式中的。
第一次提交部分正确。应该是因为测试数据太大,我sum默认三位数了。下面的是错误代码
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int i,n,sum=0,j,k;
char A[1000];
//gets (A);
cin>>A;
j=strlen(A);//.h
for(i=0;i<j;i++){//遍历字符串判断是否是数字
if(A[i]>='0'&&A[i]<='9')//如果是数字就累加
sum+=A[i]-'0';
}
i=sum/100;
if(i!=0)
sum=sum-i*100;
switch(i){
case 1:cout<<"yi ";break;
case 2:cout<<"er ";break;
case 3:cout<<"san ";break;
case 4:cout<<"si ";break;
case 5:cout<<"wu ";break;
case 6:cout<<"liu ";break;
case 7:cout<<"qi ";break;
case 8:cout<<"ba ";break;
case 9:cout<<"jiu ";break;
}
i=sum/10;
if(i!=0)
sum=sum-i*10;
switch(i){
case 1:cout<<"yi ";break;
case 2:cout<<"er ";break;
case 3:cout<<"san ";break;
case 4:cout<<"si ";break;
case 5:cout<<"wu ";break;
case 6:cout<<"liu ";break;
case 7:cout<<"qi ";break;
case 8:cout<<"ba ";break;
case 9:cout<<"jiu ";break;
}
switch(sum){
case 1:cout<<"yi";break;
case 2:cout<<"er";break;
case 3:cout<<"san";break;
case 4:cout<<"si";break;
case 5:cout<<"wu";break;
case 6:cout<<"liu";break;
case 7:cout<<"qi";break;
case 8:cout<<"ba";break;
case 9:cout<<"jiu";break;
}
}
因为太大,sum位数也不知道。只能想用另一个数组暂存sum的每一位。B中位是反的顺序。
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int i,n,sum=0,j,k=0;
char A[1000];
int B[100];
//gets (A);
cin>>A;
j=strlen(A);//.h
for(i=0;i<j;i++){//遍历字符串判断是否是数字
if(A[i]>='0'&&A[i]<='9')//如果是数字就累加
sum+=A[i]-'0';
}
for(k=0;k<100;k++){
B[k]=sum%10;
sum=sum/10;
}
for(i=k;i>0;i--){
switch(B[i]){
case 1:cout<<"yi ";break;
case 2:cout<<"er ";break;
case 3:cout<<"san ";break;
case 4:cout<<"si ";break;
case 5:cout<<"wu ";break;
case 6:cout<<"liu ";break;
case 7:cout<<"qi ";break;
case 8:cout<<"ba ";break;
case 9:cout<<"jiu ";break;
}
}
switch(B[i]){
case 1:cout<<"yi";break;
case 2:cout<<"er";break;
case 3:cout<<"san";break;
case 4:cout<<"si";break;
case 5:cout<<"wu";break;
case 6:cout<<"liu";break;
case 7:cout<<"qi";break;
case 8:cout<<"ba";break;
case 9:cout<<"jiu";break;
}
}
。。。。怎么还是部分正确。讨厌,哼!!!!!!!
哦哦哦差在0上。然后之前那个k其实没用上。。。记得存B的时候判断一下除数是不是0了,是的话就不再存了,跳出循环,k是不为0的个数,记得下面用的时候k-1。
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int i,n,sum=0,j,k=0;
char A[1000];
int B[100];
//gets (A);
cin>>A;
j=strlen(A);//.h
for(i=0;i<j;i++){//遍历字符串判断是否是数字
if(A[i]>='0'&&A[i]<='9')//如果是数字就累加
sum+=A[i]-'0';
}
for(k=0;k<100;k++){
if(sum!=0){
B[k]=sum%10;
sum=sum/10;
}
else break;
}
for(i=k-1;i>0;i--){
switch(B[i]){
case 0:cout<<"ling ";break;
case 1:cout<<"yi ";break;
case 2:cout<<"er ";break;
case 3:cout<<"san ";break;
case 4:cout<<"si ";break;
case 5:cout<<"wu ";break;
case 6:cout<<"liu ";break;
case 7:cout<<"qi ";break;
case 8:cout<<"ba ";break;
case 9:cout<<"jiu ";break;
}
}
switch(B[i]){
case 0:cout<<"ling";break;
case 1:cout<<"yi";break;
case 2:cout<<"er";break;
case 3:cout<<"san";break;
case 4:cout<<"si";break;
case 5:cout<<"wu";break;
case 6:cout<<"liu";break;
case 7:cout<<"qi";break;
case 8:cout<<"ba";break;
case 9:cout<<"jiu";break;
}
}
PTA 1001
唉只有这个题是顺利的。呜呜呜,不想学了。
#include<iostream>
using namespace std;
int main(){
int n,i=0;
cin>>n;
while(n!=1){
if (n%2==0) {n=n/2;i=i+1;}
else {n=(3*n+1)/2;i=i+1;}
}
cout<<i;
}
这篇关于PTA 1001 1002(C++)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享