【C语言】(打印一个菱形,打印水仙花数,编程计算前5项和)

C语言的几道习题:

1.在屏幕上输出以下图案:
      *
     ***
    *****
   *******
  *********
 ***********
*************
 ***********
  *********
   *******
    *****
     ***
      *

2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如:153 = 1^3 + 5^3 + 3^3,则153是一个“水仙花数”。


3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

 

*今天的几道题都要用到for循环,首先我们来简单谈一下一下for循环:

  1)基本形式:

 for(循环变量赋初值;循环条件;循环变量增值)

{

语句

}

2)具体执行:

循环变量有了初始值之后,循环开始,执行写出的语句,根据具体的增值变换规则来变换,当循环不满足循环条件时,循环结束,之后后面的语句.

注:在这里要着重注意一下循环中出现 break;  语句和 continue: 语句的情况

break: 出现break;语句后就会立即跳出循环然后进行下一步操作,这个时候循环变量是不会再进行一次自增或者自减的.
continue:出现continue;语句后程序不是跳出循环,而是结束本次循环,只有这一次不执行,然后继续执行下一个数,当不满足循环条件时结束循环.

 

注:说到循环,有一个语句想必大家也很熟悉,就是goto语句,但是在编程中并不推荐使用此语句,因为有时候别人很容易读懂,相比之下while()循环具有更高的可读性,一点小建议,望采纳.

 

下面是这几道题的代码:

编译环境:vs2013

1.在屏幕上输出以下图案:
      *
     ***
    *****
   *******
  *********
 ***********
*************
 ***********
  *********
   *******
    *****
     ***
      *

这道题需要注意的点有:

1)要先观察每一行中空格数和*数都有什么规律,找出之间的规律就很好编了,就是几个循环嵌套在一起.

2)在写这个程序的时候,为了代码更清楚起见我用了两个大的for循环,分别输出上半部分和下半部分

3)原题让输出一个十三行的,我加了一些东西,弄成了自己输入行数的,其实也就是加一个scanf函数,没有什么难度.

代码如下:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int t = 0;
	int z = 0;        //总行数;
	printf("输入您要打印的行数:\n");
	scanf("%d", &z);
	int s = z / 2 + 1;    //上半部分高度;
	int x = z / 2;      //下半部分高度;
	printf("您要打印的图案为:\n");
	for (int i = 1; i <= s; ++i)
	{
		for (int j = 1; j <= s - i; ++j)
		{
			printf(" ");
		}
		for (t = 1; t <= 2 * i - 1;++t)
		{
			printf("*");
		}
		printf("\n");
	}
	for (int i = x; i >=1; --i)
	{
		for (int j = 1; j <= s-i; ++j)
		{
			printf(" ");
		}
		for (int t = 1; t <= 2 * i - 1;++t)
		{
			printf("*");
		}
		printf("\n");
	}
    printf("\n");
    system("pause");
    return 0;
}

2.求出0~999之间的所有“水仙花数”并输出。

这道题要注意的点为:

1)先计算出三位数的每一位,然后给每一位三次方就行了,比较简单.

2)要是想求具体区间中有多少个水仙花数,如上,只需要加上一个scanf函数就可以了.我没有加,有具体需要的可以自行加上.

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	double sum = 0;
	for (int i = 100; i <= 999; ++i)
	{
		int temp = i;
		while (temp > 0)
		{
			sum += pow(temp % 10, 3);
			temp /= 10;
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
		else
		{
			sum = 0;
		}
	}
        system("pause");
        return 0;
}

3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

这道题需要注意的点是:

1)怎样设置一个算法,使得出现下一项的值,然后加上它,最后再疏忽总和.

代码如下:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i = 0;
	int sum = 0;
	int tmp = 0;
	int a = 0;
	printf("请输入一个数:"); 
	scanf("%d", &a);
	for (i = 0; i < 5; i++)
	{
		tmp = tmp * 10 + a;
		sum = sum + tmp;
	}
	printf("%d\n",sum);
	system("pause");
	return 0;
}

以上就是这三道题的代码,希望在提升自己的同时也能帮到有需要的人.

                                                        谢谢观看^_^

  • 2
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微楽

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值