新手入门学习C语言的第一天

双非二本编程小白,对编程感兴趣,以此来记录每天的做题。(每日练习3题)

ps:菜鸟小白,如果有说错的地方希望能够和大佬们多多交流!!!

第一题 给定两个整形变量的值,将两个值的内容进行交换。

这里要注意的是要给定一个中间变量(temp),用中间变量对两个整形变量的值进行交换然后再打印。

#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int temp=0;
	temp = a;
	a = b;
	b = temp;
	printf("a=%d b=%d", a, b);
	return 0;
}

这个是可以使用中间变量时对两个值进行交换,当不能使用中间变量时我们可以用异或(^)进行实现。异或是不相同时为1,相同时为0。第一次异或a的结果是3,然后第二次3和b的2进行异或得到交换b的值为1,第三次3和1的值进行异或得到交换后a的值为2。

int main()
{
	int a = 1;
	int b = 2;
	a = a^b;
	b = a^b;
	a = a^b;
	printf("交换后的a和b的值:%d %d\n", a, b);
	return 0;

}

第二题 求10 个整数中最大值。

我刚开始的想法是对这10个数先进行从大到小的排序,每一个都进行比较然后把较大的数放在左边,一次从大到小排列,最后输出的下标为0的就是最大值,用到了冒泡排序的方法。

int main()
{
	int arr[] = { 1, 3,10, 2, 4 ,8,11,15,5,7 };
	int i,j;
	int temp ;
	for (i = 0; i <=9; i++)//外层循环是比较的轮数,数组内有10个数,那么就应该比较10-1=9轮
	{
		for (j = 0; j <= 9-i; j++)//内层循环比较的是当前一轮的比较次数,例如:第一轮比较9-1=8次,第二轮比较9-2=7次
		{

			if (arr[j] < arr[j + 1])
			{
				temp = 0;
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			
		    }
		
	   }
	}
	printf("最大值是:%d\n", arr[0]);

	return 0;

}

上面的方法可以但是不是最简便的,其实可以设定一个Max,假设这个Max为最大值这个最大值就是数组的第一个元素,然后依次和剩下的9个元素进行比较,如果比Max大就把大的这个元素和Max进行交换。

int main()
{
	int arr[10] = { 0 };
	int max = arr[0];
	int i = 0;
	int k = 0;
	for (k = 0; k < 10; k++) {
		scanf("%d", &arr[k]);
	}
	for (i = 1; i < 10; i++)
	{
		if (arr[i] > max)
			max = arr[i];
	}
	printf("%d\n", max);
	return 0;
}

第三题 将三个数按从大到小输出。

  也是设定一个中间变量temp,因为是从大到小,所以a>b>c,分别把所有可能出现的情况列举出来(b>a,c>a,c>b),要做到a当中一定存放的是最大的,c中存放的一定是最小的。

int main()
{
	int a, b, c;
	int temp;
	scanf("%d%d%d", &a, &b, &c);
	if (b > a)
	{
		temp = b;
		b = a;
		a = temp;
	}
	if (c > a)
	{
		temp = c;
		c = a;
		c = temp;
	}
	if (c > b)
	{
		temp = c;
		c = b;
		b = temp;
	}

	printf("%d %d %d", a, b, c);
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值