学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

请教:如何在程序运行是按ESC键退出程序??

请教:如何在程序运行是按ESC键退出程序??

#include<stdio.h>
int main(void)                         /*求P以内的素数*/
{
    unsigned int key;
    unsigned char key1;
    long int i=0,a,p,m,r;
    clrscr();
    printf("\ninput a number p:");
    scanf("%ld",&p);
    for(m=2;m<=p;m++)
    {                                 /*m作为分子也既是被除数*/
        r=1;
        for(a=2;a<m;a++)
        if(m%a==0) r=0;
        if(r)
        {
            printf("%5ld",m);
            i++;
            if(i%12==0) printf("\n");
        }
    }
}
例如上述打印素数的程序,如果P值很大,运行是则会不停的翻屏打印,如何用ESC停止呢?

TOP

代码:
引用:
#include <stdio.h>
#include <conio.h>
#include <bios.h>

int main(void)                         /*求P以内的素数*/
{
    unsigned int key;
    unsigned char key1;
    long int i=0,a,p,m,r;
    clrscr();
    printf("\ninput a number p:");
    scanf("%ld",&p);
    for(m=2;m<=p;m++)
    {                                 /*m作为分子也既是被除数*/
        if(kbhit())     /*检查是否按下了键*/
        {
            key = bioskey(0);
            if(key == 283)break;
        }
        r=1;
        for(a=2;a<m;a++)
        if(m%a==0) r=0;
        if(r)
        {
            printf("%5ld",m);
            i++;
            if(i%12==0) printf("\n");
        }
    }
    getch();
    return 0;
}

TOP

请问283是什么意思?是不是某个键的ASC码。

TOP

我运行了还是停不了。

TOP

BIOS这种头文件MS比较旧了,可能在除了TC以外的编译器上可能通不过,所以一般要暂停运行的话,键盘上有个Pause Break按键,按这个就行了,再按一下就继续...
雁无留踪之意,水无取影之心

TOP

你试试把283改成27试试
雁无留踪之意,水无取影之心

TOP

谢谢指点,我再试试。

TOP

该成27可以了,我查了下27是ESC的ASC码值。谢了![bc04]

TOP

13是回车27是ESC,曾经在文曲星上面21~24是F1,F2,F3,F4,28~31是上下右左……哎,可惜现在都用不着了……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

VC下getch()可以的..我发过此类的帖子
欢迎长期在线的朋友加入此群:21135958

TOP

发新话题