尽管现在并不是学习的第二天qwq
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
//选择运行的程序
int choose = 0;
while (1)
{
printf("1.交换数字(有临时变量)\n");
printf("2.交换数字(无临时变量)\n");
printf("3.输出数组最大数字\n");
printf("4.从大到小排序\n");
printf("5.输出最大公因数\n");
printf("\t---请输入需要打开的程序(1/2/3/4/5/6)---\n");
scanf("%d", &choose);
if (choose == 1)
{
change(22, 33);
}
else if (choose == 2)
{
changePlus(66, 666);
}
else if (choose == 3)
{
printMaxArrayNumber();
}
else if (choose == 4)
{
printBigToSmall();
}
else if(choose == 5)
{
factor(40, 8);
}
else
{
printf("输入有误~!!!!!!!!!!!!!!");
}
printf("\n");
}
return 0;
}
//1. 给定两个整形变量的值,将两个值的内容进行交换。
int change(int num1, int num2)
{
int temp1 = num1;
int temp2 = num2;
num1 = temp2;
num2 = temp1;
printf("交换之前:\n第一个数:%d\n第二个数:%d\n\n交换之后:\n第一个数:%d\n第二个数:%d\n", temp1, temp2, num1, num2);
}
//2. 不允许创建临时变量,交换两个数的内容(附加题)
int changePlus(int num1, int num2)
{
num1 += num2;
num2 = num1 - num2;
num1 = num1 - num2;
printf("交换之后:\n第一个数:%d\n第二个数:%d\n", num1, num2);
}
//3.求10个整数中最大值。
int printMaxArrayNumber()
//3.0设置maxArrayNumber数组,并输出
{
int arrayNumber[] = { 1,2,3,4,540968,6,7,8,9,10 };
int arrayNumberCount = (sizeof(arrayNumber) / sizeof(arrayNumber[0]));
printf("最大数为:%d\n", maxArrayNumber(arrayNumber, arrayNumberCount));
}
int maxArrayNumber(int numberArray[], int numberArrayCount)
{
for (int one = 0,max = numberArray[0]; one < numberArrayCount; one++)
{
if (max < numberArray[one+1])
{
max = numberArray[one + 1];
}
if (one == numberArrayCount - 1) {
return max;
}
}
}
//4.将三个数按从大到小输出。
int printBigToSmall()
{
int arrayNumber[] = { 432,235,2142,43,543,4,6,346,54,5,54,534,64,54,64,436,4,43,654,4,4,654,4 };
int arrayNumberCount = (sizeof(arrayNumber) / sizeof(arrayNumber[0]));
bigToSmall(arrayNumber, arrayNumberCount);
printf("\n");
}
int bigToSmall(int arrayNumber[], int arrayNumberCount)
{
int numberTemp = 0;
for (int one = arrayNumberCount; one > 1; one--)
{
for (int two = 0; two < one; two++) {
if (arrayNumber[two] < arrayNumber[two + 1]) {
numberTemp = arrayNumber[two];
arrayNumber[two] = arrayNumber[two + 1];
arrayNumber[two + 1] = numberTemp;
}
}
}
for (int one = 0; one < arrayNumberCount; one++)
{
printf("%d ", arrayNumber[one]);
}
}
//5.求两个数的最大公约数。
int factor(int numberOne, int numberTwo)
{
int smallOne = (numberOne < numberTwo ? numberOne : numberTwo);
for (int factor = smallOne; factor > 0; factor--)
{
if (numberOne % factor == 0 && numberTwo % factor == 0)
{
printf("%d与%d的最大公因数为:%d\n", numberOne, numberTwo, factor);
return;
}
}
}