【发布时间】:2021-02-24 13:28:19
【问题描述】:
我是编码新手,目前使用 c 语言编写, 我必须编写一个程序来读取用户给出的 N 个元素并将它们保存在一个数组中。程序必须生成一个新数组,其中:
- 第一个数组中的每个重复数字在第二个数组中只能出现一次
- 第一个数组中的每个 0 不必出现在第二个数组中
它必须与整数、字符和浮点数一起使用;它必须有两个版本,一个是随机元素,一个是用户给定的。
这是我现在所拥有的,它适用于整数和字符,但不适用于浮点数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
// asks input for array size
int maxnum;
printf("How long will the array be? ");
scanf("%d", &maxnum);
fflush(stdin);
char array[maxnum];
char answer;
do
{
// asks if user wants to input elements or prefers random
printf("Would you like to input characters (i) or generate random ones (r)?: ");
scanf("%c", &answer);
fflush(stdin);
}
while(answer != 'i' && answer != 'r');
if(answer == 'i')
{
// asks input for elements of the array
printf("Enter %d characters for the array: ", maxnum);
for(int i = 0; i < maxnum; i++)
{
scanf("%30s", &array[i]);
}
}
else if(answer == 'r')
{
srand(time(0));
printf("Characters for the array: ", maxnum);
for(int i = 0; i < maxnum; i++)
{
// generates a random number as the element of the array
array[i] = (rand() % (126 - 33 + 1)) + 33;
printf("%c ", array[i]);
}
}
printf("\n");
// loop that goes on for the length of the array
for(int i = 0; i < maxnum; i++)
{
// if the element is a 0, it is deleted from the array
if(array[i] == '0')
{
for(int k = i; k < maxnum; k++)
{
array[k] = array[k + 1];
}
// the length of the array is shortened by one
maxnum--;
}
// checks the next element
for(int j = i + 1; j < maxnum;)
{
// if the next element is the same, it is deleted
if(array[i] == array[j])
{
for(int k = j; k < maxnum; k++)
{
array[k] = array[k + 1];
}
maxnum--;
}
else
{
j++;
}
}
}
// prints final array
printf("Final array: ");
for(int i = 0; i < maxnum; i++)
{
printf("%c ", array[i]);
}
printf("\n\n\n");
return 0;
}
【问题讨论】:
-
您所拥有的实际上不适用于
ints,尝试执行int> 256 看看会发生什么。 -
不,C 中不可能有多个类型的数组。请编辑您的帖子以提供:预期和当前行为、输入/输出、需要帮助的具体问题。