c - 如何在 C 中按输入顺序打印整数 - 递增、递减或均匀

标签 c printing integer typing

我尝试编写的 C 程序有问题。程序必须将整数存储在数组中(从键盘读取)。数字必须按输入顺序打印出来,例如如果输入:3 2 0 5 5 5 8 9,则输出应为:

3 2 0 - 减少 5 5 5 - 均匀 8 9 - 增加

对我来说,问题是,我无法编写一种能够在所有情况下工作的算法。 我试图用另一个数组“标记”元素(使用相同的索引,为每个整数保存一个值1-表示增加,-1-表示减少,0表示均匀),但这部分有效。 你还有其他想法吗? 预先感谢:)

#include <stdio.h>
#include <stdlib.h>

main() {

    int array[100];
    int flag[100];
    int num, i;

    printf("Enter how many numbers you want to type: ");
    scanf("%d",&num);

    for(i=0;i<num;i++) {
        scanf("%d",&array[i]);
    }
    for(i=0;i<num;i++){
        if((array[i]<array[i+1])) {
            flag[i]=flag[i+1]=1;
        }
        if(array[i]>array[i+1]) {
            flag[i]=flag[i+1]=-1;
        }
    }

    for(i=0;i<num;i++) {
        if(array[i]==array[i+1]) {
            flag[i]=flag[i+1]=0;
        }
    }
    for(i=0;i<num;i++){
        printf("%d ",flag[i]);
    } 
    printf("\n");

    for(i=0;i<num;i++) {
        if(flag[i]==1) {
            do{
                if(flag[i]==1){
                    printf("%d ",array[i]);
                    i++;
                }
            }while(flag[i]==1);
            printf(" - increasing\n");
        }

        if(flag[i]==0) {
            do{
                if(flag[i]==0){
                    printf("%d ",array[i]);
                    i++;
                }
            }while(flag[i]==0);
            printf(" - evenly\n");
        }

        if(flag[i]==-1) {
            do{
                if(flag[i]==-1) {
                    printf("%d ",array[i]);
                    i++;
                }
            }while(flag[i]==-1);
            printf(" - decreasing\n");
        }

    } 

    system("pause");
    return 0;
}

最佳答案

想法:

  • 只有看到“第二个”数字后,您才知道“第一个”数字是属于降序、偶数还是升序。

  • “第三个”数字要么与前两个数字属于同一序列,要么是另一个序列的“第一个”数字。

所以:检查两个数字并分配一个序列类型。
继续以相同的顺序检查数字。
当您无法分配相同的序列时,请返回检查两个数字并分配序列。

类似于

int *n1, *n2, *n3;
n1 = <first element>;
n2 = n1 + 1;
n3 = n2 + 1;

/* some kind of loop */
if ((n3 - n2) HAS_SOME_SIGN_AS (n2 - n1)) /* n3 belongs to the sequence */;
n1++;
n2++;
n3++;
/* end loop */

关于c - 如何在 C 中按输入顺序打印整数 - 递增、递减或均匀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004689/

相关文章:

python - 展平由整数和列表组成的列表

javascript - 在 Javascript 中将字符串解析为真正的整数

c - 使用 ps aux,进程 11558 和 16290 的路径位于括号中 : "(dd)" and "(security_authra)". 这些是什么?

c - linux proc大小限制问题

c - _findfirst 和通配符匹配

css - 带有表格的页面在打印时会产生问题,即使我使用的是单独的打印 css?

javascript - 在 ReactToPrint 中调整页面大小

c - 指针/取消引用错误

html - 圆圈的 CSS 样式 <figure> 不会显示在打印 View 中

algorithm - 随机生成特定范围内的整数序列