我们要求找出具有下列性质数的个数(包含输入的自然数n)。先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1.不作任何处理; 2.在它的左边加上一个自然数,但该自然数不能超过原数最高位数字的一半; 3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止。
#include<stdio.h>
int sum=0;
int f(int num)
{
for(int i=1;i<=num/2;i++)
f(i);
sum++;
return sum;
}
void main()
{
int x,s;
scanf("%d",&x);
if(x>0&&x<10)
s=f(x);
else if(x>=10&&x<100)//判断数的范围,求取最高位数字
s=f(x/10);
else if(x>=100&&x<1000) //判断数的范围,求取最高位数字
s=f(x/100);
else
s=f(x/1000);
printf("\n%d\n",s);
}
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
#include<stdio.h>
int main()
{
int x,y,i,N,z,a=1;
scanf("%d",&N);
for(x=0;x<N;x++) //控制行
{
i=1+a*(a-1)/2;
a++;
z=i; //将i储存起来留给下个for循环使用
printf("%d ",z);//输出每一行的第一个数字
for(y=0,i=x+2;y<N-x-1;y++,i++) //控制每行的数量
{
z=z+i;
printf("%d ",z);//输出每一行的第二到最后一个数字
}
printf("\n");
}
return 0;
}