ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PTA 1001 1002(C++)

2022-01-04 13:34:21  阅读:143  来源: 互联网

标签:case cout int sum C++ switch PTA include 1001


自己记录用!方法很笨,底子不好!

输入数据很大,用字符串输入转成数字。用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;
 }

标签:case,cout,int,sum,C++,switch,PTA,include,1001
来源: https://blog.csdn.net/shatter_n/article/details/122300496

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有