1.给定两个整形变量的值,将两个变量内容交换。
思路:创建一个临时变量,借助临时变量交换变量内容,先将第一个数的值赋给临时变量,再将第二个数的值赋给第一个数,然后将临时变量存的值赋给第二个数。
代码:
#include<stdio.h>
#include<stdlib.h>
//创建临时变量完成交换
int Exchange(int a,int b){
int temp = 0;
temp = a;
a = b;
b = temp;
printf("%d,%d", a, b);
}
int main(){
Exchange(3,5);
system("pause");
}
2.不允许创建临时变量交换两个变量的内容;
思路:利用和值;
代码:
#include<stdio.h>
#include<stdlib.h>
//直接交换
int Change(int a, int b){
b = a + b;
a = b - a;
b = b - a;
printf("%d,%d", a, b);
}
int main(){
Change(3, 5);
system("pause");
}
3.求十个数中最大值
思路:先将第一个数传给一个变量,利用for循环依次比较,如果比较的数大于变量值,则将大的数值付给该变量,最后输出变量的值,由此得到最大值。
若将数组作为参数时,有两种方式,第一种是值传递,在数组参数尾部加上【】,第二种为参数传递,直接将数组名作为参数,参数传递传递进去的是数组的首地址;
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int FindMax(int* a, int n){
int x = a[0];
for (int i = 0; i < n; i++){
if (a[i]>x){
x = a[i];
}
}
return x;
}
int main(){
int a[10] = { 0 };
printf("请输入整数:");
for (int j = 0; j < 10; j++){
scanf("%d", &a[j]);
}
int k = sizeof(a) / sizeof(a[0]);
int y = FindMax(a,k);
printf("最大数为%d", y);
system("pause");
}
4.将三个数按大到小输出
思路:将三个数两两比较,如果后者数值比前者大,则交换数据内容。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Swap(int *x, int *y){
if (*x < *y){
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
}
}
int main(){
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
Swap(&a, &b);
Swap(&a, &c);
Swap(&b, &c);
printf("%d %d %d", a, b, c);
system("pause");
}
5.求两个数的最大公约数
思路:利用辗转相除法
辗转相除法:
输入两个正整数m,n;
判断m%n==0?
如果是,则n就是最大公约数;
如果不是,则将n的值赋给m,再将m%n的值赋给n;
再执行第二步;
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int Max(int x, int y){
int c = y;
if (x%y != 0){
c = x%y;
x = y;
y = c;
}
return c;
}
int main(){
int a=0, b = 0;
printf("请输入两个数");
scanf("%d,%d", &a, &b);
int z = Max(a, b);
printf("最大公约数为%d", z);
system("pause");
}