【C语言OJ刷题】数组代码练习(易懂 超详细)

二维数组练习

矩形转阵

将矩阵的行列互换得到的新矩阵称为转置矩阵。

  • 输入两个整数分别代表原数组的行和列,输入数据填充,最后打印出交换过行和列的矩阵
#include <stdio.h>
int main()
{
    int m, n;
    scanf("%d%d", &m, &n);//输入想要的行和列
    printf("row=%d\ncolumn=%d",m,n);
    int arr[10][10] = { 0 };//二维数组的初始化,m和n最大为10.
    int i;
    for (i = 0; i < m;i++)//外循环
    {
        int j;
        for (j = 0; j < n; j++)//内循环
        {
            scanf("%d", &arr[i][j]);
        }
    }//输入数据内容
    int j;
    for (j = 0; j < n; j++)//外循环,表示行
    {
        int i;
        for (i = 0; i < m; i++)//内循环,表示列
        {
            printf("%d ", arr[i][j]);//输出你想要的交换过的数据
        }
        printf("\n");//每经过一次内循环,即每打出一行数便换行,比较规范美观
    }
    return 0;
}

一维数组练习

逆序输出

  • 输入10个整数,逆序输出
#include <stdio.h>

int main() {
    int arr[10];
    int i;
    for(i=0;i<10;i++)
   {
     scanf("%d",&arr[i]);//输入10个元素
   }
    for(i=9;i>=0;i--)
   {
      printf("%d ",arr[i]);//输出10个元素
   }
    return 0;
}

求平均值

  • 输入10个整数,求平均值。
#include <stdio.h>

int main() {
    int arr[10];
    int i;
    float sum=0.0,aver=0.0;
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
        sum += arr[i];//累加
    }
    aver = sum/10;
    printf("%f", aver);
    return 0;
}

交换数组

两个大小相同的数组进行交换。

#include <stdio.h>


int main()
{
	int arr1[10] = {0};
	int arr2[10] = {0};
	int i = 0;
	printf("请输入10个数字:");
	for(i=0; i<10; i++)
	{
		scanf("%d", &arr1[i]);
	}
	printf("请输入10个数字:");
	for(i=0; i<10; i++)
	{
		scanf("%d", &arr2[i]);
	}
	for(i=0; i<10; i++)
	//数组交换
	{
		int temp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = temp;
	}
	return 0;
}

一维数组选择题

char arr1[] = "abcdefg";
char arr2[] = { 'a','b','c','d','e','f','g'};

对于上述代码,正确的是:C
A.数组acX和数组acY等价
B.数组acX和数组acY的长度相同
C.sizeof(arr1)>sizeof (arr2)
D.strlen (arr1)>strlen (arr2)

  • A选项数组arr1和数组arr2都是字符数组,但是初始化表达式不同,arr1中的元素笔arr2中的元素多了"\0",所以两者不一样。

  • B长度不同

  • C选项:sizeof这里求的是数组大小,数组大小等于有效元素个数*每个元素的大小。sizeof(arr1) = 8, sizeof(arr2) = 7.

  • D选项:strlen求的是字符串长度,从首元素开始计算,遇见‘\0’停止,由于arr2数组没有’\0‘,所以strlen(arr2)的结果是个随机值.

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting琦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值