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 自己输入元素,练习printf
/*程序将一维数组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;
}