实验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个整数:
1,3,5,7,10,20,2,4,6,8, 30,40 并输出至屏幕。
(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(); }