[英]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
变量,那是不可能的,除非它们在地址上是连续的,但如果你这样做,你肯定会遇到未定义的行为。
另一种方法是使用arrays
和struct
作为占位符。
该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.