| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:求助!!简单不简单!
只看楼主 加入收藏
chenwj940
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-2-10
结帖率:0
收藏
 问题点数:0 回复次数:4 
求助!!简单不简单!

请教各位大侠,我这有几道老师给的编程的题目,眼看就快交了,没有什么思路,请高手指点一下,能给个代码最好。不行说说思路也好。提前谢谢大家了。

1、 现有两个文本文件file1.txt和file2.txt。file1中第一列为姓名,第二列为英语成绩;file2中第一列为姓名,第二列为数学成绩。通过程序关联file2中与file1对应的姓名生成file3.txt文件。file3.txt文件第一列为姓名,第二列为数学成绩,第三列为平均成绩。
file1.txt file2.txt file3.txt
2、 已知2000年1月1日为星期六,输入任一年的年份后,打印该年的年历。
3、 假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,实际的长整数m表示为: m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1] 其中a[0]保存该长整数的位数。完成(任选一题): (1) 长整数乘普通整数。 (2) 长整数除普通整数。
4、 对于题8描述的10进制长整数,要求: (1) 转换成16进制数输出。 (2) 转换成8进制数输出。
搜索更多相关主题的帖子: 姓名 文本文件 英语成绩 
2010-05-04 23:24
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
收藏
得分:0 
我挑了第二个试着写了一下,但最后的数对不太整齐,搞了很久也搞不好。
重要是从 2000年1月1日为星期六 这个条件求出输入年份的1月1号是星期几,要注意考虑是否是闰年。
程序代码:
#include<stdio.h>
#define N 6 
#define M 2000
void MAX_Day(int);
int Day;    //存放总的天数

int main(void)
{
    int year,week = N,y = M; //week是用于表示星期几 0表示星期天。
    int i ,num, month, da, row = 0; //row是由于判断换行的
    printf("请输入年份:");
    scanf("%d",&year);
    if(year >= y)
        {
        while(y < year)
        MAX_Day(y++);
        week = (Day+N)%7; //求出该年1月1号是星期几(大于2000的求法)
        }
    else
        {
        while(year < y)
        MAX_Day(year++);
        week = Day%7;
        week = (6-week)%7;//求出该年1月1号是星期几(小于2000的求法)
        }
    for(month = 1; month <= 12; month++)
    {
        printf("\n\n %d 月份\n",month);
        printf("Monday Tuesday Wednesday Thursday Friday Saturday Sunday \n");
        if(0 == week) week = 7;  //week==0 的话代表1号是星期日,所以把7放入week中
        for(num = 1; num < week ; num++)
        row += printf("         "); //9个空格的位置,printf返回值用于判断什么时候换行
        switch(month)
        {
        case 1: da = 31;break;
        case 3: da = 31;break;
        case 5: da = 31;break;
        case 7: da = 31;break;
        case 8: da = 31;break;
        case 10: da = 31;break;
        case 12: da = 31; break;
        case 2: if((year%4 == 0 && year%100 != 0 )|| year%400 == 0)
                  da = 29;
                 else
                   da = 28;
                 break;
        default: da = 30;
        }
        for(i =1; i <= da; ++i)
        { row += printf("%-d        ",i);//八个空格
          if(row >= 63)        //判断换行
          {row = 0;printf("\n");}
        }
        week = (week+da)%7; //取得下个月1号是星期几
        row = 0;
    }

    return 0;
}
void MAX_Day(int year)
{
    if((year%4 == 0 && year%100 != 0 )|| year%400 == 0)
        Day += 366;
    else
        Day += 365;
    return;
}
写的不怎么好,你可参考一下。不过我不懂怎么把数据完全对齐,我是通过printf函数返回值开判断什么时候换行的,不怎么准确。你自己可以改进一下。

一切只因为喜欢。
2010-05-05 18:40
chenwj940
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-2-10
收藏
得分:0 
恩 好的 谢谢你。
2010-05-11 23:48
chenwj940
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-2-10
收藏
得分:0 
回复 2楼 hzz063
其实 那个星期可以简写 这样的话 就能比较容易对齐吧。我在想想。总之很谢谢你。而且我感觉你的算法所占的空间挺小的,觉得挺好的,我同学写的 都要100多行才能搞定,书上看的169行。赞一个。
2010-05-11 23:53
chenwj940
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-2-10
收藏
得分:0 
回复 2楼 hzz063
我再仔细看了一下 其实就是 小于10的数 跟大于10的数 输出会差一格 如果在小于10的数前加一个空白字符,应该就能齐了吧。
2010-05-12 00:00
快速回复:求助!!简单不简单!
数据加载中...
 
   



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

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