作业要求贴在下面:
1. 给定两个整形变量的值,将两个值的内容进行交换。 2. 不允许创建临时变量,交换两个数的内容(附加题) 3.求10 个整数中最大值。 4.将三个数按从大到小输出。 5.求两个数的最大公约数。代码思想简介 给定两个整形变量的值,将两个值的内容进行交换。
通过创建临时变量实现数值交换
//给定两个整形变量的值,将两个值的内容进行交换。 #define _CRT_SECURE_NO_WARNINGS 1 #include测试结果 不允许创建临时变量,交换两个数的内容(附加题)int main() { int a, b, c; printf("请输入第一个整形变量的值:n"); printf("a="); scanf("%d", &a); printf("请输入第二个整形变量的值:n"); printf("b="); scanf("%d", &b); c = a; a = b; b = c; printf("交换后两个整型变量的值分别为:na=%d,b=%dn",a,b); return 0; }
键盘输入两个变量a和b的值,通过a=a+b,b=a-b,a=a-b;即可实现不创建临时变量实现数值交换
//exchange values of two variables without temporary variable #define _CRT_SECURE_NO_WARNINGS 1 #include测试结果 求10 个整数中最大值。int main() { int a, b; printf("input a="); scanf("%d", &a); printf("n"); printf("input b="); scanf("%d", &b); printf("n"); a = a + b; b = a - b; a = a - b; printf("after exchange:na=%d,b=%d", a, b); return 0; }
创建一个max变量,通过for循环比较一遍,遇见大的值交换数值,最后打印max即可
//find the max between 10 integers #define _CRT_SECURE_NO_WARNINGS 1 #include测试结果 将三个数按从大到小输出。int main() { int arr[10] = { 0 }; int i,max; for (i = 0; i <= 9; i++) { printf("please input integer-%d:",i+1); scanf("%d", &arr[i]); printf("n"); if (i == 0) max = arr[i]; else if (max <= arr[i]) max = arr[i]; } printf("the max integer is %dn", max); return 0; }
通过键盘输入数组内容和数组长度,然后对数组调用rank函数将数组进行降序排列,最后在主函数里面打印即可。
rank函数算法为选择排序,每次遍历出数组中最大元素,定位位置后与数组第一位换值,之后从数组第二位循环下去直到结束。
最终代码不仅仅限于长度为3的数组。
//将三个数按从大到小输出。 #define _CRT_SECURE_NO_WARNINGS 1 #include测试结果 求两个数的最大公约数。void rank(int arr[],int len) { int max, loc; int i, j; for (i=0;i<=len-1;i++) { max = arr[i], loc = i; for (j =i+1;j<=len-1;j++ ) { if (max < arr[j]) { max = arr[j]; loc = j; } } arr[loc] = arr[i]; arr[i] = max; } } int main() { int len; printf("please input arr length(1~100):"); scanf("%d", &len); printf("n"); int i, j; int arr[100] = {0}; for (i=0;i<=len-1;i++) { printf("input arr[%d]:", i + 1); scanf("%d", &arr[i]); printf("n"); } rank(arr, len); printf("descending output:n"); for(j = 0; j <= len - 1; j++) { printf("%d、", arr[j]); } return 0; }
先比较两个数的大小,把小的数作为for循环的终止符,让i从一开始循环,分别让N1、N2两个数对i进行求余运算,在结果都为零的情况下把i的值赋给max,循环结束后打印max
//求两个数的最大公约数 #define _CRT_SECURE_NO_WARNINGS 1 #include测试结果 结束语int main() { int N1, N2; int i, j, max; printf("please input N1:"); scanf("%d", &N1); printf("n"); printf("please input N2:"); scanf("%d", &N2); printf("n"); if (N1 < N2) j = N1; else j = N2; max = 1; for (i = 1; i <= j; i++) { if (N1 % i == 0 && N2 % i == 0) max = i; } printf("the max factor is :%dn", max); return 0; }
一起加油,一起努力!!



