ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CCF 2019-12-1-报数

2021-11-28 20:34:54  阅读:216  来源: 互联网

标签:输出 12 题目 int 2019 数组 甲乙丙丁 CCF 本题


本题其实是一道比较简单的题目,可一看到题目时,确实懵了一下,甲乙丙丁的跳过次数要依次输出的,而不仅仅是输出总的跳过次数。

  • 本题中我使用了数组,其实不使用数组,直接用for(i=1;i<=n;i++)会更好。需要注意:当使用数组时应该确定数组大小,而不能以a[n]这种形式来 声明,因为在本题中起初输入的n是会变化的。
  • 题目中明确说明不计入被跳过的数,所以,最终统计的数是不包含被跳过的数的,而我们起初给了n一个确定的值,也就是我们确定的报够n个数才能结束游戏。所以,每跳过一个数,我们应该使n+1
  • 通过观察甲乙丙丁可能报的数的规律:通过每个数对4取余结果来确定。
  • 含有数字7(个位、十位、百位),7的倍数。
  • 最后一定要注意输出的格式,输出四行,每行一个数。
/*四个人从1开始轮流报数,含有数字7或者是7的倍数就直接跳过 
输入: n-----报了n个数后游戏结束 
输出: 共四行,每行一个正整数,依次表示甲乙丙丁跳过的次数
*/ 
#include<stdio.h>
int a[10001];
int main()
{
	int n,i;
	int j=0,y=0,b=0,d=0;
	scanf("%d",&n);
	//int a[n];            数组大小不应该设为n了,n是改变的。 
	for( i=0;i<n;i++)
	{
		a[i]=i+1; 
	
		if((a[i]%4==1)&&(a[i]%7==0||a[i]%10==7||a[i]/10%10==7||a[i]/100==7))
		{
			j++;
			n++;            //不计入未被跳过的数,所以,事实上出现的数的个
			                //数应该是大于n的 ,每跳过一个数,应该补一个数。 
		}
		if((a[i]%4==2)&&(a[i]%7==0||a[i]%10==7||a[i]/10%10==7||a[i]/100==7))	
		{
			y++;
			n++;
	    }
		if((a[i]%4==3)&&(a[i]%7==0||a[i]%10==7||a[i]/10%10==7||a[i]/100==7))
		{
			b++;
			n++;
		}
		if((a[i]%4==0)&&(a[i]%7==0||a[i]%10==7||a[i]/10%10==7||a[i]/100==7))
		{
			d++;
			n++;
		}
    }
	printf("%d\n%d\n%d\n%d",j,y,b,d);               //注意输出格式
	return 0;	
 } 

标签:输出,12,题目,int,2019,数组,甲乙丙丁,CCF,本题
来源: https://blog.csdn.net/qq_54521127/article/details/121596739

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有