我是 C 新手,所以这个问题可能看起来有点愚蠢:P 。
我有一个数组arr[]
,它存储从100到999的数字。
现在,我必须取出数组的每个元素并减去后续的数字。
例如,如果我在该数组中有一个数字 1234,那么我需要另一个数组来明确存储 1,2,3,4,以便我可以执行 1-2= -1, 2-3 =-1, 3 -4=-1。
因此,如果我通过类型转换将像 1234 这样的数据更改为 char,那么如何将此 char 存储到数组中,然后将其分解为 1,2,3,4,以便我可以通过 在 for 循环中调用它arr[i]
.
#include <stdio.h>
#include<string.h>
int main()
{
int t,n,w;
int mod = 1000007;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&w);
int start = 1;
int end = 10;
int i,j,z;
for(i=0;i<=n-2;i++)
{
start = start*10;
end = end*100;
}
end--;
char arr[10000];
for(i= start;i<=end;i++)
{
scanf("%c",&arr[i]);
}
int len = strlen(arr);
int count = 0;
int Value=0;
for(i=0;i<len;i++)
{
char b[10000];
b[0] = arr[i] + '0';
char arr2[10000];
int g = strlen(b);
for(j=0;j<g;j++)
{
strncpy(arr2, b + j, j+1);
}
int k = strlen(arr2);
for(z=0;z<k;z++)
{
int u = arr2[z] - '0';
int V = arr2[z+1] - '0';
if(u>V)
{
Value = Value + (u-V);
}
else
{
Value = Value + (V-u);
}
}
if (Value == w)
{
count++;
}
}
int ans = count % mod;
printf("%d",ans);
}
return 0;
}
实际上这是来自 codechef.com 的一个问题,在练习题的简单部分中称为“数字的权重”
最佳答案
您可以通过这种方式按数字拆分数字
int num = 123;
int digits[3];
for (int i = 2; i >= 0; i--)
{
digits[i] = num % 10;
num /= 10;
}
此外,如果您将 num 转换为 char 这对您没有帮助。如果你尝试打印它,你只会得到一些字符。一切都不会改变。
关于c - 学习C编程基础知识,可以消除我对数组和字符串的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37990576/