作业比赛编号 : 100000569 - 《算法笔记》2.5小节——C/C++快速入门->数组

题目地址

问题 A: 习题6-4 有序插入

#include
using namespace std;
int main()
{
    int a[10],t,i,j;
    //input
    for(i=0;i<=8;i++){
        cin>>a[i];
    }
    cin>>t;
    //deal,from right to left
    for( j=8;j>=0;j--){
        if(t<a[j]){
            a[j+1]=a[j];
        }
        else{
            a[j+1]=t;
            break;
        }
    }
    //output
    for(i=0;i<=9;i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

问题 B: 习题6-5 数组元素逆置

#include
using namespace std;
int main()
{
    int a[10],t,i,j;
    //input
    for(i=0;i<=9;i++){
        cin>>a[i];
    }
    //deal:from the ends to the middle
    for( i=0,j=9;i<=9,j>=0;i++,j--){
        if(i<j){
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
        else{
            break;
        }
    }
    //output
    for(i=0;i<=9;i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

问题 C: 习题6-6 杨辉三角

#include
using namespace std;
int main()
{
    int n,i,j;
    //input
    cin>>n;
    int a[n][n]={0};
    //deal
    for( i=0;i<n;i++){
        for(j=0;j<=i;j++){
            if(j==0||j==i){
                a[i][j]=1;//对角线和第0列=1
            }
            else{//中间数=斜上方+正上方
                a[i][j]=a[i-1][j-1]+a[i-1][j];
            }
        }
    }
    //output
    for(i=0;i<n;i++){
        for(j=0;j<=i;j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

问题 D: 习题6-12 解密

#include 
#include
int main(){
    char a[20];
    gets(a);
    for(int i=0;i<strlen(a);i++){
        if(a[i]>='a'&&a[i]<='z') 
            a[i]='a'+'z'-a[i];
        if(a[i]>='A'&&a[i]<='Z') 
            a[i]='A'+'Z'-a[i];
    }
    puts(a);
    return 0;
}
//解析:
//第i个字母变成第(26-i+1)个字母
//相当于i(现)=26-i(原)+1
//所以求原来的i=26-i(现)+1

问题 E: 习题6-13 字符串比较

#include 
#include
int main(){
    char s1[20],s2[20];
    gets(s1);
    gets(s2);
    for(int i=0;i<20;i++){
        if(s1[i]!=s2[i]){
            printf("%d\n",s1[i]-s2[i]);//两字符相减以数值表达
            break;
        }

        else continue;
    }
    return 0;
}

问题 F: 例题6-1 逆序输出数组元素

#include
using namespace std;
int main()
{
    int a[10],i;
    //input
    for(i=0;i<=9;i++){
        cin>>a[i];
    }
    //output
    for(i=9;i>=0;i--){
        cout<<a[i]<<endl;
    }
    return 0;
}

问题 G: 例题6-2 数组求解Fibonacci数列问题

#include
using namespace std;
int main()
{
    int a[20],i;
    a[0]=a[1]=1;
    //deal
    for(i=2;i<20;i++){
        a[i]=a[i-1]+a[i-2];
    }
    //output
    for(i=0;i<=19;i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

问题 H: 例题6-3 冒泡排序

#include
using namespace std;
int main()
{
    int a[10],i,j,t;
//input
    for(i=0;i<10;i++){
        cin>>a[i];
    }
    //deal
    for(i=0;i<9;i++){//进行n-1次每次有一个到达最终位置
        for(j=0;j<9-i;j++){//9-i个无序数,i个有序数
            if(a[j]>a[j+1]){
                t=a[j+1];
                a[j+1]=a[j];
                a[j]=t;
            }
        }
    }
    //output
    for(i=0;i<=9;i++){
        cout<<a[i]<<endl;
    }
    return 0;
}

问题 I: 例题6-4 矩阵转置

#include
using namespace std;
int main()
{
    int a[2][3],b[3][2],i,j,t;
//input
    for(i=0;i<2;i++){
        for(j=0;j<3;j++){
            cin>>a[i][j];
        }
    }
    //deal//output
    for(i=0;i<3;i++){
        for(j=0;j<2;j++){
            b[i][j]=a[j][i];
            cout<<b[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

问题 J: 例题6-9 字符串求最大值

#include
#include
int main()
{
    int i,j,t;
    char a[20],b[20],c[20];
//input
    gets(a);
    gets(b);
    gets(c);
//deal//output
    for(i=0;i<20;i++){
        if(a[i]>=b[i]&&a[i]>=c[i]){
            puts(a);
            break;
        }
        else if(b[i]>=a[i]&&b[i]>=c[i]){
            puts(b);
            break;
        }

        else{
            puts(c);
            break;
        }
    }
    return 0;
}


你可能感兴趣的:(c++,算法笔记)