#我的思路
#include<stdio.h>
#include<string.h>
int main(){
char foreign[100001][11],eng[100001][11];
int i=0,n=0;
while(1) {
char t;
if((t=getchar())=='\n') break;
else {
eng[n][0] = t;
int i = 1;
while(1){
t = getchar();
if(t ==' ') {
eng[n][i] = '\0';
break;
} else
eng[n][i++] = t;
}
}
scanf("%s",foreign[n]);
getchar();
n++;
}
int j;
char swap[11];
for(i=1;i<n;i++){
for(j=0;j<n-i;j++){
if(strcmp(foreign[j],foreign[j+1])>0){
strcpy(swap,foreign[j]);
strcpy(foreign[j],foreign[j+1]);
strcpy(foreign[j+1],swap);
strcpy(swap,eng[j]);
strcpy(eng[j],eng[j+1]);
strcpy(eng[j+1],swap);
}
}
}
char find[11];
int flag=0,max=n-1,min=0,mid;
while(scanf("%s",find)!=EOF){
flag=0;
while(min<max){
mid=(min+max)/2;
if(strcmp(foreign[mid],find)==0){
flag=1;
printf("%s\n",eng[mid]);
break;
}else if(strcmp(foreign[mid],find)<0){
max=mid;
}else if(strcmp(foreign[mid],find)>0){
min=mid;
}
}
if(flag==0){
printf("eh\n");
}
}
return 0;
}
为什么还没输入就直接结束运行(Babelfish)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-天际的海浪 2022-04-07 23:58关注
char foreign[100001][11],eng[100001][11];局部变量的数组长度太大了
函数内局部变量的数组长度不能太大
把数组定义放在 main()函数外面改成全局变量的数组即可.
或者用 malloc()动态分配内存空间
局部变量是在程序运行栈上自动分配的,一般运行栈的大小是比较小的,大约即1~2MB,如果你定义一个很大的局部变量,很可能导致栈溢出。
而全局变量是在数据段中在程序加载时自动分配,大小可以定义的很大,只要你的电脑内存足够大。#include <stdio.h> #include <string.h> char foreign[100001][11], eng[100001][11]; // 放在 main()函数外面改成全局变量的数组即可. int main() { ...................
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
6本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 模型在y分布之外的数据上预测能力不好如何解决
- ¥15 processing提取音乐节奏
- ¥15 gg加速器加速游戏时,提示不是x86架构
- ¥15 python按要求编写程序
- ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
- ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
- ¥15 opencv图像处理,需要四个处理结果图
- ¥15 无线移动边缘计算系统中的系统模型
- ¥15 深度学习中的画图问题
- ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条