不是很会,所以写得比较冗长,没有人上传,我就发一个。
主要分成以下几块:
一、输入部分:用一个容量1000的字符数组存储,然后读取直到换行。至于遇0结束,同样进行处理计算,在处理过程中再判断。
二、输出部分:看着答案最后才一次性输出,其实可以用一个数组存储每次的处理结果,输入一行就处理一次。所以只要用一个字符数组就够了。
三、处理过程:
1、这边采用10000进制,把长数据,切成每4个数一组存入一个整型数组,再基于这个数组去计算。
2、通过观察是不是数组内都为0,来判断是否遇到0
3、因为数据很长,一次处理差不多就等于去掉一位,所以一次肯定完成不了,要进行迭代。每次就去掉个位,再减去5*个位,直到数据小于10000,这时候就可以通过普通的计算去做最后的判断;
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int flag;
int n;
int fun(int a[])
{
int if0 = 0; //用来判断是否为0;
for (int i = 0; i < n; i++)
{
if (a[i] != 0)
if0 = 1;
}
if (if0 == 0)
return 2;
//进行是否是17倍数的计算
int less10000;
less10000 = iteration(a);
int b, c, d;
b = less10000 / 10;
c = less10000 % 10;
d = b - 5 * c;
if (d % 17 == 0)
flag = 1;
else
flag = 0;
return flag;
}
int iteration(int a[]) //不断进行:减去个位、减去5倍个位,直到小于数值10000
{
int iunit;
int big10000 = 0;
for (int i = 0; i < n-1; i++) //检查是否大于10000
{
if (a[i] != 0)
big10000 = 1;
}
if (big10000 == 0)
return a[n-1];
else
{
iunit = a[n-1] % 10;
for (int i = n-1; i > 0; i--) //去掉个位
{
a[i] = a[i] / 10 + a[i - 1] % 10 * 1000;
}
a[0] = a[0] / 10;
a[n-1] = a[n-1] - 5 * iunit;
for (int i = n - 1; i > 0; i--)
{
if (a[i] < 0)
{
a[i] += 10000;
a[i - 1] -= 1;
}
else
break;
}
}
iteration(a);
}
int main()
{
char c_input[1000];
char c_temp[4];
int i_a[250];
int k = 0; //输入多少位数字:k
int a_flag[10]; //存储全部结果然后一次性输出
int i = 0, j = 0,m=0; //i:临时字符串;j:1000位字符串的位置;m:存储flag光标的位置;n:整型数组光标的位置
while( m<10)
{
k = 0;
n = 0;
j = 0;
while (scanf("%c", &c_input[k]) && c_input[k] != '\n')
{
k++;
}
while (c_input[j] != '\n')
{
i = 0;
if (j == 0) //在最高位前面补0;
{
int x = k % 4;
if(x!=0)
for (i = 0; i < 4 - x; i++)
{
c_temp[i] = '0';
}
}
for (i; i < 4; i++)
{
c_temp[i] = c_input[j];
j++;
}
i_a[n] = atoi(&c_temp);
n++;
}
flag = fun(i_a);
if (flag == 2)
break;
a_flag[m] = flag;
m++;
}
for (i = 0; i < m; i++)printf("%d\n", a_flag[i]);
system("pause");
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:715 |
川哥的吩咐 (C++代码)浏览:1069 |
C二级辅导-计负均正 (C语言代码)浏览:696 |
简单的a+b (C语言代码)浏览:717 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:640 |
A+B for Input-Output Practice (C++代码)浏览:631 |
【数组的距离】 (C语言代码)浏览:782 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1432 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:567 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:1090 |