实验9

1.题目描述

利用一维数组,从低位开始反向存放二进制数,每位数为一个数组元素。求该二进制数对应的十进制数。

如二进制数:1,0,0,1,0,1,1,0,1

十进制数为:361

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
int qpow(int n){
    if(n==0) return 1;
    if(n==1) return 2;
    else return 2*qpow(n-1);
}
int main(){
    int p=0,a[105]={},s=0;
    while(cin>>a[p] && a[p]!=-1)    p++;
    for(int i=0;i<p;i++)
        s+=a[i]*qpow(i);
    cout<<s<<endl;
    getchar();
    getchar();
}

 

2.题目描述

(1)定义一个函数int PutWall(int a[ ] [4], int b[ ], int m, int n),将二维数组a的第0行、第m-1行、第0列和第n-1列元素(好像一圈围墙)中的每个元素用b数组中的元素依次替换,从a[0][0]开始按顺时针顺序复制。同时对替换的元素值求和,将计算结果返回。函数中要求使用尽可能少的循环语句和赋值语句。

2)主函数建立整型的二维数组dm[4][4]和一维数组pa。将二维数组dm的全部元素置1。在一维数组pa中存入12个整数:  

1357102024683040 并输出至屏幕。

3)调用函数PutWall ( )进行元素复制和计算,输出返回结果。

4)返回后将数组dm中的数据以方阵形式输出至屏幕。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
void PutWall(int a[][4],int b[],int m,int n){
    for(int j=0;j<3;j++)    a[0][j]=b[j];
    for(int j=0;j<3;j++)    a[j][3]=b[j+3];
    for(int j=0;j<3;j++)    a[3][3-j]=b[j+6];
    for(int j=0;j<3;j++)    a[3-j][0]=b[j+9];
}
int main(){
    int dm[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
    int pa[12]={1,3,5,7,10,20,2,4,6,8,30,40};
    for(int i=0;i<12;i++)    cout<<pa[i]<<" ";
    cout<<endl;
    PutWall(dm,pa,4,4);
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++)    cout<<dm[i][j]<<" ";
        cout<<endl;
    }
    getchar();
    getchar();
}

 

3.题目描述

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main(){
    int a[5][5],t=0,m=-1,s=0;
    for(int i=0;i<5;i++)
        for(int j=0;j<5;j++){
            cin>>a[i][j];
            if(a[i][j]>m){
                t=i;m=a[i][j];
            }
        }
    for(int i=0;i<5;i++)
        s+=a[i][i];
    cout<<s<<" "<<t+1<<endl;
    getchar();
    getchar();
}

 

posted @ 2021-12-18 16:34  LittleOrange  阅读(43)  评论(0编辑  收藏  举报