首先申明这是一个蓝点工作室的任务,题目是这样的:
要求编写一个程序,实现从键盘输入n(1<=n<=9),然后输出一下内容:
1=1
2+22=24
3+33+333=369
.。。。。。。。。
n+nn+nnn+…n…n=…
当我一开始看见这道题时,第一反应时挺简单的,循环就可以完成,但是仔细一想,不仅要完成循环N项的递增,数字也要叠加,前面的数时每循环一次你输入的N加一同时乘十,然后我就想到要用两个数组来分别存储各自的值
但因为结束循环调节也是一个大头,所以我有新增了一个变量,循环一次加一,来控制最后循环到N时结束循环
完成这些后,本以为结束了,后面还要添加+号和=号,=号很好办,在sum前面加一个=号就行,至于+号,我又新增了一个变量,源代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n, k, f = 2, q = 0, sum = 0, temp, t;
int i, j;
int m[200];
printf(“请输入一个数字N:”);
scanf_s("%d", &n);
for (j = 1; j <= n; j++)
{
temp = 1;
t = j;
while (temp < f)
{
m[q] = t;
t = t * 10 + m[0];
q++;
temp++;
}
f++;
for (i = 0; i < q; i++)
sum = m[i] + sum;
for (i = 0; i < q; i++)
{
printf("%d", m[i]);
if (m[i] != 1 && i < q - 1)
printf("+");
}
printf("=%d", sum);
q = 0;
sum = 0;
printf("\n");
}
system(“pause”);
return 0;
}
让我思索最久的是这个if语句:
if (m[i] != 1 && i < q - 1)
q-1来控制终止循环,最开始时思索用某个数的值来终止循环
。如 m[i]<sum-i-1 这是我最开始想到的方法,但是知道n>3是就i没有用了
。在此也想分享一个代码,如果你想输入一个1到4之间的数,如果不是1到4之间就要重新输入,你们一般会怎么敲呢?
。我分享一个最近学到的用法,代码如下:
while((scanf_s("%d",&a)!=1||a<1||a>5))
{
if(scanf_s("%d",&a)!=1)
{
fflush(stdin)//清空数据存储,重新给a输入值!
}
printf(“重新输入:”);
scanf_s("%d",&a);
}
。我觉得挺实用的,加油,程序员!
关于一个有趣递增的心得
最新推荐文章于 2024-04-21 22:45:45 发布