我正在为我的 C 课程(第一门编程课程)做作业。
作业的一部分是编写代码,让用户输入一个最多9位数的数字,程序需要判断这个数字是“递增”/“真递增”/“递减”/“真递减”/”增减”/“实减实增”/“不减不增”。 (共7个选项)
由于这是我们的第一个作业,我们不允许使用课堂上教授的内容之外的任何内容:
do-while、for、while 循环、else-if、if、
中断、继续
scanf、printf、取模和基本运算符
(除了 stdio.h 之外我们不能使用任何库)
就是这样。我不能使用数组或getchar
或任何这样的东西。我可以用来接收用户输入的唯一函数是scanf
.
到目前为止,我已经用流程图和所有内容编写了算法,但我需要将用户的输入分成不同的数字。
例如,如果用户输入“1234...”,我想在a中保存1,在b中保存2,依此类推,然后对所有数字进行比较以确定例如它们是否都相等(递增和递减) ) 或是否 a > b >c ...(递减)等等。
我知道如何使用 % 和 / 运算符分隔每个数字,但我不知道如何将这些值“保存”在变量中,以便稍后用于比较。
这是我到目前为止所拥有的:
printf("Enter a positive number : ");
do {
scanf ("%ld", &number);
if (number < 0) {
printf ("invalid input...enter a positive integer: ");
continue;
}
else break;
} while (1);
while (number < 0) {
a = number % 10;
number = number - a;
number = number / 10;
b = a;
}
为什么不将它们扫描为字符(字符串)?然后,您可以通过数组偏移量来访问它们,方法是从 ASCII 字符代码中减去偏移量 48。您可以使用以下命令验证该字符是否为数字isdigit
来自 ctype.h。
EDIT
因为你的教授设置了令人难以置信的心不在焉的限制:
#include <stdio.h>
int main()
{
int number;
printf("Enter a positive number: ");
do
{
scanf ("%ld", &number);
if (number < 0)
{
printf ("invalid input...enter a positive integer: ");
continue;
}
else break;
} while (1);
int a = -1;
int b = -1;
int c = -1;
int d = -1;
int e = -1;
int f = -1;
int g = -1;
int h = -1;
int i = -1;
while (number > 0)
{
if (a < 0) a = number % 10;
else if (b < 0) b = number % 10;
else if (c < 0) c = number % 10;
else if (d < 0) d = number % 10;
else if (e < 0) e = number % 10;
else if (f < 0) f = number % 10;
else if (g < 0) g = number % 10;
else if (h < 0) h = number % 10;
else if (i < 0) i = number % 10;
number /= 10;
}
/* Printing for verification. */
printf("%i", a);
printf("%i", b);
printf("%i", c);
printf("%i", d);
printf("%i", e);
printf("%i", f);
printf("%i", g);
printf("%i", h);
printf("%i", i);
return 0;
}
最后的有效数字将为正数,因此您可以验证这些数字以满足不同的条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)