DAY2作业介绍

本文介绍了使用C语言完成基础编程任务,包括:不使用临时变量交换两个数、找出10个整数中的最大值、将三个数按降序排列及计算两个数的最大公约数。每个任务都有详细的代码实现,并附带了测试结果,适合初学者巩固C语言基础知识。
摘要由CSDN通过智能技术生成

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;
}
测试结果

请添加图片描述

结束语

一起加油,一起努力!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值