astenniroje 2022-04-07 23:56 采纳率: 50%
浏览 26
已结题

为什么还没输入就直接结束运行(Babelfish)

#我的思路
#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;
}

  • 写回答

2条回答 默认 最新

  • 关注

    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()
    {
       ...................
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img


    6

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月7日

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条