解题思路:先动态输入,然后根据题目要求编写代码,因为题目难点在于超大数!!所以需要用字符型数组来存放这个超大数。

注意事项:超大数!!!!

参考代码:

#include <stdio.h>

#include <string.h>

int main(){

int n,i,j,c,y,num;

char a[100];

while( ~scanf("%s",a) ){//动态输入 相当于while(scanf("%s",a)!=EOF); 

if( a[0]=='0' ) break; //结束处理 

n=strlen(a),num=a[0]-'0',i=1;//将字符型转化为整数型 

while( i<n ){

num=num*10+a[i]-'0';//判断是否为17的倍数 

num%=17,i++;

}

if( num==0 ) printf("1\n");

else printf("0\n");

}

return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

猿来是你 2年前 回复TA
#include<stdio.h>
int main() {
	int a[11];
	int i,t;
	t=1;
	for(i=0; t!=0; i++) {
		scanf("%d",&a[i]);
		t=a[i];
	}
	for(int j=0;j<i-1;j++)
	{
		int n,m,s;
		s=a[j]%10;		//个位数的大小 
		m=(a[j]-s)/10;	//去掉个位数的数值 
		n=m-s*5;		//相减的结果 
		if(n%17==0)
		printf("1\n");
		else
		printf("0\n");
	}
	return 0;
}
为什么我的%50错误啊?求解
写不了代码 2年前 回复TA
@禾安 while( i<n ){  num=num*10+a[i]-&#039;0&#039;;//判断是否为17的倍数   num%=17,i++;  } 这里为什么要这样做呀?
写不了代码 2年前 回复TA
@uq_23488237301 注意超大数的情况
写不了代码 2年前 回复TA
@uq_23488237301 你这个不行
uq_23488237301 3年前 回复TA
#include<stdio.h>
void main()
{
	int m,n,j,k,i,l;
	for(i=1;i<=10;i++)
	{
		scanf("%d",&m);
		n=m/10;//得到整数 
		k=m-n*10;//得到个位数 
		j=n-5*k;
		 if(j%17==0&&j!=0)//判断是否为17的倍数 
		 printf("1");
	
		 else
		printf("0"); 
		 	if(n==0)
		break; 
		 
		 
	}
	
 }
禾安 3年前 回复TA
第一次发表喔,做的不太好,可能看的不方便,抱歉了,已经尽力了。