【问题标题】:Write a program to replace all even numbers in an array with $ and print the array编写程序用 $ 替换数组中的所有偶数并打印数组
【发布时间】:2023-02-06 15:36:34
【问题描述】:

这是我的代码。它不起作用。

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

int main(void) {
    int size, i;

    setbuf(stdout,NULL);
    printf("Enter array limit: ");
    scanf("%d",&size);
    printf("Enter values: ");

    int arr[size];

    for(i=0;i<size;i++){
        scanf("%d",&arr[i]);
        if(arr[i]%2==0){
            arr[i]='$';
        }
    }

    for(i=0;i<size;i++){
        printf("%d\n",arr[i]);
    }
    return 0;
}

结果是:

36
3
36
1

【问题讨论】:

  • trusfated,printf("%d\n",arr[i]);打印一个整数。 $ 不是整数。当数字是偶数时,只需printf("$\n");。
  • 如果您不询问输入而只生成数字,可能会更容易。
  • 它有点奏效。您的数组包含整数,当您尝试将 $ 放入其中时,改为使用 $ 的 ASCII 值(即 36)
  • 我敢打赌,问题陈述是“用'$'替换字符数组中的偶数值数字(然后打印“字符串”)”......
  • 你可能想问问给你这个任务的人,以便澄清。在 C 中,包含整数的数组不能包含任何其他内容。所以不清楚这个练习应该完成什么。或者,您可以使用不同的语言,它允许数组包含任何内容。

标签: arrays c


【解决方案1】:

您正在用美元字符的 ascii 代码替换数字。您可以执行以下两项操作之一:

保留数组并在打印位置添加 if 语句。如果偶数,打印数字,否则打印 $

创建一个 char* 数组。如果是数组,则为每个元素分配 20 个字符。使用 sprintf 打印每个元素中的数字或 $。循环并打印新数组的每个元素。

无论如何,您不能将 '$' 存储在 int 数组中,然后确定它是一个字符。它只是个数字。

【讨论】:

    【解决方案2】:

    看问题是,如果你想打印 '$' 来代替偶数, 然后上面是一个简短的代码......但唯一的问题是整数值仍然存在。数组没有变化。

    如果我谈论您编写的代码,则显示 36,因为它是“$”的 ASCII 值,并且由于数组是整数类型,因此它打印“36”来代替它。

    但我们可以存储它并使代码打印“$”。但随后我们将不得不使用指针和类型转换。

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2022-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多