| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 812 人关注过本帖
标题:清屏函数用法求解
只看楼主 加入收藏
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:14 
清屏函数用法求解
下面这段程序,要求是每次按下enter 键后就会在二维数组中随机出现一个笑脸,但是我出现的效果是新的笑脸出现了,但原来那个没有消失,求解!

 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
int main()
{
    char a[10][10];
    int i,j;
    char d = '$';
    srand(time(NULL));
    for(i = 0;i < 10;i++)
    for(j = 0;j < 10;j++)
       a[i][j] = ' ';
    while(d != '#')
    {
            system("cls");//就是这一步!!!
            i = rand()%10;
        j = rand()%10;
        a[i][j] = 1;
        for(i = 0;i < 10;i++ )
         {
             for(j = 0;j < 10;j++)
            printf("%-2c",a[i][j]);
             printf("\n");
              }
              d = getch();
      }
}
搜索更多相关主题的帖子: include system 
2015-09-03 19:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
清的是屏幕,输出的是数组中的数据。

授人以渔,不授人以鱼。
2015-09-03 20:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
清屏如果无效,输出是一直向上滚动的,不会像你现在看到的那样,就已经是生效了。你没清除数组中原先的笑脸罢了,当然越来越多。

授人以渔,不授人以鱼。
2015-09-03 20:50
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
既然rand出来坐标值,可不需要数组也可简单完成这个功能的。

能编个毛线衣吗?
2015-09-03 20:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
他用tc,包含了conio.h头不也懂直接输出到屏幕,非要用printf(),那就得循环,还要清空数组。本来不清数组也可以,记忆上次的位置即可。

授人以渔,不授人以鱼。
2015-09-03 20:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
tc本身有内置清屏函数,也不会用,要system()。

授人以渔,不授人以鱼。
2015-09-03 21:02
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:6 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int main()
{
    int i,j;
    char d='$';
    srand(time(NULL));
    while(d != '#')
    {
        system("cls");//就是这一步!!!
        i = rand()%10;
        j = rand()%10;
        for(;i>0;i--)printf("\n");
        for(;j>0;j--)printf(" ");
        printf("%c",1);  //不用数组显示,如要按你需求用数组,则需要把数组清为空格的那两个for循环放到while循环内。
        d = getch();
    }
}

能编个毛线衣吗?
2015-09-03 21:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 7楼 wmf2014
直接用下标冲刷就可以了

授人以渔,不授人以鱼。
2015-09-03 21:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
花2个变量记住上一次的输出下标,则省去循环数组的开销,用循环反覆调用printf()是很慢的,用putchar()快一点,用putch()更快。使用gotoxy(),根本不用清屏,或者用clrscr()清屏,也比system("cls")快。

授人以渔,不授人以鱼。
2015-09-03 21:20
qq1625127317
Rank: 6Rank: 6
等 级:等待验证会员
威 望:1
帖 子:185
专家分:450
注 册:2015-9-3
收藏
得分:0 
回复 9楼 TonyDeng
恩,我试试哈

从前风闻有你,现在我亲眼看见你
2015-09-04 08:13
快速回复:清屏函数用法求解
数据加载中...
 
   



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

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