天天看点

Day02作业

尽管现在并不是学习的第二天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;
		}
	}
}
           
上一篇: day02 homework

继续阅读