C语言 两道简单题练习

第一道 求两个较大值
既然是求两个数较大值,就是两个数比较,大的就是较大值,所以通过代码实现
int main()
{
int num1 = 10;
int num2 = 20;
if (num1 > num2)
printf(“较大值:%d\n”, num1);
else
printf(“较大值:%d\n”, num2);
return 0;
}
这里是通过if语句比较大小,定义两个数,if语句判断,就可以输出结果。不过还可以修改一下,改成输入两个数比较大小,所以就用到scanf,scanf是输入函数,代码如下
int main()
{
int num1 = 0;
int num2 = 0;
scanf("%d%d",&num1,&num2);
if (num1 > num2)
printf(“较大值:%d\n”, num1);
else
printf(“较大值:%d\n”, num2);
return 0;
}
第二道 找出只出现一次的数
题目:给定一个非空整数数组,其余元素均出现两次,找出那个只出现了一次的元素
样例:int a[]={1,2,3,4,5,1,2,3,4},该数组中只有5出现一次,其他数字都是成对出现的,要找出5
方法一:思路:计算数组中每个元素出现的次数,通过计算得出如果就出现一次的话,那么将其打印在屏幕上输出。所以主要使用count计数,最后出现1次就说明是单的,因为每个元素都要比较,所以要用到循环,代码如下:
int main(
{
int arr[] = { 1,2,3,4,5,1,2,3,4,};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);//因为要循环,所以就得知道元素个数
for (i = 0; i < sz; i++)//进入循环,定义i之后和j比较
{
int count = 0;
int j = 0;
for (j = 0; j < sz; j++)//这里是和j比较,并且统计出现个数,因为每个元素都要比较,所以这里就是和每个元素比较
{
if (arr[i] == arr[j])//这里是和其他的元素比较,相同则count加1,符号之前的思路
{
count++;
}
}
if (count == 1)//通过上面的判断,得知count=1,所以这里就是只出现一次的
{
printf(“单的:%d\n”, arr[i]);
break;
}
}
return 0;
}

方法二 考虑异或方法,因为异或是相同的为0,不相同的为1,所以0^a=a; 两个一样的数和一个不一样的数,异或结果是那个不一样的数,所以就能这样实现,代码如下;
int main()
{
int arr[] = { 1,2,3,4,5,1,2,3,4};
int i = 0;
int ret = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i++)
{
ret = ret ^ arr[i];//一直循环,直到得出只出现一次的数
}
printf(“单的:%d\n”, ret);
return 0;
}
重要的是拿学过的知识去优化算法,算法是在学习中最重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值