【发布时间】:2011-07-18 03:44:58
【问题描述】:
使用单下标数组解决以下问题: 读入 20 个数字,每个数字都在 10 到 100 之间,包括 10 到 100。在读取每个数字时,仅当它不与已读取的数字重复时才打印它。提供所有 20 个数字都不同的“最坏情况”。使用尽可能小的数组来解决这个问题。
这是我目前所拥有的:
#include <stdio.h>
#define SIZE 20
int duplicate (int num[] );
int main ()
{
int i, numbers[ SIZE ];
printf( " Enter 20 numbers between 10 and 100:\n " );
scanf_s( "%d\n" );
for (int i = 0; i < SIZE - 1; i++ );
{
int duplicate( int num[] )
{
int i, hold;
for ( i = 0; i <= SIZE - 1; i++ )
if ( num[i] == num[i=1] ){
hold = num[i];
else
hold = num[i+1];
}
printf( "%3d\n," num[ i ] );
}
【问题讨论】:
-
欢迎堆栈溢出。到目前为止,你有什么问题?它是否运行,但产生不正确的结果?它会因一些错误而中止吗?是不是编译失败了?
-
@Angela 发布的代码存在一些明显的问题:(1)第一个
for循环没有做任何事情,因为它在开头{之前有一个分号 - 即有循环中没有代码; (2) 中间的if ( num[i] == num[i=1] ){语句有[i=1]但应该有[i+1](除非你想要无限循环); (3)if后面的三行括在if的{ }括号内包括对应的else声明(我假设赢了'不编译); (4) 您正在为hold分配一个值,但从不使用该值。 -
我尝试重新格式化代码以使其更易读,尽管它涉及一些猜测工作,因为有一些不匹配的大括号,并且似乎有两个不完整的函数定义 (@987654332 @ 和
duplicate)。