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;
}