二维函数
1.声明一个二维函数
int arr[2][4];
2.初始化二维函数
2.1直接开始时赋予值
int arr[2][4]={{1,2,3,4},{11,22,33,44}};
且中间可为0,中间两个大括号表示两行,每个里不足四个的系统自动补0;
int arr[2][4]={{1,2},{11,22,33}};
直接一个括号赋予(不推荐),中间要是缺少的话就会接着,不会出现中间补0。
int arr[2][4]={1,2,3,4,11,22,33,44};
2.2利用循环赋予初始值
#include <stdio.h>
int main()
{
int t[2][4];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<4;j++)
scanf("%d",&arr[i][j]);
return 0;
}
3.打印二维数组
for(i=0;i<2;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d ",i,j,arr[i][j]);
}
printf("\n");
4.更改数组中某列的元素的数值
int t[2][5]={{1,2,3,4,5},{6,7,8,9,10}};
int i,j;
printf("更新第三列元素值为0\n请输入两个0,中间空格隔开\n");
scanf("%d %d",&t[0][3],&t[1][3]);
for(i=0;i<2;i++)
for(j=0;j<5;j++)
printf("t[%d][%d]=%d\n",i,j,t[i][j]);
5.将二维函数的行列调换
int t[2][5]={{1,2,3,4,5},{6,7,8,9,10}};
int r[5][2]={0};
int i,j;
for(i=0;i<2;i++)
for(j=0;j<5;j++)
r[j][i]=t[i][j];
for(i=0;i<5;i++)
for(j=0;j<2;j++)
printf("r[%d][%d]=%d\n",i,j,r[i][j]);
6.课堂练习
6.1求这个二维数组中的最大值
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int arr[3][4];
int i,j,max=0;
int h,l;
srand((unsigned)time(NULL));
for(i=0;i<3;i++){
for(j=0;j<4;j++){
arr[i][j]=rand();
}
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d ",i,j,arr[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
h=i;
l=j;
}
}
}
printf("最大值为:%d,是第%d行,第%d列",max,h,l);
return 0;
}
6.2设计一个二维数组,统计3个学生的4次考试成绩,输出最高分、最低分是多少?每个学生的平均分是多少?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*设计一个二维数组,统计3个学生的4次考试成绩,、
输出最高分、最低分是多少?每个学生的平均分是多少?*/
int main()
{
int arr[3][4];
int i,j,max=0,min=101;
srand((unsigned)time(NULL));
for(i=0;i<3;i++){
for(j=0;j<4;j++){
arr[i][j]=rand()%100+1;
}
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("arr[%d][%d]=%d ",i,j,arr[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
}
if(min>arr[i][j]){
min=arr[i][j];
}
}
}
for(i=0;i<3;i++){
float sum=0,avg;
for(j=0;j<4;j++){
sum+=arr[i][j];
}
avg=sum/j;
printf("第%d位学生的平均分为%f\n",i+1,avg);
}
printf("最高分为:%d,最低分为%d",max,min);
return 0;
}
7.课后作业
7.1公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
#include <stdio.h>
int main()
{
int arr[4][3]={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
int i,j,num=0;
printf("公司年销售额求和\n某公司按照季度和月份统计的数据如下:单位(万元)\n");
// for(i=0;i<4;i++){
// for(j=0;j<3;j++){
// scanf("%d",&arr[i][j]);
// }
// }
for(i=0;i<4;i++){
printf("第%d季度 ",i+1);
for(j=0;j<3;j++){
printf("%d ",arr[i][j]);
}
printf("\n");
}
for(i=0;i<4;i++){
for(j=0;j<3;j++){
num+=arr[i][j];
}
}
printf("公司年销售额求和为:%d",num);
return 0;
}
结果为:
7.2打印杨辉三角形比如:6行
#include <stdio.h>
/*打印杨辉三角形比如:6行*/
int main()
{
int arr[6][6]={1};
int i,j;
for(i=1;i<6;i++){
for(j=0;j<6;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j] ;
}
}
for(i=0;i<6;i++){
for(j=0;j<6;j++){
if(arr[i][j]!=0)
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
结果为:
7.3求5行5列二维数组主对角线(从左上角到右下角)上元素之和。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*求5行5列二维数组主对角线(从左上角到右下角)上元素之和。*/
int main()
{
int arr[5][5]={0};
int i,j,num=0;
srand((unsigned)time(NULL));
for(i=0;i<5;i++){
for(j=0;j<5;j++)
arr[i][j]=rand()%99+1;
}
for(i=0;i<5;i++){
for(j=0;j<5;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i==j){
num+=arr[i][j];
}
}
}
printf("对角线元素之和为%d ",num);
return 0;
}
结果为:
7.4两个数组num1和num2,返回他们的交集,交集保存到另外的数组。
比如num1={1,2,2,1},num2={2,2} 输出result={2}
num1={4,9,5},num2={9,4,9,8,4} 输出result={9,4}或者result={4,9}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*4.两个数组num1和num2,返回他们的交集,交集保存到另外的数组。
比如num1={1,2,2,1},num2={2,2} 输出result={2}
num1={4,9,5},num2={9,4,9,8,4} 输出result={9,4}或者result={4,9}*/
int main()
{
int arr_1[10];
int arr_2[10];
int result[10]={0};
int i,j,k=0;
srand((unsigned)time(NULL));
for(i=0;i<10;i++){
arr_1[i]=rand()%20+1;
arr_2[i]=rand()%20+1;
}
for(i=0;i<10;i++)
printf("%d ",arr_1[i]);
printf("\n");
for(i=0;i<10;i++)
printf("%d ",arr_2[i]);
for(i=0;i<10;i++){
for(j=0;j<10;j++){ //重复的赋予result
if(arr_1[i]==arr_2[j]){
result[k]=arr_1[i];
k++;
}
}
}
printf("\n");
for(i=0;i<10;i++)
printf("%d ",result[i]);
printf("\n");
for(i=0;i<10;i++){
for(j=i+1;j<10;j++){ //剔除自己重复数字
if(result[i]==result[j])
result[j]=0;
}
}
printf("result[10]={");
for(i=0;i<10;i++){ //是0不打印
if(result[i]!=0)
printf("%d ",result[i]);
}
printf("}") ;
return 0;
}
结果为 :
本文详细介绍了C语言中的二维数组,包括声明、初始化、打印、修改元素、行列转换等操作,并给出了课堂练习和课后作业,涉及寻找二维数组中的最大值、统计学生考试成绩、公司年销售额求和等实际问题。
1739

被折叠的 条评论
为什么被折叠?



