繁体   English   中英

C- 检查多个数字变量是否大于 10 并移动到下一个

[英]C- Checking multiple number variables to be greater then 10 and move to the next

我有16 个#'s 标记为num1、num2 等。如果其中任何一个大于10 ,我需要将这些数字分成多个个体。 所以 12 变成 1 和 2。我一直在使用下面的代码成功地将 num1 = 12 修改为 num1 = 1 和 num1b = 2,但我发现它很啰嗦。

if(num1 >= 10);
   {
      num1b = num1 - 10;
      num1 = num1 / 10;
   }

if(num2 >= 10);
{ etc. and so on. }

我想让一个 for 循环通过它们运行 16 次并检查 num1,如果它超过 10 就执行它,如果没有则跳过它并移动到下一个 num。 我不确定 go 如何执行此操作,不确定它是 () 还是 [] 或什么。 我在想strlen会发挥作用,但我不确定。

   for(int i = 1; i < 17; i++)
   {
      if(num[i] >= 10)
      {
        num[i]b = num[i] - 10;
        num[i] = num[i] / 10;
      }
   }

Ps:这是我的第一篇文章,所以请原谅任何可怕的格式问题,尽管我愿意接受批评。

你不能for loop变量,那是不可能的,除非它们在地址上是连续的,但如果你这样做,你肯定会遇到未定义的行为。

另一种方法是使用arraysstruct作为占位符。

struct将充当占位符,其中包含有关一项的分组信息,例如:

typedef struct num{
    int units;
    int tenths;
}num;

这里这将只代表数组中的一个元素,其中units将用作 0 到 9 之间的数字,十分之一也将存储 0 到 9 之间的任何数字。 其中 0 表示数字未拆分。

对于数组,声明:

num arr[16];

意味着您在 memory 中创建一个size = 16的连续位置,因为它包含 16 个元素。 它的开头是arr[0]

所以要从用户那里读取 16 个数字,你可以尝试:

printf("enter 16 elements\n");
for (int i = 0; i < 16; ++i) {
    scanf("%d", &dummyNumber);
    arr[i].tenths = dummyNumber / 10;
    arr[i].units = dummyNumber % 10;
}

对于每次迭代,用户输入的数字存储到一个虚拟数字中,然后将虚拟数字的十分之一存储到数组当前 position 的struct的十分之一中。

并打印结果,您可以尝试:

printf("result is\n");
for (int i = 0; i < 16; ++i) {
    if(arr[i].tenths != 0)
        printf("arr[%d] = %d %d\n", i, arr[i].tenths, arr[i].units);
    else
        printf("arr[%d] = %d \n", i, arr[i].units);
}

我们获取数组中的每个元素并检查其十分之一是否为 0。 如果不是,那么我们打印十分之一。

这是完整的代码:

#include<stdio.h>

typedef struct num{
    int units;
    int tenths;
}num;

int main()
{
    num arr[16];

    int dummyNumber;

    printf("enter 16 elements\n");
    for (int i = 0; i < 16; ++i) {
        scanf("%d", &dummyNumber);
        arr[i].tenths = dummyNumber / 10;
        arr[i].units = dummyNumber % 10;
    }

    printf("result is\n");
    for (int i = 0; i < 16; ++i) {
        if(arr[i].tenths != 0)
            printf("arr[%d] = %d %d\n", i, arr[i].tenths, arr[i].units);
        else
            printf("arr[%d] = %d \n", i, arr[i].units);
    }


    return 0;
}

这是一些示例 output:

enter 16 elements
12
5
3
20
14
2
3
6
4
2
55
2
33
12
41
12
result is
arr[0] = 1 2
arr[1] = 5
arr[2] = 3
arr[3] = 2 0
arr[4] = 1 4
arr[5] = 2
arr[6] = 3
arr[7] = 6
arr[8] = 4
arr[9] = 2
arr[10] = 5 5
arr[11] = 2
arr[12] = 3 3
arr[13] = 1 2
arr[14] = 4 1
arr[15] = 1 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM