取数组中每个元素的最高位

1 题目

/*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。
程序运行结果为:
a:82 756 71629 5 2034
b: 8 7 7 5 2
*/

2 思考

简单来说就是取一个数据的最高位。
一开始的笨方法没有办法判断数据的长度,后来看到了聪明的方法,值得学习

3 探究

3.1 聪明的方法

for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		temp=arr_a[i];
		while(temp>10)
		{
			temp=temp/10;
		}
		arr_b[i]=temp;
	}

3.1 笨方法

for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		if(arr_a[i]<10)
		{
			arr_b[i]=arr_a[i];
		}
		else if(arr_a[i]<100)
		{
			arr_b[i]=arr_a[i]/10;
		}
		else if(arr_a[i]<1000)
		{
			arr_b[i]=arr_a[i]/100;
		}
		else if(arr_a[i]<10000)
		{
			arr_b[i]=arr_a[i]/1000;
		}
		else if(arr_a[i]<100000)
		{
			arr_b[i]=arr_a[i]/10000;
		}
		else //if(arr_a[i]<1000000)
		{
			arr_b[i]=arr_a[i]/100000;
		}	
	}

4 完整代码

/*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。
程序运行结果为:
a:82  756  71629   5  2034
b:  8    7      7   5     2
*/
#include <stdio.h>
int main(void)
{
	int i=0;
	int arr_a[]={82 ,756 , 71629 ,  5  ,2034};
	int arr_b[10];
	int temp;

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		temp=arr_a[i];
		while(temp>10)
		{
			temp=temp/10;
		}
		arr_b[i]=temp;
	}

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_a[%d]=%d\t",i,arr_a[i]);
	}
	printf("\n");
	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_b[%d]=%d\t",i,arr_b[i]);
	}
	printf("\n");

	return 0;
}

在这里插入图片描述

5 自己输入元素,练习scanf

/*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。数组a的数据从键盘输入
程序运行结果为:
a:82  756  71629   5  2034
b:  8    7      7   5     2
*/
#include <stdio.h>
#define N 4

int main(void)
{
	int i=0;
	int arr_a[N];
	int arr_b[N];
	int temp;

	printf("请输入%d个元素\n",N);
	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		scanf("%d",&arr_a[i]);
	}
	

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		temp=arr_a[i];
		while(temp>10)
		{
			temp=temp/10;
		}
		arr_b[i]=temp;
	}

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_a[%d]=%d\t",i,arr_a[i]);
	}
	printf("\n");
	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_b[%d]=%d\t",i,arr_b[i]);
	}
	printf("\n");

	return 0;
}

在这里插入图片描述

6 求输入元素最低位——拓展题

/*程序将一维数组a中N个元素的最低位取出,保存在一维数组b的对应位置。数组a的数据从键盘输入
程序运行结果为:
a:82  756  71629   5  2034
b:  2    6      9   5     4
*/
#include <stdio.h>
#define N 4

int main(void)
{
	int i=0;
	int arr_a[N];
	int arr_b[N];
	int temp;

	printf("请输入%d个元素\n",N);
	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		scanf("%d",&arr_a[i]);
	}
	

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		arr_b[i]=arr_a[i]%10;
	}

	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_a[%d]=%d\t",i,arr_a[i]);
	}
	printf("\n");
	for(i=0;i<sizeof(arr_a)/sizeof(int);i++)
	{
		printf("arr_b[%d]=%d\t",i,arr_b[i]);
	}
	printf("\n");

	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值