c-C語言 请教bus error 10,USACO Greedy Gift Givers

问题描述

C語言 请教bus error 10,USACO Greedy Gift Givers

代碼如下

/*
LANG: C
TASK: gift1
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *input_file, *output_file;

int total_people, gift, numbers_of_recever, money_giving[9];

int scan_names_counter, scan_recever_counter, recever_in_names, money[9], money_receving[9], splid_the_gift, how_many_waves_gift_been_send;

char names[9][13], recever[9][13], the_giver[13], the_recever[13];

void scan_names(){
        fscanf(input_file, "%d", &total_people);

        scan_names_counter=0;
        while(scan_names_counter<total_people){
                fscanf(input_file, "%s", names[scan_names_counter]);
                scan_names_counter++;
        }
}

void givers_money(){
        scan_names_counter=0;
        fscanf(input_file, "%s", the_giver);
        fscanf(input_file, "%d%d", &gift, &numbers_of_recever);
        while(strcmp(the_giver, names[scan_names_counter])!=0){
                scan_names_counter++;
        }
        money_giving[scan_names_counter]=money_giving[scan_names_counter]-gift;
        if(numbers_of_recever!=0){
                splid_the_gift=gift/numbers_of_recever;
        }else{
                splid_the_gift=0;
        }
}

void receive_the_money(){
        scan_recever_counter=0;
        while(scan_recever_counter<numbers_of_recever){
                fscanf(input_file, "%s", the_recever);
                scan_names_counter=0;
                while(scan_names_counter<total_people){
                        if(strcmp(the_recever, names[scan_names_counter])==0){
                                money_receving[scan_names_counter]=money_receving[scan_names_counter]+splid_the_gift;
                        }
                        scan_names_counter++;
                }
                scan_recever_counter++;
        }
}

void money_counter(){
        scan_names_counter=0;
        while(scan_names_counter<total_people){
                money[scan_names_counter]=money_receving[scan_names_counter]+money_giving[scan_names_counter];
                scan_names_counter++;
        }
}

void print_gift_tab(){
        scan_names_counter=0;
        while(scan_names_counter<total_people){
                fprintf(output_file, "%s %dn", names[scan_names_counter], money[scan_names_counter]);
                scan_names_counter++;
        }
}

int main(){
        input_file = fopen("gift1.in", "r");
        output_file = fopen("gift1.out", "w+");

        scan_names();
        how_many_waves_gift_been_send=0;
        while(how_many_waves_gift_been_send<total_people){
                givers_money();
                receive_the_money();
                how_many_waves_gift_been_send++;
        }
        money_counter();
        print_gift_tab();

        fclose(input_file);
        fclose(output_file);
        return 0;
}

讀下面2個文件
文件1:正常結束並輸出正確的數據到文件

5
dave
laura
owen
vick
arm
dave
200 3
laura
owen
vick
owen
500 1
dave
arm
150 2
vick
owen
laura
0 2
arm
vick
vick
0 0

文件2:不能正常輸出 bus error 10

10
mitnik
Poulsen
Tanner
Stallman
Ritchie
Baran
Spafford
Farmer
Venema
Linus
mitnik
300 3
Poulsen
Tanner
Baran
Poulsen
1000 1
Tanner
Spafford
2000 9
mitnik
Poulsen
Tanner
Stallman
Ritchie
Baran
Farmer
Venema
Linus
Tanner
1234 1
Poulsen
Stallman
536 3
Farmer
Venema
Linus
Ritchie
2000 1
mitnik
Baran
79 2
Tanner
Farmer
Farmer
0 0
Venema
12 9
mitnik
Poulsen
Tanner
Stallman
Ritchie
Baran
Spafford
Farmer
Linus
Linus
1000 1
mitnik

英語一般,所以在命名變量的時候可能有點語法錯誤,請勿見笑
因為是初學,所以還請各位詳細指點!!

解决方案

不是x86环境下的程序?
http://blog.chinaunix.net/uid-20178794-id-3494278.html

时间: 2024-10-26 01:46:26

c-C語言 请教bus error 10,USACO Greedy Gift Givers的相关文章

c-C 在做USACO Greedy Gift Givers的时候遇到bus error 10

问题描述 C 在做USACO Greedy Gift Givers的时候遇到bus error 10 下面是我的代码 (C语言) #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *input_file, *output_file; int total_people, giving_to_counter, accepting, having[9]; char giver[9][13], rec

asp.net中的多語言使用

asp.net private ResourceManager MultiLang = new ResourceManager("Demo.Languages.test", Assembly.GetExecutingAssembly()); //Web站台名.放置多語方的目錄.要使用的語言包(會自動根據進程的語言狀態選擇test.zh-tw.resx,test.zh-cn.resx,test.en-us.resx,......) private void Page_Load(objec

vs2012-怎麼用 visual studio c++ 2012寫c語言

问题描述 怎麼用 visual studio c++ 2012寫c語言 我剛使用vs2012 不知道要在那开它來寫c語言 麻煩大大教學 感恩 解决方案 新建一个控制台的空白项目,在项目中添加文件,注意文件后缀名为.c即可

編程 未來-已決定要選擇C/C++當我的主要語言,該如何使用他們增加編程的技術呢???

问题描述 已決定要選擇C/C++當我的主要語言,該如何使用他們增加編程的技術呢??? 基礎可說是打好了,但是由 進階->深入 這個過程似乎非常模糊,看完一些MFC,windowsAPI和C語言的網路編程之後,感覺編程並沒有太大的進步.....請高手指引

期待的Windows 7 RTM官方語言包DVD ISO下載

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   大家一直在期待的Windows 7 RTM Build 7600.16385的激活和语言包终于有提供下载了,点此下载种子(下载完毕后,请将.rar删去改成种子文件). Windows 7 RTM Build 7600.16385的英文原版镜像于前几天被泄露了出来,而现在看来,已经有很多用户下载好了此版本的镜像了.那么,唯一纠结的就是激活和语言包问题了.其实,激活

sqlite3程序移植后出现BUS error

问题描述 程序如下,程序在Ubuntu上编译后能运行,但是用arm-linux-server编译后移植到ok6410上,运行后报buserror错误不对数据库操作的话,程序又是可以运行的,请教一下大神如何修改?具体点,本人菜鸟.应该是地址没有对齐的读写问题.#include<netinet/in.h>#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<stdlib.h

Linux中Kill掉进程的10种方法

  常规篇: 首先,用ps查看进程,方法如下: 代码如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper smx 1824 1822 0 11:38 pts/0 00:00:02 bash smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin smx 1

linux下bus、devices和platform的基础模型 【转】

转自:http://blog.chinaunix.net/uid-20672257-id-3147337.html 一.kobject的定义:kobject是Linux2.6引入的设备管理机制,在内核中由struct kobject结构表示,这个结构使所有设备在底层都具有统一的接口.kobject提供了基本的对象管理能力,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密联系,每个在内核中注册kobject对象都对应与sysfs文件系统中的一个目录;kobject--->sys

监测-公司监控软件的问题请教

问题描述 公司监控软件的问题请教 公司有10来个人不允许使用QQ 听说可以检测到QQ. 我十分好奇 不知道能检测到哪些内容 ? 比如在记事本里面写文字 能不能看到. 是通过什么途径进行检测?如果把网线罢了 成为离线状态 还能不能检测到?实现原理是什么? 解决方案 一.QQ是一个比较公开的社交软件,它可以通过同群,资源共享.没有秘密可言.不是同群的,可能技术手段截取上传下载数据的方式,获取你的谈话交流信息.二.网管监控你的计算机,一是通过网线的截取流传数据,获取数据.二是通过访问你的计算机获取信息