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


    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;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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;
    		}	
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    4 完整代码

    /*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。
    程序运行结果为:
    a:82  756  71629   5  2034
    b:  8    7      7   5     2
    */
    #include 
    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    在这里插入图片描述

    5 自己输入元素,练习scanf

    /*程序将一维数组a中N个元素的最高位取出,保存在一维数组b的对应位置。数组a的数据从键盘输入
    程序运行结果为:
    a:82  756  71629   5  2034
    b:  8    7      7   5     2
    */
    #include 
    #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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述

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

    /*程序将一维数组a中N个元素的最低位取出,保存在一维数组b的对应位置。数组a的数据从键盘输入
    程序运行结果为:
    a:82  756  71629   5  2034
    b:  2    6      9   5     4
    */
    #include 
    #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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    在这里插入图片描述

  • 相关阅读:
    L1-039 古风排版 C++解法
    端口被占用?两步解决端口占用问题
    C++内存管理以及模板的引入
    14:00面试,14:06就出来了,问的问题有点变态。。。
    基于qemu模拟器自动安装启动openEuler虚拟机
    Springboot旅游网的设计与实现xb29f计算机毕业设计-课程设计-期末作业-毕设程序代做
    [ C++ ] template 模板进阶 (特化,分离编译)
    自动控制原理9.1---线性系统的状态空间描述(中)
    海外问卷调查是不是很枯燥?
    力扣1148. 文章浏览 I
  • 原文地址:https://blog.csdn.net/Grace_1203/article/details/132585534