程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

巧用C语言中数组部分元素初始化

balukai 2025-03-06 12:08:51 文章精选 11 ℃

我们学会了c语言编程语法基础,还要学会活学活用里面的c语法规定。让我们回想一下当初学习c语言的数组模块:数组(array)由一些类型相同的元素构成。当我们只是声明数组(int a[10];//声明了含有10个int类型元素的数组)没有初始化时,其实就和声明普通变量(int a;)一样,存储的是无用的值;但是,如果部分初始化数组,未初始化的元素则被设置为0。

正好我们可以用这个规定实现求两个整数相加时进位的总次数,我们知道,如果一个整数的值为58,则它的百位、千位、万位、至以上都是0,所以我们利用这个特点和数组的初始化规定结合使用,当两个整数位数不一样时,位数较少的我们可以用0补充,我们初始化数组时只需初始化第一个元素设置为0,其余元素则也变为0,这样就可以按照位数较大的整数的位数来统计进位次数了。下面的c程序程序代码就是用来输入两个整数,而且求它们相加时的进位次数(下面的代码是在vs2015上编译运行的):

#define _CRT_SECURE_NO_DEPRECATE
#include
#include
int cal(int x);
int main(void)
{
 int n1, n2, x, y;
 int i, j;
 int a[10] = { 0 };//用来存储一个整数的每一位数字值
 int b[10] = { 0 };//用来存储一个整数的每一位数字值
 printf("Please enter two number:");
 scanf("%d %d", &n1, &n2);
 int max, count = 0;//max记录输入的两个整数中的最大位数,count用来统计两个整数相加时总共进位的次数
 x = n1;
 y = n2;
 for (i = cal(x); i >= 1; i--)
 {
 a[i] = x / (int)pow(10, i - 1);
 x = x % (int)pow(10, i - 1);
 }
 for (j = cal(y); j >= 1; j--)
 {
 b[j] = y / (int)pow(10, j - 1);
 y = y % (int)pow(10, j - 1);
 }
 printf("n1bit = %d,n2bit = %d\n",cal(n1),cal(n2));
 if (n1 >= n2)
 {
 max = cal(n1);
 }
 else
 {
 max = cal(n2);
 }
 for (i = 1; i <= max i if ai bi>= 10)
 {
 a[i + 1] += 1;
 count++;
 }
 }
 printf("相加时进位次数为:%d\n", count);
 system("pause");
 return 0;
}

//用来返回一个整数的位数
int cal(int x)
{
 int temp = 10, wei = 1;
 while (x >= temp)
 {
 temp *= 10;
 wei++;
 }
 return wei;
}

这是以前学习c语言基础时遇到过几个利用数组部分元素初始化,其余元素是0的特点的小程序,今天帮别人解决一个小问题时发觉这个特点还真的很好用,所以博主就想和大家分享一下,希望我们大家都能从基础中学好并利用好最简单最基础的知识。

最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!

最近发表
标签列表