博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论⭐留言 如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN
未来很长,值得我们全力奔赴更美好的生活!
分析:
首先不要受到题目最开始的数列的影响,上来就定义一个二维数组,二维数组也能做,但是比较麻烦,我们先用一位数组去做,就是在最后打印的时候注意换行即可。
首先分析,在键盘中输入一个数,先将它转化为二进制数,就是不断地去对2取模,然后将模赋值给一个数组即可。
数组初始化全为o:
arr[9]={0};
| 数组下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 初始值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
有了这个思路代码就比较好写了:
for(i=8;i>=0;i--)
{
arr[i] = a%2;
a /= 2;
}
先对2取模,赋值给数组arr,再取商,然后商再对2取模,赋值给arr数组,如此往复循环,便可破之。
还需要注意的是,在对数组赋值的时候,我们需要先赋值数组的最后一个元素,因为在打印的时候我们是从数组的第一个元素开始打印。
我们以7为例(对2取模分别为1、1、1,分别赋值给arr[8]arr[7]arr[6]):
| 数组下标 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 初始值 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
写到这里,代码结构已经很清晰了:
#include作业2 左下角元素赋值全为0#include int main() { int i,j,a,b,c,arr[9]={0}; printf("请输入一个0-511之间的整数:n"); scanf("%d",&a); for(i=8;i>=0;i--) { arr[i] = a%2; a /= 2; } for(i=0;i<9;i++) printf("%d",arr[i]); printf("n"); for(i = 0; i < 9; i++) { if(i == 3 || i == 6) printf("n"); if(arr[i] == 0) { printf("H "); } else { printf("T "); } } return 0; }
分析:本题需要注意其实就是两点。1、注意定义好左下角元素 2、使用函数调用实现
1、定义好左下角元素:
if(i>=j) a[i][j]=0;
2、使用函数调用
fun(arr,5,5);
注意是主函数进行实参调用时,数组只写出数组名,行列直接写出具体数字即可,因为前面对于主函数已经定义过,在调用子函数形参时直接调用赋值即可使用。
#include#include #include void fun(int a[5][5],int x,int y); int main() { int i,j,arr[5][5]={0}; srand(time(0)); for(i=0;i<5;i++) { for(j=0;j<5;j++) { arr[i][j]=rand()%100+1; } } printf("数组元素赋值前:n"); for(i=0;i<5;i++) { for(j=0;j<5;j++) { printf("%dt",arr[i][j]); } printf("n"); } fun(arr,5,5); return 0; } void fun(int a[5][5],int x,int y) { int i,j; for(i=0;i =j) a[i][j]=0; } } printf("数组元素赋值后:n"); for(i=0;i 运行结果:
作业3 随机赋值4x4数组0和1,并打印有最多1的行和列。分析:
首先我们解决一个4x4数组随机赋值0、1,然后打印出来即可。这个比较简单,运用一下随机数即可。
#include#include #include for(i=0;i<4;i++) { for(j=0;j<4;j++) { arr[i][j]=rand()%2; } } 注意好头文件以及对2取模就行。
其次就是输出行列中具有最多的1的行号和列号。
何为最多1?其实就是行列元素数值相加最大的另外一种表述。这里我们思路就很清晰了,循环遍历计算行列元素数值,找出最大值,输出此时的行列号即可:
if(max1源代码如下:
#include#include #include void seek(int arr_01[4][4],int x,int y); int main() { int i,j,arr[4][4]={0}; srand(time(0)); for(i=0;i<4;i++) { for(j=0;j<4;j++) { arr[i][j]=rand()%2; } } for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%d",arr[i][j]); } printf("n"); } seek(arr,4,4); return 0; } void seek(int arr_01[4][4],int x,int y) { int i,j,max1=0,max2=0,a,b,count1=0,count2=0; for(i=0;i 运行结果:



