C语言复习第二次作业
作业要求贴在下面:
1. 给定两个整形变量的值,将两个值的内容进行交换。
2. 不允许创建临时变量,交换两个数的内容(附加题)
3.求10 个整数中最大值。
4.将三个数按从大到小输出。
5.求两个数的最大公约数。
代码思想简介
给定两个整形变量的值,将两个值的内容进行交换。
通过创建临时变量实现数值交换
//给定两个整形变量的值,将两个值的内容进行交换。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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=%d\n",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<stdio.h>
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;
}
测试结果
求10 个整数中最大值。
创建一个max变量,通过for循环比较一遍,遇见大的值交换数值,最后打印max即可
//find the max between 10 integers
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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 %d\n", max);
return 0;
}
测试结果
将三个数按从大到小输出。
通过键盘输入数组内容和数组长度,然后对数组调用rank函数将数组进行降序排列,最后在主函数里面打印即可。
rank函数算法为选择排序,每次遍历出数组中最大元素,定位位置后与数组第一位换值,之后从数组第二位循环下去直到结束。
最终代码不仅仅限于长度为3的数组。
//将三个数按从大到小输出。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
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<stdio.h>
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 :%d\n", max);
return 0;
}
测试结果
结束语
一起加油,一起努力!!