【问题标题】:Sucessive integers using C programming使用 C 编程的连续整数
【发布时间】:2014-09-30 04:42:52
【问题描述】:
Example input: 20 10 5 20 2 20 20 20 2 2 0

Output:
(20*5)
(10*1)
(5*1)
(2*3)

我这个学期刚开始编程,需要在一个项目上得到帮助。如果我的问题不清楚,我深表歉意。

所以基本上我必须输入正整数,直到我输入“0”才会结束程序。我不允许使用数组(无论这意味着什么)。

#include <stdio.h>


int main ()
{
int number, count=0

while(1)
{
    scanf("%d",&number);
    if (number!=0)
    {
        count++; continue;
    }
    else
    {
        printf("%d*%d",number,count);
        break;
    }
    return 0;
}

我如何存储这些多个数字,这样我就不会与之前的数字重叠,并且每次输入重复的数字时都加 1?我不能向我的教授寻求帮助;他只是告诉我谷歌它。

“某工程仪器由连续数(整数)的输入控制。 如果有相同数量的运行,该设备可以优化其性能。因此我们 想要安排数据以表明即将开始运行。编写一个 C 程序 读取一个数字序列并以 (n∗m) 的形式打印出每一轮数字,其中 m 是重复 n 次的次数。请注意,一次运行只能包含一个数字。这 输入数字以零结尾,这会停止设备。”

【问题讨论】:

  • @BeginnerProgrammer 你可以查一下,维基百科似乎有一个不错的解释,但如果你的教授还没有教给你,我怀疑他的意图是让你使用它们。可以发一下作业的全文吗?正如您所说,不使用数组似乎不合理。
  • 作业显示为(n*m),但输出的格式似乎为(m*n)。也就是说,根据您的老师对问题的回答,我会说完成这项作业的方法是找到一位新老师。
  • @chouaib 有趣的是,他使用数组来格式化scanfprintf,因此也违反了这条规则。
  • @Namfuak 一位不知道“run”和“count”之间区别的教授可能不会注意到 const char 数组。 :P
  • @Happy 也许下一个任务是给出一个程序,它返回内存分页方案中连续页面访问的计数。

标签: c loops integer


【解决方案1】:

这个作业似乎是基于对游程编码 (RLE) 的半生不熟的知识。无论如何,这是一个伪代码,它可以满足它的要求。

in = read next number from input
current_num = in    // let the 1st number in list be current_num
count = 1

loop 
    in = read next number from input
    if (in == 0)  break   // we are done, get out of loop

    else if (in == current_num) count += 1

    else     // run has ended, print it and start new run
        print current_num * count
        current = in
        count = 1

end loop

print current_num * count    // we exited the loop before printing the last run
                              // so do it outside the loop

您可以在代码中实现它,然后“优化”它以去除重复代码,并处理极端情况(例如“空”输入、单个数字输入等)

编辑为了清楚起见,作业要求“运行”数字,但示例输出显示数字“计数”。这两个相同。

【讨论】:

  • 这和上面的输出相差不大!
  • 虽然这是我认为代码可能要求的,但它不适合分配,因为示例输出似乎在打印之前已经读取并组织了整个运行,而不是只打印连续的重复。不过,这比实际分配更有意义。
  • @chouaib 我对这个问题发表了同样的评论。该作业要求“运行”数字,但所谓的样本输出显示了数字的“计数”。问题中给出的示例输出是错误的。
  • 哎呀!敏锐的眼光是我的 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多