练习题(2)

5.20

在这里插入图片描述

#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <ctype.h>

void Statistic(char *str)
{
	assert(str != NULL);
	if(str == nullptr) //NULL == (void*)O   NULL 0  nullptr == (void*)0
	{
		return;
	}

	int alpha = 0;
	int num = 0;
	int blank = 0;
	int other = 0;

	//int len = strlen(str);
	//for(int i=0; i<len; i++)
	//{
	//   if(isalpha(str[i]))
	//}
	while(*str != '\0')
	{
		if(isalpha(*str))
		{
			alpha++;
		}
		else if(isdigit(*str))
		{
			num++;
		}
		else if(*str == ' ')
		{
			blank++;
		}
		else
		{
			other++;
		}
		str++;
	}

	printf("字母%d个\n数字%d个\n空格%d个\n其他字符%d个\n", alpha, num, blank, other);
}
int Get_num(int n, int a)
{
	int tmp = a;
	for(int i=0; i<n; i++)
	{
		tmp = tmp*10+2;
	}
	return tmp;
}

int GetSum(int n, int a)
{
	//assert

	int sum = 0;
	for(int i=0; i<n; i++)//趟数
	{
		sum += Get_num(i, a);
	}

	return sum;
}


bool IsFlower(int n)
{
	//n <1000  &&  >= 100

	bool tag = false;
	int sum = 0;
	int m = n;
	int tmp = 0;

	while(m != 0)
	{
		tmp = m%10;
		sum += tmp*tmp*tmp;
		m /= 10;
	}
	
	return sum == n;
}


bool IsPerfectNum(int n)
{
	//assert
	int tmp = 0;
	for(int i=1; i<n; i++)
	{
		if(n%i == 0)
		{
			tmp += i;
		}
	}

	return tmp == n;
}

void PrintPerfectNum(int n)
{
	printf("%d its factors are 1", n);

	for(int i=2; i<n; i++)
	{
		if(n%i == 0)
		{
			printf(",%d", i);
		}
	}
	printf("\n");
}


int Peach()
{
	int sum = 1;
	for(int i=1; i<10; i++)
	{
		sum = (sum+1)*2;
	}

	return sum;
}

int Peach_digui(int n)
{
	if(n == 1)
	{
		return 1;
	}
	else
	{
		return (Peach_digui(n-1)+1)*2;
	}
}

void Match()
{
	for(char A = 'X'; A<='Z'; A++)
	{
		for(char B = 'X'; B<='Z'; B++)
		{
			for(char C='X'; C<='Z'; C++)
			{
				if(A!='X' && C!='X' && C!='Z' && A!=B && B!=C && A!=C)
				{
					printf("A->%c\n", A);
					printf("B->%c\n", B);
					printf("C->%c\n", C);
				}
			}
		}
	}
}


int main()
{
	Match();
	printf("%d\n", 'X');
	printf("%d\n", Peach_digui(10));
	char *str = "aaaAAA123   ;;;aaa";
	Statistic(str);

	int sum = GetSum(5, 2);
	printf("%d\n", sum);

	for(int i=100; i<1000; i++)
	{
		bool tag = IsFlower(i);
		if(tag)
		{
			printf("%d is flower\n", i);
		}
	}

	for(int i=2; i<1000; i++)
	{
		bool tag = IsPerfectNum(i);
		if(tag)
		{
			PrintPerfectNum(i);
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值