| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 34590 人关注过本帖, 106 人收藏
标题:发布个《懒人学C语言》--速成版 此贴有效
只看楼主 加入收藏
吴小君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:198
注 册:2012-1-2
收藏
得分:0 
蛮好,我顶一下

小弟学习C语言刚入门,请大侠们多多指教,不吝赐解!
2012-02-09 18:11
踏屦躐箧
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-11
收藏
得分:0 
xihuan
2012-02-11 10:37
绿石头518
Rank: 2
等 级:论坛游民
帖 子:28
专家分:65
注 册:2012-1-5
收藏
得分:0 
楼主辛苦了,受教了。
2012-02-13 08:20
蓝天下的乌鸦
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-10-27
收藏
得分:0 
以下是引用闲出屁在2012-2-4 21:43:26的发言:

// 能读写文件了,就能做很多事儿了,
// 还记得在讲while那儿写的小游戏吧?里面的排行榜还没有实现,那现在就来实现它
#include  
#include     // srand rand system
#include     // time
#include  
 
// 读取排行榜
void ReadList(int num[], int nLen)
{
    FILE* fp = fopen("record.txt", "rt");
    if (fp == NULL)
    {
        printf("文件打开错误!\n");
        return;
    }
    char szBuf[100] = "";
    int nCount = 0;
    while (fgets(szBuf, 100, fp) != NULL)
    {
        num[nCount] = atoi(szBuf);    // atoi将字符串转换为整形数字
        nCount ++;
        if (nCount >= nLen)
            break;
    }
    fclose(fp);
}
// 保存排行榜
void SaveList(int num[], int nLen)
{
    FILE* fp = fopen("record.txt", "wt");
    if (fp == NULL)
    {
        printf("文件打开错误!\n");
        return;
    }
   
    for (int i=0; i<NLEN; I++)
    {
        fprintf(fp, "%d\n", num);
    }
    fclose(fp);
}
// 对整形数组从小到大排序
void SortInt(int num[], int nLen)
{
    for (int i=0; i<NLEN; I++)
    {
        if (num == 0)
            return;
        for (int j=i; j<NLEN; J++)
        {
            if (num[j] == 0)
                return;
            if (num > num[j])
            {
                int t = num;
                num = num[j];
                num[j] = t;
            }
        }
    }
}
// 在数组的指定位置开始,把这个位置上和后面的所有数组向后移动一个位置
void MoveIntArr(int num[], int nLen, int nStart)
{
    for (int i=nLen-2; i>=nStart; i--)
    {
        num1] = num;
    }
}
// 输出排行榜
void ShowList(int num[], int nLen)
{
    printf("排行榜:\n");
    for (int i=0; i<NLEN; I++)
    {
        printf(" %2d, %d 次\n", i+1, num);
    }
}
// 将一个成绩插入排行榜中
void InsertList(int num[], int nLen, int nInsert)
{
    SortInt(num, nLen);
    for (int i=0; i<NLEN; I++)
    {
        if (num > nInsert || num == 0)
        {
            MoveIntArr(num, nLen, i);
            num = nInsert;
            break;
        }
    }
}
// 主菜单
void MainMenu()
{
    printf("\t我的游戏\n");
    printf("1.开始游戏\n");
    printf("2.排行榜\n");
    printf("3.游戏设置\n");
    printf("4.退出\n");
}
 
// 游戏过程
void Game()
{
    int nCount = 0;    // 统计猜测次数
 
    printf("按q退出游戏\n");
    for (int i=0; i<3; i++)    // 猜三次
    {
        printf("开始%d/3论猜测:\n", i+1);
        int r = rand()%10+'0';        // 产生一个0-9的随机字符
        while (1)
        {            
            char input = getch();
            if (input == 'q')   
            {// 输入q 退出游戏
                return;
            }
            else if (input > '9' || input < '0')
            {// 输入错误
                printf("输入错误,重新输入!\n");
            }
            else
            {// 输入0-9 输入正确。
                nCount++;
                printf("您输入的是:%c,", input);
                if (input > r)
                    printf("大于正确结果!\n");
                else if (input < r)
                    printf("小于正确结果!\n");
                else
                {
                    printf("恭喜你猜对了!\n");
                    break;        // 跳出while循环
                }
            }
        }
    }
    printf("您猜了%d次!\n", nCount);
 
    // 保存至排行榜
    int num[10] = {0};
    ReadList(num, 10);
    InsertList(num, 10, nCount);
    SaveList(num, 10);
}
 
// 开始游戏
void Start()
{
    printf("系统产生一个0-9的数,请您对其猜测!\n");
    printf("按任意键开始游戏!\n");
    getch();
    Game();   
    printf("游戏结束\n");
    getch();
}
 
// 继续游戏
void Goon()
{
    int num[10] = {0};
    ReadList(num, 10);
    ShowList(num, 10);
    getch();
}
 
// 游戏设置
void Set()
{
    printf("游戏设置\n");
    printf("\t游戏声音\n");
    printf("\t游戏画面\n");
    printf("\t游戏难度\n");
    getch();
    printf("保存设置\n");
}
 
// 退出
bool Quit()
{
    printf("您确定要退出程序么?\n输入y/Y确定退出程序,其他键取消退出操作!:\n");
    char input = getch();
    if (input == 'y' || input == 'Y')
    {
        printf("您退出了游戏!\n");
        getch();
        return true;
    }
    return false;
}
 
// 初始化
void Init()
{
    srand(time(0));
}
 
// 开始
void Enter()
{
    while (1)
    {
        system("cls");
        MainMenu();
 
        char input = getch();    // 在VC/VS的cpp文件里,可以把变量声明放到程序过程中
        system("cls");
        switch (input)
        {
        case '1':
            {
                Start();
                break;
            }
        case '2':
            {
                Goon();
                break;
            }
        case '3':
            {
                Set();
                break;
            }
        case '4':
            {
                if (Quit())
                    return;
                else
                    break;
            }
        default:
            {
                printf("\a");
                break;
            }
        }
    }
}
void main()
{
    Init();
    Enter();
}[local]1[/local]    // ???
最后一句多了个[local]1[/local]  
2012-02-13 11:52
闲出屁
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:420
专家分:612
注 册:2012-1-24
收藏
得分:0 
以下是引用蓝天下的乌鸦在2012-2-13 11:52:15的发言:

最后一句多了个[local]1[/local]  
网页代码问题 改过来了

乔布斯是神 宫崎骏也是神~~ 才知道 原来士兵突击的主题曲是久石让的 久石让的音乐 真传神
2012-02-13 12:37
yanghualei
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-2-13
收藏
得分:0 
这个安装包好难找
2012-02-13 21:37
hushaojian20
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-19
收藏
得分:0 
顶个,先顶再研究。。。
2012-02-19 13:08
失眠的熊猫
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-2-14
收藏
得分:0 
顶个,虽然我还不懂
2012-02-19 20:24
oceanyu
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2012-2-19
收藏
得分:0 
看着挺好的 就是看不懂啊谢谢楼主 我可以加你吗?
2012-02-19 21:52
a244848975
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2012-2-20
收藏
得分:0 
大师啊  我以后每天都来学习
2012-02-20 06:13
快速回复:发布个《懒人学C语言》--速成版 此贴有效
数据加载中...
 
   



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

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