测试大小端:
int checkSystem()
{
union check
{
int i;
char ch;
{
union check
{
int i;
char ch;
}c;
c.i = 1; //
0x00 00 00 01 大端:(低地址到高地址)0x00 0x00 0x00 0x01
return (c.ch == 1); //
小端:(低地址到搞地质)0x01 0x00 0x00 0x00
}
返回1:小端模式;返回0:大端模式
大端:高字节排放在内存的低地止端(TCP/IP各层协议(网络字节序))
小端:低字节排放在内存的低地址端
0x12345678:从高位到地位的字节一次是:0x12,0x34,0x56,0x78 【靠左边是高位,靠右边是低位】
大端:低地址存放高位 小端:低地址存放低位
栈底(高地址)
-------------- ----------------
buf[3] = 0x78 buf[0] = 0x12
buf[2] = 0x56 buf[1] = 0x34
buf[1] = 0x34 buf[2] = 0x56
buf[0] = 0x12 buf[3] = 0x78
-------------- ----------------
栈顶(低地址)
判断闰年
if(!(year % 4) || (year % 100 == 0 && year % 400 == 0))
100以内所有整数之和
int i,sum=0;
i=1;
while(i <= 100) //循环条件应该是什么呢?
{
sum=sum+i;
i++; //这里是不是应该改变循环变量的值
}
取三位数的各个位数
//获取三位数字num百位上的数字
hd =num / 100;
//获取三位数字num十位上的数字
td =num % 100 / 10;
//获取三位数字num个位上的数字
sd = num % 10;
水仙花数
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
,如:153就是一个水仙花数,153=1*1*1+5*5*5+3*3*3。
//获取三位数字num百位上的数字
hd =num / 100;
//获取三位数字num十位上的数字
td =num % 100 / 10;
//获取三位数字num个位上的数字
sd = num % 10;
//水仙花数的条件是什么?
if(num == hd *hd *hd +td *td *td +sd *sd *sd)
{
printf("水仙花数字:%d\n", num);
}
找素数
找出0-50之间的所有素数,所谓素数就是只能被1和它本身整除的数字,比如:7,13,23等
int m, n;
for(m=2; m<=50; m++)
{
for(n=2; n<m; n++)
{
if(m%n == 0) //什么条件下跳出当前循环
break; //这里应该退出当前循环了
}
if(m == n) //n循环结束后,如果m=n的话就输出m
printf("%d ", m);
}
万能求天数
#include <stdio.h>
int main()
{
int y,m,d,D;
printf("输入日期(空格隔开):");
scanf("%d%d%d",&y,&m,&d);
D=d+(m-1)*30+(m/2)-(y%4==0||y%400==0?1:2);
printf("%d年%d月%d日是该年的第%d天",y,m,d,D);
return 0;
int main()
{
int y,m,d,D;
printf("输入日期(空格隔开):");
scanf("%d%d%d",&y,&m,&d);
D=d+(m-1)*30+(m/2)-(y%4==0||y%400==0?1:2);
printf("%d年%d月%d日是该年的第%d天",y,m,d,D);
return 0;
}
计算n阶
#include <stdio.h>
int factorial(int n){//定义函数
int result;
if(n < 0)
{
printf("输入错误!\r\n");
return 0;
}
else if(n == 0 || n == 1)
{
return 1;
}
else
{
result = factorial(n-1)*n;//调用自身
}
return result;
}
int main(){
int n = 5;
printf("%d的阶乘=%d\r\n",n,factorial(n));
return 0;
}