用c语言输出菱形,水仙花数和一种求和

1.在屏幕上输出一个菱形
上半段以中间数middle为中心,向左向右依次扩开,注意字符串带有‘\0’,所以要除二减一才是中间数。

//打印出一个菱形
#include <stdio.h>
#include <stdlib.h>
#define Breadth 8//最中间的宽度包括\0
#define Middle Breadth / 2-1
void prtdiamond(char diamond[],int x){
	int left;
	int right;
	char ch = '*';
	for (left = 0, right = 0; left < Middle+1; left++, right++){
		diamond[Middle - left] = ch;//向左打印
		diamond[Middle + right] = ch;//向右打印
		printf("%s\n", diamond);

	}//上半段菱形

	ch = ' ';
	for (left = Middle, right = Middle; left > 0; left--, right--){
		diamond[Middle - left] = ch;
		diamond[Middle + right] = ch;
		printf("%s\n", diamond);
	}
}
int main(){
	char diamond[Breadth] = "       ";//找中间注意\0的储存
	prtdiamond(diamond, Middle);
	system("pause");
	return 0;
}

2.打印0-999的水仙花数
利用除法和取余将三位数的百位,十位,个位分别提取出来,进行三次幂的和,判断是否等于本身。

////////////////////////////////////////////
//输出水仙花数,水仙花数是指一个 n 位数(n≥3 )
//它的每个位上的数字的 n 次幂之和等于它本身
///////////////////////////////////////////
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define cube 3
int IsArmstrong(int num){
	int hundred = num / 100;
	int ten = (num % 100)/10;
	int bit = num % 10;
	int sum = pow(hundred, cube) + pow(ten, cube) + pow(bit, cube);
	if (sum == num){
		return 1;
	}
	else{
		return 0;
	}
}
int main(){
	int count;
	for (count = 100; count < 1000; count++){
		if (IsArmstrong(count)){
			printf("%d\n", count);
		}
		//printf("%d\n", count);
	}
	system("pause");
	return 0;
}

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

//求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int IsSn(int a){
	int sum = 0;
	int count;
	int before=0;
	for (count = 0; count < 5; count++){
		before = a *pow(10, count) + before;
		sum = before+ sum;
	}
	return sum;
}
int main(){
	printf("Enter 1-9 numbers :\n");
	int num;
	scanf("%d", &num);
	printf("Sn = a + aa + aaa + aaaa + aaaaa\n");
	printf("Sn = %d", IsSn(num));
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/zjgyjd/article/details/82888461
今日推荐