鱼C论坛

 找回密码
 立即注册
查看: 3659|回复: 4

关于C语言数组的问题

[复制链接]
发表于 2018-1-24 20:57:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
已知一维数组中的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[100],i,n,k,j=0;
        gets(c);
        scanf("%d",&k);
        n=strlen(c);
        for(i=0;i<n;i++)
        {
                if(c[i]==k)
                {   j++;
                        printf("%d\n",i);
                }

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

题目

题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-24 21:16:44 | 显示全部楼层
错误信息是什么 ?IDE应该有提示吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-24 21:17:22 | 显示全部楼层
数组的定义应该改成char
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[NUM], i, key;


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

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

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

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


                return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-25 11:26:21 | 显示全部楼层
恩,已经解决了,谢谢大家,哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-6 07:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表