必须反转数字并获得正常和反向数字之间的差异。 输入由N个数组成,其中N是任意正整数。输入的第一行 仅包含正整数N.然后跟随一个或多个具有N个数字的行;这些数字 应该都是非负的,可以是单个或多个数字。这些是您需要的原始数字 生成N个相应的幻数。
我在考虑使用while循环并且一次只做一个输入,任何人都有任何想法?
到目前为止我有什么
#include <stdio.h>
int reverseInteger();
int generateMagicNumber();
int main()
{
int n,i;
char all;
printf("How many magic numbers do you want");
scanf("%d",&n);
while (i<n){ //
while (n != 0) //reversing number
{
rev = rev * 10;
rev = rev + n%10;
n = n/10;
i++;
all = n;
}
}
}
作业1:
反向数字魔术序列
截止日期:2016年1月27日星期三美国东部时间晚上11:59
反向数字是用阿拉伯数字写的数字,但是在哪里 数字顺序颠倒过来。第一个数字成为最后一个数字 反之亦然。例如,数字反转时的数字1245 将变为5421.请注意,省略所有前导零。那 表示如果数字以零结尾,则通过反转丢失零 (例如1200给出21)。另请注意,反转的数字从来没有 尾随零。最后,每个数字(即0-9)就是它 拥有反向号码。为了生成幻数,我们反转a 给出原始数字并存储差异的绝对值 原始数字与其反转版本之间。例如, 给定数字476,我们将生成反向数字674然后 计算476和674之差的绝对值 然后我们将198反向显示数字891;我们称之为神奇数字!
我们需要你的帮助来计算给定序列的幻数。 你的任务是计算给定数字和之间的差异 它的反向版本,并输出相反的差异。的 当然,结果并不是唯一的,因为任何特定的数字都是a 反转形式的几个数字(例如21可能是12,120或1200 在逆转之前)。因此,我们必须假设没有丢失零 反转(例如假设原始数字是12)。
输入
该 输入由N个数组成,其中N是任意正整数。 输入的第一行只包含一个正整数N.然后 跟随一个或多个具有N个数字的行;这些数字应该全部 是非负的,可以是单个或多个数字。这些是 您需要生成N对应魔法的原始数字 数字。输出
对于序列中的每个原始编号,打印 正好一个整数 - 它的幻数。省略任何前导零 输出。在单独的行上,输出最大的绝对差值 在序列中遇到。样本输入6 24 1 4358 754 305 794 Sample Output 81 0 6714 792 891 792 4176
具体要求:[15分]
- [3 pts]编写一个名为reverseInteger的函数,它将无符号整数作为输入,并将其反转数字版本作为 无符号整数。
- [3 pts]编写一个名为generateMagicNumber的函数,该函数将无符号整数作为输入,并返回其幻数,如 问题。
- [3 pts]正确显示幻数序列。 (显示在脚本文件中)
- [2 pts]显示最大的绝对差异(显示在脚本文件中)
- [3 pts]使用能够处理任何序列输入并生成序列的主函数演示完整程序 相应的输出。
- [1 pt]在CS服务器gcc编译器上进行编译,没有错误和警告。
未能正确记录您的整个代码将收到标记 零。
您要提交以下内容:
- 源代码文件:assign1.c
- 演示编译和执行的脚本文件:assign1.txt
要生成脚本文件,请使用CS中的以下命令 服务器:
cp assign1.c assign1.backup typescript assign1.txt cc assign1.c a.out [test your code here with at least 3 different input test cases in addition to the example given] exit [These steps will create a file called assign1.txt. Do not edit its contents - just submit it!]
提示:此表解释了此示例中完成的工作:
Originalnumber Reverse Absolute difference Reverse (Magic number) X Xr |X-Xr| |X-Xr|r 24 42 18 81 1 1 0 0 4358 8534 4176 6714 754 457 297 792 305 503 198 891 794 497 297 792
请注意,您的程序不应该使用数组,并且应该能够 读取N大小的序列,对于任何N值(32位整数)。的 当然,应该考虑内存空间优化 无需在任何给定的情况下一次性将所有N个数字存储在存储器中 时间。
答案 0 :(得分:1)
您应该在while
循环的每次迭代中读取一个新数字:
#include <stdio.h>
int reverseInteger();
int generateMagicNumber();
int main() {
int n, i;
char all;
printf("How many magic numbers do you want");
if (scanf("%d", &n) != 1)
return 1;
for (i = 0; i < n; i++) {
int num, temp, rev, magic;
if (scanf("%d", &num) != 1)
return 2;
rev = 0;
temp = num;
while (temp != 0) { //reversing number
rev = rev * 10;
rev = rev + temp % 10;
temp = temp / 10;
}
if (rev < num)
magic = num - rev;
else
magic = rev - num;
printf("%d ", magic);
}
printf("\n");
return 0;
}
如果您在一行中输入所有数字,答案将显示在其下方的一行中。