来自菜鸟的日程-------c语言基础篇12(联合体---今天是今年第几天,筛选法求素数,第一个字符串中删除第二个中所有字符)

struct MyUnion
{
	double d;
	union sample
	{
		char ch[17];
		int i;
		float f;
	}su;
}dd;//32


union MyUnion
{
	double d;
	union sample
	{
		char ch[17];
		int i;
		float f;
	}su;
}dd;//24
int main()
{
	printf("%d\n",sizeof(dd));
	return 0;
}

1、用联合体判断大小端??

union MyUnion
 {
	 int a;
	 char p;
 }u;
 int Fun()
 {
	 u.a=1; //0x00 00 00 01
	 return u.p;
 }
 int main()
 {
	 int m=Fun();
	 if(m==1)
	 {
		 printf("is little\n");
	 }
	 else
	 {
		 printf("is big\n");
	 }
	 return 0;
 }

2、判断今天是今年的第几天

struct Day
{
	int year;
	int month;
	int day;
}date;
int Today(struct Day date)
{
	int today=0;
	int arr[]={31,28,31,30,31,30,31,31,30,31,30,31};
	if(date.year%4==0&&date.year%100!=0||date.year%400==0)
	{
		arr[1]=29;
	}
	switch(date.month)
	{
    case 12:
		today=today+arr[10];
    case 11:
		today=today+arr[9];
    case 10:
		today=today+arr[8];
	case 9:
		today=today+arr[7];
	case 8:
		today=today+arr[6];
	case 7:
		today=today+arr[5];
	case 6:
		today=today+arr[4];
    case 5:
		today=today+arr[3];
	case 4:
		today=today+arr[2];
	case 3:
		today=today+arr[1];
	case 2:
		today=today+arr[0];
	case 1:
		today=today+0;
	}
	today=today+(date.day);
	return today;
}
int main()
{
	struct Day date={2018,11,4};
	printf("%d\n",Today(date));
	return 0;
}

3、在第一个字符串中 ,删除第二个字符串中所有的字符。
函数原型:char *DeleteChars(char *str1,char *str2);
参数str1:“Welcome Tulun” 参数str2:“come” 结果输出:“Wl Tulun”

int *Arr(char *str,int *arr)
{
	while(*str != '\0')
	{
		arr[*str]+=1;
		str++;
	}
	return arr;
}
char *Brr(char *str1,char *str2)
{
	int arr[128] = {};
	int len = strlen(str1);
	Arr(str2,arr);
	int i = 0;
	int j = 0;
	while(i<len)
	{
		if(arr[str1[i]] == 0)
		{
			str1[j] = str1[i];
			j++;
		}
		i++;
	}
	str1[j] = str1[i];
	return str1;
}
int main()
{
	char str1[] = "welcome tulun";
	char str2[] = "come";
	char *str=Brr(str1,str2);
	printf("%s\n", str);
	return 0;
}

4、筛选法求100以内的素数。

bool Fun(int n)
{
	for(int i=2;i<=sqrt((double)n);i++)
	{
		if(n%i == 0)
		{
			return false;
		}
	}
	return true;
}
int Fun1(int num,int *arr)
{
	int j = 0;
	for(int i = 2;i<num;i++)
	{
		if(Fun(i))
		{
			arr[j]=i;
			j++;
		}
	}
	return j;
}
int main()
{
	int arr[100]={};
	int m=Fun1(100,arr);
	for (int i = 0;i<m;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值