做题笔记2

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

#include<stdio.h>
int main()
{
	int a = 10;//定义第一个值为10。
	int b = 20;//定义第二个值为20。
	int *p1 = &a;//定义指针p1,存放a的地址。
	int *p2 = &b;//定义指针p2,存放b的地址。
	int temp;
	//定义一个变量,用来交换存放 a b 的值。
	temp = *p1;
	//将p1中存放的地址赋值给temp。,此时temp是a元素的地址。
	*p1 = *p2;
	//将p2的地址赋值给p1,此时p1里面存放的是p2的地址,也就是b的地址。
	*p2 = temp;
	//将temp里面a元素的地址赋值给p2,此时p2里面存放的是a元素的地址。
	a = *p1;
	//此时指针p1里面是b的地址,将b的值赋值给a.
	b = *p2;
	//此时指针p2里面是a的地址,将a的值赋值给b.
	printf("%d %d", a, b);
	//最终输出a b,实现两个数的交换。

	system("pause");
	return 0;
}

二. 不允许创建临时变量,交换两个数的内容(附加题)

#include<stdio.h>
int main()
 {
        	int a = 13;
        	int b = 78;
        	a = a ^ b;
        	//将a异或b的值赋值给a,此时a的值变为a^b。
        	b = a ^ b;
        	//将a异或b的值赋值给b,此时a的值已经变成为a^b;
        	//则的表达式相当于b=(a^b)^b,a异或两次b,其值变成a,所以相当于把a的值赋值给b。
        	a = a ^ b;
        	//此时,b的值为a^b,z这个表达式可以变成a^(a^b);
        	//给b异或两次a,其值还是b,所以相当于把b的值赋值给a。
        	printf("a=%d,b=%d", a, b);
        	system("pause");
        	return 0;
        	 }

三、求10 个整数中最大值。
思路将一个数组中的值与前一个值进行比较,如果大于,则交换两个值的内容。

//求10个整数中的最大值。
#include<stdio.h>
#include<windows.h>
int main()
{
	int arr[10] = {1,2,3,4,5,6,7,8,9,10};       //定义一个大小为10的数组。
	int i,j,temp;            //定义一个变量,初始化为0。
	for (i = 0; i < 9; i++)     //遍历这10个数字。
	{
		for (j = 0; j <= 9 - i; j++)
		{
			if (arr[j] > arr[j + 1])  //条件判断,数组中的随机值是否大于第i+1个值。
			{
				temp = arr[j + 1];     //将第i+1个值赋值给temp。
				arr[j + 1] = arr[j];   //在将一个随机值赋值给第i+1个值。
				arr[j] = temp;         //将temp的值赋值给随机值。
			}
		}
	}
	system("pause");
	return 0;
}

四、.将三个数按从大到小输出。

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int d;//定义一个变量,要在abc交换时存储中间值。
	printf("请输入三个整数:");
	scanf("%d %d %d", &a, &b, &c);
	if (a < b)
	{
		d = a;
		a = b;
		b = d;
	}
	//if a<b 交换a和b的值,交换之后满足a>b。
	if (a < c)
	{
		d = a;
		a = c;
		c = d;
	}
	//if a<c 交换a和c的值,交换之后满足a>c,此时a的值变成三个数中的最大值。
	if (b < c)
	{
		d = b;
		b = c;
		c = d;
	}
	//if b<c 交换b和bc的值,交换之后满足b>c。
	printf("%d %d %d", a, b, c);//此时abc的大小顺序已经确定。a>b>c
	system("pause");
	return 0;

}

五.求两个数的最大公约数。余数为0的时候,除数就是最大公约数

#include<stdio.h>
int main()
{
	int m, n, t, r;
	scanf("%d %d", &m, &n);
	if (m > n)
	{
		t = m;
		m = n;
		n = t;
	}//如果m>n,交换m和n的值,使得m<n。
	r = m % n;
	if (r != 0)//如果m%n余数r不等于0。
	{
		m = n;     //将n的值赋值给m.
		n = r;     //将r的值赋值给n.
		r = m % n; //把被重新赋值的n和m进行计算。
	}
	printf("%d\n",n);
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值