| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1216 人关注过本帖
标题:杯具啊,由于实习一段时间,忘记写C语言作业了,今天又准备关服务器了,自己 ...
只看楼主 加入收藏
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
可是现在我正写选修的论文,也是今晚要交。。。所以说杯具,如果不是时间问题我哪想在这苦求啊,自己的事当然尽力自己做啊!!!对不起,见笑了!
2011-06-13 14:42
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
程序代码:
#include <stdio.h>
#include <string.h>

int fib(int n) {
    int start1 = 1, start2 = 1, temp, i = 2;
    while(i++ < n) {
        temp = start1 + start2;
        start1 = start2;
        start2 = temp;
    }
    return n == 0 ? 0 : start2;
}

void problem1() {
    int n, i;
    FILE * fp = fopen("testdata", "w");
    scanf("%d", &n);
    fprintf(fp, "%d", fib(1));
    for(i = 1; i < n; i++)
        fprintf(fp , ", %d", fib(i + 1));
    fclose(fp);
}

void problem2() {
    FILE * fp = fopen("testdata", "r");
    int num;
    fscanf(fp, "%d", &num);
    num % 2 || printf("%d ", num);
    while(fscanf(fp, "%*c%d", &num) != EOF)
        num % 2 || printf("%d ", num);
    fclose(fp);
}

void problem3() {
    FILE * fp = fopen("testdata", "r");
    char words[31], test_words[31];
    int count = 0;
    scanf("%s", words);
    while(fscanf(fp, "%s", test_words) != EOF)
        strcmp(words, test_words) || count++;
    printf("%d\n", count);
    fclose(fp);
}

int main(void) {
//   problem1();
//   problem2();
//   problem3();
    return 0;
}
这种代码应该自己写,反正我写起很蛋疼。


My life is brilliant
2011-06-13 14:54
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 12楼 lz1091914999
谢谢您!
/*4.编写一个C语言程序来读取第3题建立的testdata数据文件,从中显示偶数值显示。
3.将数列:1,1,2,3,5,8,13,21,34,...前n(n>2)项值写入文件名为testdata的文件。 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    int num;
    FILE *fp;
    if(( fp = fopen("testdata", "r"))==NULL)
    {
        printf("File open fail. \n");
        exit(1);
    }
   
    fscanf(fp, "%d", &num);
    num % 2 || printf("%d ", num);
    while(fscanf(fp, "%*c%d", &num) != EOF)
        num % 2 || printf("%d ", num);
    fclose(fp);
    return 0;
}
2 8 34 144 610 2584 10946 46368 196418 832040 3524578 14930352 63245986 267914296 1134903170 5125596
80 -1109825406 368225352 363076002 1820529360 -944741150 -1958435240 -188547518 1582341984 184585312
2 375819880 -945834654 887448560 -1691007710 -1581614984 572466946 708252800 -889489150


             Press any key to continue
出现负的~~~~为什么呢
2011-06-14 12:32
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

你的什么原因呢?用的什么操作系统?文件结尾是怎样的?


[ 本帖最后由 lz1091914999 于 2011-6-14 13:08 编辑 ]

My life is brilliant
2011-06-14 13:06
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 14楼 lz1091914999
写文件没问题啊,只是读取文件偶数值有问题啊。。。。我用的是C与C++程序设计学习与实验系统 2010.4
2011-06-14 13:19
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 15楼 wangnengchao
你要确定你已经运行了problem1()并且,文件中要有文件结尾。看你的运行结果已经越界了。

[ 本帖最后由 lz1091914999 于 2011-6-14 13:24 编辑 ]

My life is brilliant
2011-06-14 13:22
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 16楼 lz1091914999
2 8 34 144 610 2584 10946 46368 196418 832040 3524578 14930352 63245986 267914296 1134903170 5125596
80 -1109825406 368225352 363076002 1820529360 -944741150 -1958435240 -188547518 1582341984 184585312
2 375819880 -945834654 887448560 -1691007710 -1581614984 572466946 708252800 -889489150


我运行problem(1)了,不运行怎么能读取偶数值,出现问题就是上面数据出现负的


2011-06-14 13:27
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 17楼 wangnengchao
我自己再想想是怎么回事。
2011-06-14 13:28
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 17楼 wangnengchao
我明白了,
程序代码:
#include <stdio.h>
#include <string.h>

unsigned int fib(int n) {
    unsigned int start1 = 1, start2 = 1, temp, i = 2;
    while(i++ < n) {
        temp = start1 + start2;
        start1 = start2;
        start2 = temp;
    }
    return n == 0 ? 0 : start2;
}

void problem1() {
    int n, i;
    FILE * fp = fopen("testdata", "w");
    scanf("%u", &n);
    fprintf(fp, "%u", fib(1));
    for(i = 1; i < n; i++)
        fprintf(fp , ", %u", fib(i + 1));
    fclose(fp);
}

void problem2() {
    FILE * fp = fopen("testdata", "r");
    int num;
    fscanf(fp, "%u", &num);
    num % 2 || printf("%u ", num);
    while(fscanf(fp, "%*c%u", &num) != EOF)
        num % 2 || printf("%u ", num);
    fclose(fp);
}

void problem3() {
    FILE * fp = fopen("testdata", "r");
    char words[31], test_words[31];
    int count = 0;
    scanf("%s", words);
    while(fscanf(fp, "%s", test_words) != EOF)
        strcmp(words, test_words) || count++;
    printf("%d\n", count);
    fclose(fp);
}

int main(void) {
   problem1();
   problem2();
//   problem3();
    return 0;
}
试试这个。


My life is brilliant
2011-06-14 13:36
wangnengchao
Rank: 2
等 级:论坛游民
帖 子:90
专家分:55
注 册:2011-5-2
收藏
得分:0 
回复 19楼 lz1091914999
对啊,我也想到是那的问题,但我不知道用%u,为什么用无符号十进制就可以了呢。。。。还有"%*c%u"的作用是什么,"%*c"我第一次看到这样用,我是初学者,望您能多多指导!
2011-06-14 13:50
快速回复:杯具啊,由于实习一段时间,忘记写C语言作业了,今天又准备关服务器了 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031351 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved