小白C学习博客日记#03

1.今天最大的成就感来自于鏖战两天,终于调好了一个小程序:判断阿姆斯壮数。模块化是C语言很重要的一个特性,运用函数,写出模块化的特征,使程序更有条理。函数调用时要注意参量的对应与变量的重复与否。

# include <stdio.h>

int weishu(int n);
int swap(int n);

int main(void)
{
	int number;
	
	scanf("%d", &number);

	if(swap(number)==1)
		printf("%d是阿姆斯壮数", number);
	else
		printf("%d不是阿姆斯壮数", number);


    return 0;
}

int weishu(int n)
{
    int i = 1;

	while (n/10 != 0)
	{
	    i++;
		n /= 10;//要注意/10,不然会陷入死循环
	}
    return i;
}

int swap(int n)//将各位数字从各位开始输出,然后进行阿姆斯壮特性,求值与原数比较从而进行判断
{
    int original, m, sum1, sum2, i;

	m = weishu(n);
	original = n;
	sum1 = 1;
	sum2 = 0;

	while (n/10 != 0)
	{
	    for (i=1; i<=m; i++)//阿姆斯壮数特性
			sum1 *= (n%10);
        
		sum2 += sum1;
		sum1 = 1;
	    n /= 10;
	}

	for (i=1; i<=m; i++)//要注意上面程序没有对最后一位数字进行处理,要另外计算
		sum1 *= (n%10);
	    sum2 += sum1;

	if(original == sum2)
		return 1;
	else
		return 0;

在调用一个数字的数位上的各个数值时,可以采用先求出其位数,然后用while循环将其从个位到最高位 一次调用出来,需要注意的是,使用while时对最高位无法进行处理,需要另写语句执行操作。

2.今天的另一个收获时练习了各种三角型图案的输出,使用for循环的嵌套,来实现一些小算法。

# include <stdio.h>

int main(void)
{
	int i, j, k, number, row;

	scanf("%d", &row);

	for (i=1; i<=row; i++)
	{
	   number = i;
	   for (j=row; j>i; j--)
		   printf(" ");
	   for (k=1; k<i; k++, number++)
		   printf("%d", number);
	   while (k>=1)
	   {
		   printf("%d", number);
	       number--,k--;
	   }
	   printf("\n");
	
	}

    return 0;
}

 

# include <stdio.h>

int main(void)
{
    int i, j, row, number;

	scanf("%d", &row);
	number = 1;
	for (i=1; i<=row; i++)
	{
	     for (j=row; j>=i; j--, number++)
	         printf("%d", number);
		 printf("\n");
	     number = 1;
	}

	return 0;
}

 

# include <stdio.h>

int main(void)
{
	int i, j, k, number, row;

	scanf("%d", &row);

	for (i=1; i<=row; i++)
	{
	   number = i;
	   for (j=row; j>i; j--)
		   printf(" ");
	   for (k=1; k<i; k++, number++)
		   printf("%d", number);
	   while (k>=1)
	   {
		   printf("%d", number);
	       number--,k--;
	   }
	   printf("\n");
	
	}

    return 0;
}

 3.最后收获了杨辉三角的一个小算法。

 for (j=1;j<=i;j++)
         {
              if(i==1 || j==1)
                  coef = 1;
              else
                  coef = coef * (i-j+1)/(j-1);//巧妙的算法

              printf("%4d", coef);

         }

 虽然没有仍是没有想明白它的原理, 但代数检验发现皆成立,巧妙。

除此之外,杨辉三角还可以用二维数组来写。a【n】【n】= a【n-1】【n-1】 + a【n-1】【n】。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值