用异或的计算方式来实现不依靠第三个变量使得两个变量的值互换
int a[5]={2,5,3,1,8};
for (int i = 0; i<4; i++) {
for (int j = 0; j<4-i; j++) {
if (a[j]>a[j+1]) {
// int temp = a[j];
// a[j] = a[j+1];
// a[j+1] = temp;
a[j] ^= a[j+1];
a[j+1] ^= a[j];
a[j] ^= a[j+1]
}
}
}
输入年月日得到天数
int year,month,day=0;//年月日
int a = 1,sum=0;
int i;
scanf("%d %d %d",&year,&month,&day);
if ((year%4==0 && year%100 != 0) || (year%400 == 0)) {
a = 2;
}
for (i = 1 ; i<=month-1; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
sum+=31;
continue;
case 4:
case 6:
case 9:
case 11:
sum+=30;
continue;
case 2:
if (a == 2) {
sum+=29;
}else
sum+=28;
continue;
}
}
sum+=day;
printf("%d",sum);
十进制转二进制
int a;
scanf("%d",&a);
int i;
int b[20];
for (i = 0; ; i++) {
if (a/2==0) {
b[i] = a%2;
break;
}else
{
b[i] = a%2;
a/=2;
}
}
while (i!=-1) {
printf("%d",b[i]);
i--;
}
质因数
int a;
scanf("%d",&a);
int i,j;
for (i = 2; ; i++) {
for (j = 0; ; j++) {
if (a/i==1)
{
printf("%d",a);
break;
}else if (a%i==0) {
a/=i;
printf("%d ",i);
}
else
{
break;
}
}
if (a/i==1) {
break;
}
}
输入一个数,然后正序输出
int a;
scanf("%d",&a);
int i;
int b[10];
for (i = 0; i<10; i++) {
if (a%10!=0) {
b[i] = a%10;
a/=10;
}else
{
break;
}
}
for (--i; i>=0; xi--) {
printf("%d ",b[i]);
}
时间加一秒后的时间
int a,b,c;
scanf("%d:%d:%d",&a,&b,&c);
c+=1;
if (c==60) {
c=0;
b++;
if (b==60) {
b=0;
a++;
if (a>23) {
a=0;
}
}
}