关于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;
} 错误信息是什么 ?IDE应该有提示吧 数组的定义应该改成char 本帖最后由 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;
} 恩,已经解决了,谢谢大家,哈哈
页:
[1]