如何在数组和字符串中使用代码?

时间:2019-04-23 21:38:51

标签: c arrays string

这是给我的指示:

  1. 如果命令字为find,请读取其他整数并在数据集中搜索该整数。
  2. 如果命令字为print,则打印数组
  3. 其他任何命令字都是错误。
  4. 命令字不能超过20个字符。

  5. 在读取了n+1值之后,还会从键盘上读取一个整数(k)。

  6. 在数组中搜索值k。如果找到,则打印找到k的位置。 (1 =数据值,n =最后一个数据值)。
  7. 如果未找到k,则打印not found。这不是错误。
  8. 如果数据中有多个值k,则仅打印第一个值的位置。
#include <stdio.h>

int main (void) {
   int n;
   scanf ("%d", &n);
   if (n < 1) {
      printf ("Error: one or more values must be provided.\n");
      return 1;
   }

   int x [n];
   int a;
   a = 0;
   while (a < n) {
      scanf ("%d", x [a]);
      a = a + 1;
   }

   int k;
   scanf ("%d", &k);
   int i;
   i = 0;
   while (i <= n-1) {
      if (x[i] == k) {
         break;
      }
      i = i + 1;
   }
   if (i < n) {
      printf ("%d\n", k+1);
   } else {
      printf ("not found\n");
   }

   printf ("Error: invalid command\n");
   return 0;
}

建议的策略:

  1. 读取数组数据后,读取一个字符串。
  2. 如果字符串为find,则读取整数k并执行搜索。
  3. 如果字符串为print,则不要读取k,只需将数据打印在数组中即可。
  4. 如果字符串不是findprint,则处理错误。

1 个答案:

答案 0 :(得分:0)

Shai'Tavia,希望我的回答能帮助您了解如何使代码正常工作。您已经掌握了第一部分,但是您需要比较用户给出的命令字符串,然后再决定下一步要做什么。

#include <stdio.h>
#include <string.h>

#define ARRAYLENGTH 8

void printArray(int *array, int length)
{
    for (int i = 0; i < length; i++)
        printf("%d ", array[i]);
    printf("\n");
}

void search(int *array, int key)
{
    int flag = 0;

    for (int i = 0; i < ARRAYLENGTH; i++)
    {
        if (array[i] == key && flag == 0)
        {
            printf("found %d at index: %d\n", key, i);
            flag = 1;
        }
    }

    if (flag == 0)
        printf("not found\n");
}

int main(void)
{
    char command[20];
    int indx = 0;
    int array[] = {1, 4, 6, 8, 43, 61, 34, 2};
    int n, flag = 0;

    printf("How many times will we run?");
    scanf("%d", &n);

    if (n < 1)
    {
        printf("Error: one or more values must be provided.\n");
        return 1;
    }

    do
    {
        printf("Enter the command word:");
        scanf("%s", command);

        if (strcmp(command, "find") == 0)
        {
            scanf("%d", &n);
            search(array, n);
        }

        else if (strcmp(command, "print") == 0)
            printArray(array, ARRAYLENGTH);

        else
            printf("Command not found\n");

    } while (--n > 0);

    printf("What is your final interger?");
    scanf("%d", &n);

    search(array, n);

    return 0;
}