1. 给定两个整形变量的值,将两个值的内容进行交换。
分析:两种方法,第一种在主函数中直接交换值,第二种定义一个函数进行交换,其中使用传递指针进行交换值,否则将不能够改变主函数中变量的值。
//1. 给定两个整形变量的值,将两个值的内容进行交换。
//第一种方法,直接交换值
int main() {
int a = 2;
int b = 3;
int tmp;
tmp = a;
a = b;
b = tmp;
printf("a = %d b = %d ", a, b);
printf("\n");
system("pause");
return 0;
}
//第二种方法,使用传递指针进行交换值
//1. 给定两个整形变量的值,将两个值的内容进行交换。
void Swap(int* ap, int* bp) {
int tmp;
tmp = *ap;
*ap = *bp;
*bp = tmp;
}
int main() {
int a = 2;
int b = 3;
Swap(&a, &b);
printf("a = %d b = %d ", a, b);
printf("\n");
system("pause");
return 0;
}
3.求10 个整数中最大值。
//3.求10 个整数中最大值。
分析:使用冒泡法直接将10个整数进行排序,最后将最大的数进行输出。
void printf_ar(int* ar,int n) {
for (int i = 0; i < n; i++) {
printf("%d ", ar[i]);
}
}
void Bubble_Sort(int* ar ,int n) {
for (int i = 0; i < n-1; i++) {
int tag = 0;
for (int j = 0; j < n - i - 1; j++) {
if (ar[j] > ar[j + 1]) {
int tmp = ar[j];
ar[j] = ar[j + 1];
ar[j + 1] = tmp;
tag++;
}
}
if (!tag) {
break;
}
}
}
int main() {
int ar[] = { 12,23,34,21,100,34,14,65,73,11 };
int num = sizeof(ar) / sizeof(ar[0]);
Bubble_Sort(ar, num);
printf_ar(ar, num);
printf("\n");
printf("%d", ar[9]);
printf("\n");
system("pause");
return 0;
}
4.将三个数按从大到小输出。
分析:将三个数进行两两大小比较,然后交换位置。
//4.将三个数按从大到小输出。
void Swap(int* ap, int* bp) {
int tmp;
tmp = *ap;
*ap = *bp;
*bp = tmp;
}
int main() {
int a = 10, b = 7, c = 4;
if (a < b) {
Swap(&a, &b);
}
if (a < c) {
Swap(&a, &c);
}
if (b < c) {
Swap(&b, &c);
}
printf("%d %d %d", a, b, c);
printf("\n");
system("pause");
return 0;
}
5.求两个数的最大公约数。
分析:相减法 也叫更相减损法
思路:
1.如果a>b a = a - b;
2.如果b>a b = b - a;
3.假如a = b ,则 a或b 是最大公约数
4.如果a != b,则继续从1开始执行
5.也就是说循环的判断条件为a != b ,直到a = b时,循环结束。
举例说明
1.如果a>b a = a - b;
2.如果b>a b = b - a;
3.假如a = b ,则 a或b 是最大公约数
4.如果a != b,则继续从1开始执行
5.也就是说循环的判断条件为a != b ,直到a = b时,循环结束。
//5.求两个数的最大公约数。
int main() {
int a, b;
printf("请输入两个整数:");
scanf_s("%d%d",&a, &b);
while (a != b) {
if (a > b) {
a = a - b;
}
else {
b = b - a;
}
}
printf("a和b的最大公约数为:%d", a);
printf("\n");
system("pause");
return 0;
}