【问题标题】:learning the basics of C programming which can clear my doubts on arrays and strings学习 C 编程的基础知识,可以消除我对数组和字符串的疑惑
【发布时间】:2016-06-23 11:39:34
【问题描述】:

我是 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 以便我可以通过 arr[i] 在 for 循环中调用它.

#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的一个问题,叫做练习题简单部分的数字权重

【问题讨论】:

  • 你需要把你尝试写的代码放在这里——然后你会得到帮助:)
  • 1234 > 999 和你所有的减法 == -1 所以我很困惑
  • @Swap "我有一个数组 arr[] 存储从 100 到 999 的数字" - 1234 不是 100-999 范围内的数字。所以不清楚你想做什么。
  • @tobi303:也许吧。但是有些懒惰的人提出问题,他们自己找到答案比提出这个问题要容易得多。对我来说,这就是“愚蠢的问题”。
  • @tobi303 有些人确实相信这一点,但如果你面对一个写着“左转”的大标志,而你问“我应该往哪个方向转?” ...我被教导说,生活就是提出正确的问题。

标签: c arrays string substring


【解决方案1】:

你可以通过这种方式按数字拆分数字

int num = 123;
int digits[3];
for (int i = 2; i >= 0; i--)
{
  digits[i] = num % 10;
  num /= 10;
}

此外,如果您将 num 转换为 char 也无济于事。如果您尝试打印它,您只会得到一些字符。什么都不会改变。

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 2011-01-07
    • 2022-01-24
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多