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

写在前面:


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

【每日进步一点点】C语言刷题技巧及训练4_第1张图片
本专栏适用于刚接触C语言,或者想提升一下,或准备突击期末考试的小伙伴,我相信,刷题有技巧,可举一反三。
想要更多的练习
点击链接访问牛客网

在这里插入图片描述

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

【每日进步一点点】C语言刷题技巧及训练4_第2张图片

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 
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;
}

运行截图

【每日进步一点点】C语言刷题技巧及训练4_第3张图片

【每日进步一点点】C语言刷题技巧及训练4_第4张图片

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 
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 
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;
}

运行截图

【每日进步一点点】C语言刷题技巧及训练4_第5张图片

补充

【每日进步一点点】C语言刷题技巧及训练4_第6张图片
gets ()函数用来从标准输入设备(键盘)读取 字符串直到换行符结束。

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

【每日进步一点点】C语言刷题技巧及训练4_第7张图片

3.你是天才吗?

【每日进步一点点】C语言刷题技巧及训练4_第8张图片

代码如下
方法一

#include 
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 
int main()
{
	int iq = 0;
	while (~scanf("%d", &iq))//多组输入
	{
		if (iq >= 140)
		{
			printf("Genius\n");
		}
	}
	return 0;
}

补充


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

【每日进步一点点】C语言刷题技巧及训练4_第9张图片

EOF其值其实为 − 1 -1 1

【每日进步一点点】C语言刷题技巧及训练4_第10张图片

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

反码进1变为补码


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

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

在这里插入图片描述

每日进步一点点

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

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

在这里插入图片描述

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

点击链接访问牛客网

勇敢牛牛,不怕困难!

你可能感兴趣的:(每日进步一点点,c语言,算法,开发语言)