c语言小练习

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

 在之前呢已经学习过如何从外到内地进行数组对应元素的替换,这里我们可以看到,图形是上下对称的,那么就必须引入第三个数组,使其与其中一个数组相同,然后把元素从中间分隔开,左边的标号每循环一次减一,右边的标号每循环一次加一,为了打印时看起来有节奏一点,我在两个循环中都加入了sleep让其停止0.5秒

int main()
{
	char arr1[] = "*************";
	char arr2[] = "      *      ";
	char arr3[] = "      *      ";
	int left = 0;
	int sz = (sizeof arr1 / sizeof arr1[0]);
	int right = sz - 2;
	int mid = (left + right) / 2;
	int midleft = mid;
	int midright = mid;
	for (; midleft >=0 && midright<=sz-2; midleft--,midright++)
	{
		arr3[midleft] = arr1[midleft];
		arr3[midright] = arr1[midright];
		printf("%s\n", arr3);
		Sleep(500);
	}
	for (;left < right; left++,right--)
	{
		arr3[left] = arr2[left];
		arr3[right] = arr2[right];
		printf("%s\n", arr3);
		Sleep(500);
	}
	return 0;
}

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

我们分析题目可以知道,三个数字的立方和等于数字本身,那么关键点就在于如何拆分这三个数字,百位和十位都是非常简单,这里我对十位是先除后取模,在对最终的数字进行一个if语句的判断 

int main()
{
	for (int i = 100; i < 1000; i++)
	{
		int a = i / 100;
		int b = i / 10;
		int d = b % 10;
		int c = i % 10;
		if (i==a*a*a+d*d*d+c*c*c)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字

这个问题我们很容易就可以知道后一项是前一项的10倍再加上它本身,这里我用的for循环是只对每一项进行了计算,然后再把每次计算的结果进行存储,最终再相加得到结果

int main()
{
	int a;
	scanf("%d", &a);
	int sum = 0;
	int arr[5] = { 0 };
	int res = 0;
	for (int i = 0; i < 5; i++)
	{
		res = res * 10 + a;
		arr[i] = res;
	}
	for (int x = 0; x < 5; x++)
	{
		sum = arr[x]+sum;
	}
	printf("%d\n", sum);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值