- 给定两个整形变量的值,将两个值的内容进行交换。
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
int arr2[] = { 9, 10, 11, 12, 13, 14, 15, 16 };
int len = sizeof(arr1) / sizeof(arr1[0]);
int i = 0;
for (i = 0; i < len; i++){//判定下标
int tmp = arr1[i];//tmp开始储存arr1中的第0,1,2,3,4,5,6,7号元素
arr1[i] = arr2[i];//arr1中的元素按顺序被替换为arr2的元素,下标对应
arr2[i] = tmp;//arr2中的元素按顺序被替换为arr1的元素
}
for (i = 0; i < len; i++){
printf("%d ", arr1[i]);//按下表顺序依次打印替换后的arr1
}
printf("\n");
for (i = 0; i < len; i++){
printf("%d ", arr2[i]);//按下标顺序依次打印被替换后的arr2
}
printf("\n");
system("pause");
return 0;
}
- 不允许创建临时变量,交换两个数的内容
方法一
#include<stdio.h>
int main(){
int a = 5;
int b = 3;
a = a - b;//计算两个变量的差值,赋给第一个变量;
b = b + a;//第二个变量的值加上差值得到第一个变量的原值,赋给第二个变量;
a = b - a;//第一个变量的原值减去差值得到第二个变量的原值,赋给第一个变量;
printf("%d\n%d\n", a, b);
system("pause");
return 0;
}
方法二
int main()
{
int a = 7;
int b = 2;
/*int tmp = a;
a = b;
b = tmp;*/
//a = a+b;//a = 10+20 = 30
//b = a-b;//30-20 = 10 b
//a = a-b;//30-10 = 20 a
//
a = a ^ b;//0111 ^ 0010 = 0101
b = a ^b;//0101 ^ 0010 = 0111 = 7
a = a ^ b;//0101 ^ 0111 = 0010 = 2
printf("%d,%d\n", a, b);
system("pause");
return 0;
}
3.求10 个整数中最大值。
#include<stdio.h>
#include<stdlib.h>
int main(){
int n = 0;
int a[] = {1,4,3,6,2,5,8,10,9,8};
int big = a[0];
int len = sizeof(a) / sizeof(a[0]);//数组字节数
//sizeof(a):整个数组字节数40;
//sizeof(a[0]):4;
for (n = 1; n <= 9; n += 1){
if (big < a[n])
big = a[n];
}
printf("最大的数是:%d\n", big);
system("pause");
return 0;
}
4.将三个数按从大到小输出。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int a = 9;
int b = 0;
int c = 10;
//a>=b>=c
if (a < b){
int tmp = a;
a = b;
b = tmp;
}
if (a <c){
int tmp = a;
a = c;
c = tmp;
}if (b < c){
int tmp = b;
b = c;
c = tmp;
}
printf("%d,%d,%d\n", a, b, c);//10,9,0
system("pause");
return 0;
}
5.求两个数的最大公约数。
#include<stdio.h>
#include<stdlib.h>
int main(){
int a = 24;
int b = 18;
int c = 0;//余数
while (a%b != 0){
c = a%b;//余数
a = b;//被除数变为下一次的除数
b = c;//余数变为下一次的被除数
}
printf("%d\n", c);
system("pause");
return 0;
}