杨kkk 发表于 2018-1-24 20:57:11

关于C语言数组的问题

题目:
已知一维数组中的10个元素各不相同,查找数组中是否存在值为key的数组元素。如果有,输出相应的下标,否则输出not found。已知数组无序排列。
input
先从键盘输入10个整数。然后再输入一个待查找的数据key。
output
若存在,则输出该数所在位置的下标值。若不存在则输出"not found"(输出不包含双引号)。
例如输入:
6 70 -9 80 83 54 3 88 10 2
80
输出:
3
       我写的程序在下面,但是出了问题,我想问问是什么问题。
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
        int c,i,n,k,j=0;
        gets(c);
        scanf("%d",&k);
        n=strlen(c);
        for(i=0;i<n;i++)
        {
                if(c==k)
                {   j++;
                        printf("%d\n",i);
                }

        }
        for(i=0;i<n;i++)
        {
                printf("%d\n",c);
        }
       if(j==0)
       {
               printf("not found\n");
       }
return 0;
}

cnkizy 发表于 2018-1-24 21:16:44

错误信息是什么 ?IDE应该有提示吧

杨kkk 发表于 2018-1-24 21:17:22

数组的定义应该改成char

ba21 发表于 2018-1-24 21:50:04

本帖最后由 ba21 于 2018-1-24 21:53 编辑

你这逻辑太乱了。

gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
其调用格式为:      scanf("<格式化字符串>",<地址表>);
scanf()函数返回成功赋值的数据项数,出错时则返回EOF。
其控制串由三类字符构成:
1。格式化说明符;
2。空白符;
3。非空白符;


参考
#include <stdio.h>

#define NUM 10


int main(vod)
{
      int input, i, key;


                printf("请输入10个整数以空格分开:");

                // 从键盘接收10个整数
                for(i=0; i<NUM; i++)
                {
                        scanf("%d",&input);
                }
               
                // 清除scanf余留下来的数
                while(getchar() != '\n')
                        continue;

                printf("输入一个待查找的数据:");
                scanf("%d", &key);

                // 查找key
                for(i=0; i<NUM; i++)
                {
                        if (input == key)
                        {
                                printf("已找到,下标是:%d\n",i);
                                break;
                        }
               
                }
                if (i==NUM) //表示没有找到
                        printf("not found\n");


                return 0;
}

杨kkk 发表于 2018-1-25 11:26:21

恩,已经解决了,谢谢大家,哈哈
页: [1]
查看完整版本: 关于C语言数组的问题