学习C编程的基础知识,这可以清除我对阵列和字符串的疑问



我是C的新手,所以这个问题似乎有点愚蠢:p。

我有一个数组arr[],该数组将数字从100到999。

现在,我必须取数数组的每个元素并减去后续数字。

例如,如果我在该数组中有一个数字为1234,那么我需要另一个数组,该数组清晰地存储1,2,3,4,以便我可以执行1-2 = -1、2-3 = -1、3-4 = -1。

因此,如果我将像1234这样的数据更改为通过打字方式来char,则如何将此字符存储到数组中,然后将其分解为1,2,3,4,以便我可以通过arr[i]将其称为for loop。<<<<<<<<<<<<<<<</p>

#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上,这对您无济于事。如果您尝试打印它,您只会获得一些角色。再也不会改变了。

最新更新