【每日进步一点点】C语言刷题技巧及训练4

🌕写在前面:


C语言刷题技巧及训练 这个专栏距离上次更新过去了一个学期,这次趁着暑假,准备一周更一篇,把这个系列笔记做完。

在这里插入图片描述
本专栏适用于刚接触C语言,或者想提升一下,或准备突击期末考试的小伙伴,我相信,刷题有技巧,可举一反三。
想要更多的练习👇
点击链接访问牛客网

在这里插入图片描述

往 期 推 荐 : \color{Red}往期推荐:
【每日进步一点点】C语言刷题技巧及训练1
【每日进步一点点】C语言刷题技巧及训练2
【每日进步一点点】C语言刷题技巧及训练3

在这里插入图片描述

🐬 1.争夺前五名

题目描述
期中考试开始了,大家都想取得好成绩,争夺前五名。
从键盘输入 n n n 个学生成绩(不超过40个),输出每组排在前五高的成绩。
输入描述
两行,第一行输入一个整数,表示 n n n 个学生(>=5),第二行输入 n n n 个学生成绩(整数表示:范围 0 0 0~ 100 100 100),用空格隔开
输出描述
一行,输出成绩最高的前五个,用空格隔开

代码如下

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main() 
{
	//输入
	int n = 0;//个数
	int arr[40] = { 0 };//存放成绩
	scanf("%d", &n);
	int i = 0;
	for (i = 0; i < n; i++) 
	{
		scanf("%d", &arr[i]);
	}

	//排序--冒泡排序
	for (i = 0; i < n - 1; i++)//趟数
	{
		//一趟冒泡排序元素进行比较的次数
		int j = 0;
		for (j = 0; j < n - 1 - i; j++)
		{
			if (arr[j] < arr[j + 1])//降序,大->小
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	
	}

	//输出
	for (i = 0; i < 5; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;
}

🎨 运行截图

在这里插入图片描述

🐬 2.竞选社长

题目描述
假如社团要竞选社长,有俩名候选人分别为 A A A B B B,社团每名同学并且只能投一票,最终得票多的人为社长。
输入描述
一行,字符序列,包含 A A A B B B,输入以字符 0 0 0 结束
输出描述
一行,一个字符, A A A B B B E E E,输出 A A A 表示 A A A 得票数多, 输出 B B B 表示 B B B 得票数多,输出 E E E 表示二人票数相等。


示例
输入 ABBBBAAB0
输出 B

代码如下

思路一

#include <stdio.h>
int main()
{
	char buff[100] = { 0 };
	//输入
	gets(buff);
	//统计
	int count_a = 0;
	int count_b = 0;
	int i = 0;
	while (buff[i] != '0')
	{
		if (buff[i] == 'A')
		{
			count_a++;
		}
		if (buff[i] == 'B')
		{
			count_b++;
		}
		i++;
	}
	//输出
	if (count_a > count_b)
	{
		printf("A\n");
	}
	else if (count_a < count_b)
	{
		printf("B\n");
	}
	else
	{
		printf("E\n");
	}
	return 0;
}

思路二

#include <stdio.h>
int main()
{
	//输入并统计
	int ch = 0;
	int flag = 0;
	while (((ch = getchar()) != '0') && (ch != EOF))
	{
		if (ch == 'A')
			flag++;
		else if (ch == 'B')
			flag--;
	}
	
	//输出
	if (flag > 0)
	{
		printf("A\n");
	}
	else if (flag < 0)
	{
		printf("B\n");
	}
	else
	{
		printf("E\n");
	}
	return 0;
}

🎨 运行截图


🍉补充

gets ()函数用来从标准输入设备(键盘)读取 字符串直到换行符结束。

可以直接输入带空格的字符串

在这里插入图片描述

🐬 3.你是天才吗?

代码如下
方法一

#include <stdio.h>
int main()
{
	int iq = 0;
	//EOF--end of file-文件结束标志-通常是放在文件的末尾的,键盘输入"Ctrl+Z",文件结束
	while (scanf("%d", &iq) != EOF)//多组输入
	{
		if (iq >= 140)
		{
			printf("Genius\n");
		}
	}
	return 0;
}

方法二

#include <stdio.h>
int main()
{
	int iq = 0;
	while (~scanf("%d", &iq))//多组输入
	{
		if (iq >= 140)
		{
			printf("Genius\n");
		}
	}
	return 0;
}

🍉补充


~ 是C语言中的一个操作符,即 按 位 取 反 \color{Red}按位取反


EOF其值其实为 − 1 -1 1

源码变为反码:符号位不变,其他位取反

反码进1变为补码


在内存中,整数是以 补 码 \color{Red}补码 形式进行存储的

所以,~ E O F EOF EOF 是对 − 1 -1 1 的补码形式进行 按 位 取 反 \color{Red}按位取反 ,即~ E O F EOF EOF的值为 0 0 0

在这里插入图片描述

每日进步一点点

OK 各位
这就是本期博客的全部内容啦,非常感谢你能看到这里

如果你觉得这篇文章写的 还不错的话,求赞,求收藏,求转发,最重要的是点一个大大的关注,各位的支持,是我最大的动力

在这里插入图片描述

每个优秀的人背后都有一段沉默的时光,那是付出很多努力却不一定有结果的日子。我们把它叫扎根。

点击链接访问牛客网

勇敢牛牛,不怕困难!

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 39
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刹那芳间-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值