1.给定两个整形变量的值,将两个值的内容进行交换。
#include <stdio.h>
#include <stdlib.h>
//给定两个整形变量的值,将两个值的内容进行交换。
int main(){
int a = 2;
int b = 3;
printf("交换前:\n");
printf("a = %d\tb = %d\n", a, b);
//方法一:(简单)
//创建一个临时变量作为中间转换
int temp;
//1.a->temp 2.b->a 3.temp->b
temp = a;
a = b;
b = temp;
方法二:
不创建新的变量(数字过大有可能溢出)
//a = a + b; //a=2+3=5
//b = a - b; //b=5-3=2
//a = a - b; //a=5-3=2
方法三
按位异或(两个二进制异或,相同为0,相异为1)
//a = a^b;
//b = a^b;
//a = a^b;
printf("交换后:\n");
printf("a = %d\tb = %d\n", a,b);
system("pause");
return 0;
}
运行结果:
2.求10 个整数中最大值。
#include <stdio.h>
//求10 个整数中最大值
int main(){
//初始化一个长度为10的数组
int arr[10] = { 2,5,3,6,1,4,0,7,9,8};
int max = arr[0];
int i = 0,j=0,tmp;
for (i = 0; i < 9; i++) //进行9次循环,实现9趟比较
for (j = 0; j < 9-j; j++){ //在每一趟中进行9-j次比较
if (max < arr[i]){ //相邻两个数比较
tmp = max;
max = arr[i];
arr[i] = tmp;
}
}
printf("max=%d\n",max);
return 0;
}
运行结果:
3.将三个数按从大到小输出。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
int arr[3] = { 0 };
scanf("%d %d %d", &arr[0], &arr[1], &arr[2]);
int max = arr[0];
int mid,min;
if (arr[0] > arr[1] && arr[0] > arr[2]){
max = arr[0];
if (arr[1] > arr[2]){
mid = arr[1];
min = arr[2];
}
else{
mid = arr[2];
min = arr[1];
}
}
if (arr[1] > arr[0] && arr[1] > arr[2]){
max = arr[1];
if (arr[0] > arr[2]){
mid = arr[0];
min = arr[2];
}
else{
mid = arr[2];
min = arr[0];
}
}
if (arr[2] > arr[1] && arr[2] > arr[0]){
max = arr[2];
if (arr[1] > arr[0]){
mid = arr[1];
min = arr[0];
}
else{
mid = arr[0];
min = arr[1];
}
}
printf("从大到小排序后结果为:%d %d %d\n", max, mid, min);
return 0;
}
运行结果:
4.求两个数的最大公约数。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//求两个数的最大公约数
int maxdivs(int x,int y){
//把x,y中比较大的数赋给x
if (x < y){
int tmp;
tmp = x;
x = y;
y = tmp;
}
int c;
for (y;y;y--){
if (x%y == 0) {
c = y;
return c;
}
}
}
int main(){
int a, b;
scanf("%d %d", &a, &b);
int d=maxdivs(a, b);
printf("最大公约数为:%d\n",d);
return 0;
}
运行结果: