当前位置:首页 » 编程语言 » c语言clreol
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言clreol

发布时间: 2022-08-15 01:10:21

Ⅰ 关于c语言中的类型转换,谢谢了啊!!!

main() /*No.1主函数*/
{
printf("Welcome to study C program.\n");
printf("This is Lesson One.\n");
}
程序写好后,按“F9”,然后按"Alt-F-O",就进入DOS提示符下
去执行它。

Welcome to study C program.
This is Lesson One.

怎么样?你自己的程序也变成了*.exe型的可执行文件了。按
“EXIT”可以返回到系统。
上例中“main()”是程序的主函数。C 语言程序由一系列函数组
成,而且每个程序必须有且只有一个主函数,即“main()”。在第一
行末还有/* */所夹的内容,它在程序编译时不参与编译,只说明程
序的作用,即起注释作用。所以在你抄本教程的例子时可不抄这一部
分内容。
每个函数必须由“{ }”括起来,每句程序必须用“;”结束。
第3行第4行中printf是C语言用来在屏幕上输出信息的一个重要
函数,最简单的格式是
printf("显示的内容");
字符串后面的“\n”不会显示在屏幕上,它的意思是“回车换行”
接下来,你把第3行后面的“\n”去掉,再按“F9”后去执行,
你就会发现两行内容都印在了一行。

Welcome to study C program.This is Lesson One.

如果在“\n”后加上“\a”,即每显示一行出现一次响铃。
如下表,是“\”后面字符的特殊含义。
\r
回车不换行(到行首)

\t
横向跳到下一输出位

\b
向左退格

\\
输出字符"\"

好。下面把程序中“printf("This is Lesson One.\n");”
换成“printf("\tThis is Lesson One.\n");”,执行一下程序。

Welcome to study C program.
This is Lesson One.

下面再换成“printf("This is \b\bLesson One.\n");”再执行
一下。

Welcome to study C program.
This iLesson One.

程序中的“s ”并不是没有显示,而是显示后,又被“Le”给盖
上了。
要想在屏幕上输出一个“C:\>”则要写上“printf("C:\\>");”
好了,第一节就要此为止。你赶快复习一个。你知道今天所学的
知识了吗?(只要学会了这些就别再多学了,贪多吃不烂。)
1.printf("显示信息") 最简单的输出格式
2.“{ }” 用来括起函数
“;” 每句程序的结束标志
3.“\t”“\n”“\b”“\a”是什么意思?
4.主程序的标志是什么?
5./* */ 是用来注释程序
不过先别关机,如果你用的是UCDOS或是成然汉字,你可以把显
示的信息用中文代替。如:printf("我一定要把C语言学会!\n");

您的当前位置是:首页>>电脑知识>>文本方式下的显示

--------------------------------------------------------------------------------

文本方式下的显示

C语言中,图形函数大致可分为两类:字符模式函数和图形模式函数。本节我们练习使用字符模式函数。
使用字符模式函数应该在程序中联入conio.h头部文件。
下面是一些函数的作用
1) void clreol(); 从光标处删除到本行末
2) void delline(); 清除本行内容,下面内容上提一行
delline();函数实际上还起到了向上卷屏的作用。
3) void insline(); 在光标所在行插入一空行,原来该行及以
下各行皆向下移一行
4) int wherex(); 返回当前光标的x(行)坐标
5) int wherey(); 返回当前光标的y(列)坐标
6) void highvideo(); 字符输出用高亮度字符
7) void lowvideo(); 字符输出用低亮度字符
8) void normvideo(); 字符输出用普通亮度字符
在以上的各函数中皆不带参数,当然也可以写成括号中有void的形式:
void wherex(void); 还可以写成 wherex();
清屏、清行、向后删行、插行的操作真有些CCED、WPS等编辑软件的风格,就是在你平时的屏幕设计中也用少不了。返回坐标的函数则给你的设计提供每一个环节的光标坐标值。有利于你前后响应。字
符亮度的改变则会让你的字符显示出层次感,怎么样,赶快试试吧:
/* No32.c*/
# include "stdio.h"
# include "conio.h"
main()
{ clrscr();
gotoxy(10,1);
cprintf("甜密密,");
highvideo(); /*高亮度显示*/
cprintf("\r\n 你笑得甜密密,");
lowvideo(); /*低亮度显示*/
cprintf("\r\n 好象花儿开在春风里,");
normvideo(); /*普通亮度显示*/
gotoxy(10,4); cprintf("开在春风里");
cprintf("\r\n 在哪里,在哪里见过你?");
printf("\r\n 你的笑容这样熟悉。");
gotoxy(10,20);printf("任意键删去光标后的内容");
gotoxy(18,3); getch();
gotoxy(18,3);
clreol(); /*删去光标后字符*/
gotoxy(10,20);printf("任意键删去本行的内容 ");
gotoxy(18,3); getch();
delline(); /*删去本行*/
gotoxy(10,20);printf("任意键在本行插一空行 ");
gotoxy(18,3); getch();
insline(); /*插入一空行*/
gotoxy(1,7);
}
应该注意的是,要发挥本节所讲的函数的作用,在显示时不能使printf函数,应使用cprintf函数。它的使用方法和printf的完全一样,只不过后面的cprintf能发挥亮度设置和颜色设置的作用。前者
printf函数只有一种颜色和单一的亮度。
在cprintf函数中,“\n”的作用不再是既回到行首又换行,它只起一个换行的作用,所以要把内容在行首显示必须再加一个“\r”
上面的程序不是一真正对大家有用的程序,只是用来说明一个刚刚学到的几个函数的作用。在conio.h中还有一些字符型函数,它们都是带参数的。
9) void textcolor(颜色); 定义显示字符颜色
10) void textbackground(颜色); 定义背景颜色
下面是颜色数字和颜色对照表
BLACK 0 黑 DARKGRAY 8 深灰
BLUE 1 兰 LIGHTBLUE 9 淡兰
GREEN 2 绿 LIGHTGREEN 10 淡绿
CYAN 3 青 LIGHTCYAN 11 淡青
RED 4 红 LIGHTRED 12 淡红
MAGENTA 5 洋红 LIGHTMAGENTA 13 淡洋红
BROWN 6 棕 YELLOW 14 黄
LIGHTGRAY 7 淡灰 WHILT 15 白
背景颜色值只能是0-7共8个数字或其对应的英文大写单词。而前景(即字符)的颜色可以是0-15共16种颜色或其对应的英文大写单词。当你定义的前景和背景相同时,屏幕上看不到输出的内容。
textcolor(4); 和 textcolor(RED); 效果是相同的。
设置屏幕颜色还可以使用
11) void textattr(前景颜色+(背景颜色));
但这里的背景颜色要有“<<4”。如白底红字,就是:
textattr(RED+(WHITE<<4));
12) int gettext(左上角x,左上角y,右下角x,右下角y,内存指针);
把定义的长方形区域内的内容存在内存中
13) int puttext(左上角x,左上角y,右下角x,右下角y,内存指针);
把内存中存好的内容显示在新定义的矩形块内
这里的内存指针也可用字符形数组来代替。需要注意的是内存大小应该是所存内容的“行数*列数*2”。比如把第3行第5列到第6行第75列的数据存到内存中,可以用下面的片段:
char buffer[4*70*2];
gettext(5,3,75,6,buffer);
然后你就可以用puttext函数来显示它了。
14) void movetext(左上角x,左上角y,右下角x,右下角y,
新左上角x,新左上角y);
把矩形块移到新左上角(x,y)决定的地方
15) void window(左上角x,左上角y,右下角x,右下角y);
定义一个窗口,大小就是上面参数决定的长方形
利用这一函数,你可以在屏幕上任何一个地方开辟一个窗口,并在上面显示需要的内容。这丝毫不影响屏幕其它地方的内容。当你定义了窗口后,你只能操作该窗口,gotoxy(),wherex(),wherey(),
clrscr()等等函数所表示的都是你定义窗口中的情况。实际上这就为我们的操作带来了方便,你想操作哪儿,就定义哪儿,想回到平时状态的屏幕,就定义一个最大的窗口,window(1,1,80,25);就复原了。
No.33号例子是利用puttext和gettext函数以及颜色定义来模仿CCED和WPS的菜单显示。但这个小程序没有可移动的光条,也没有菜单中内容的相应执行程序,只是演示一下屏幕的保存和释放而已。
/* No33.c */
#include "conio.h"
#include "stdio.h"
main()
{ int i=1,j,ch;
char buffer[6*50*2]; /*开辟内存空间的大小*/
clrscr();
textcolor(0); /*定义字符颜色*/
textbackground(7); /*定义背景颜色*/
gotoxy(1,1);
cprintf(" 功能1 功能2 功能3 ");
textbackground(0);
textcolor(14);
gotoxy(1,2);
cprintf("What's your name? 你叫什么名字");
cprintf("\n\rMy name is Wang Dong. 我叫王东.");
cprintf("\n\rHow old are are you? 你多大了 . ");
cprintf("\n\rI'm thirty-four. 我四十四了");
cprintf("\n\r\n\rThis is Lesson One. 这是第一课");
while(1)
{ j=i;
textcolor(0);
textbackground(7);
if(i==1)
{ gettext(1,2,13,5,buffer);
gotoxy(2,2); cprintf("│第一课│");
gotoxy(2,3); cprintf("│第二课│");
gotoxy(2,4); cprintf("│第三课│");
gotoxy(2,5); cprintf("└———┘");
}
if(i==2)
{ gettext(13,2,25,5,buffer);
gotoxy(14,2); cprintf("│菜单一│");
gotoxy(14,3); cprintf("│菜单二│");
gotoxy(14,4); cprintf("│菜单三│");
gotoxy(14,5); cprintf("└———┘");
}
if(i==3)
{ gettext(25,2,37,5,buffer);
gotoxy(26,2); cprintf("│说明A │");
gotoxy(26,3); cprintf("│说明B │");
gotoxy(26,4); cprintf("│说明C │");
gotoxy(26,5); cprintf("└———┘");
}
textcolor(14);
gotoxy(10,20);printf("→向右移动 ←向左移动 Esc 退出");
ch=getch();
if((ch==75)&&(i==1)) /*菜单个数的判断*/
{ i=3; ch=0;}
if((ch==77)&&(i==3)) /*ASCII码 77是右箭头*/
{ i=1; ch=0;}
if((ch==75)&&(i>1)) /*ASCII码 75是左箭头*/
i--;
if((ch==77)&&(i<3))
i++;
if(ch==27)
break;
puttext(j*12-11,2,j*12+1,5,buffer);
}
}

您的当前位置是:首页>>电脑知识>>基本输入输出

--------------------------------------------------------------------------------

基本输入输出

基本输入输出函数
下面要进行的工作是编个程序,你输入什么,它就显示什么。程序如No.2所示。
main() /* No.2 */
{
char ch[12]; /*定义一个字符串*/
int i; /*定义一个整(数)型变量*/
printf("请输入一个字符串:"); /*显示提示信息*/
scanf("%s",ch); /*用输入函数输入字符串*/
printf("请输入一个整数:");
scanf("%d",&i); /*输入一个整数*/
printf("输入的字符串是:%s 输入的数字是%d",ch,i);
}
如果你输入的字符串是“中华人民共和国”,数字是2000,那么编译成EXE文件后执行

请输入一个字符串:中华人民共和国
请输入一个整数:2000
输入的字符串是:中华人民共和国 输入的数字是2000

怎么样?比No.1程序要好一些吧,想显示什么就显示什么。你还
可以显示代数式的结果:如把第8行最末尾的数据“i”换成“i*10”
printf("输入的字符串是:%s 输入的数字是%d",ch,i*10);
运行程序时,输出如下:

请输入一个字符串:中华人民共和国
请输入一个整数:2000
输入的字符串是:中华人民共和国 输入的数字是20000

本程序注释较多,这样就增加了程序的可读性。通过此程序我们应学习哪些知识呢?
第3行和第4行是对数据进行定义,任何一个变量在C 语言中必须先定义才能使用。
第5行和第7行的scanf()是输入函数,用来输入用户信息。其格式是:
scanf("数据格式说明",数据列表);
之所以是“数据列表”,就是说这里的数据,既可以是一个,也可以是多个,既可以是相同格式的数据,也可以是不同格式的数据。
scanf("%s%d",ch,&i);
它说明的含义是让用户输入一个字符串再输入一个整数,中间用空格分开。
在格式说明中“%s”“%d”是什么意思呢?“%s”说明输入的是 字符串,“%d”说明输入的是整数
注意:C语言中,整数叫“整型数据”。其它格式如下表所示 %d
十进制整数

%o
八进制整数

%x
十六进制整数

%f
小数或指数形式数据

%c
输入单个字符

上表格式说明也同样适用于printf()函数。如第8行就是一例。需要注意的是,在输入数字或单个字符时,数据列表必须用取地址符号,即“&”,而在输出时则不用。
下面再看一看No.3号程序
main() /*No.3*/
{ int a=5,b=10,c,d;
c=200;
d=a*(b+c);
printf("a*(b+c)=%d",d);
}
在这个小程序里,我们计算了一个小代数式的值,然后输出了它的值。需要说明的是,第二行中,在定义变量时可以赋初值。也可以象第三行那样,在定义后再赋初值。
在C语言中,除了整数外,还有无符号整数、实数(浮点数)、长整数、双清度实数。
在C语言中,整数并不是可以无限大,它的大小是有一定限度的,超过了这个限制,程序就会出错。大小规定如下表所示:

数据类型
存储位(bit)
数值范围

整型 int
16
-32768—32767

无符号整数unsigned
16
0—65535

实数 float
32
10E38—10E38

长整型 long int
32
-2147483648—2147483647

双精度实数 double
64
10E-308—10E308

我们下面练习一个No.4号程序
main() /* No.4 */
{ int a=1000,b=2500,i1;
long c=1000,b=2500,i2;
i1=a*b;
i2=c*d;
printf("整型数据1000*2500的积是%d\n",i1);
printf("长整型数据1000*2500的积是%ld\n",i2);
}
执行程序,屏幕输出:

整型数据1000*2500的积是9632
长整型数据1000*2500的积是2500000

上例中,因为整型数据超出了32767的限制,所以出错。如果计
算结果超过32767,在设计时就应该定义成长整型数据。
今天学习的内容太多了,下面的内容你会多少?
1.输入函数scanf()和输出函数printf()的格式是怎样的?
2.scanf()在输入字符串时和输入数字时有什么区别?
3.输入输出时“%s %d %o %x %c %f”表示什么意思?
4.你能大致了角数字数据类型和最大值最小值吗?
头关机以前,你能否再看一眼No.2、No.3、No.4三个程序

您的当前位置是:首页>>电脑知识>>定位输出

--------------------------------------------------------------------------------

定位输出

在系统程序中,显示内容是方便的,任何一个位置都可以显示,
那么,我们怎样随意显示输出内容呢?在C语言中,光标定位用:
gotoxy(列坐标,行坐标);
下面的No.5例子就是它的具体应用:
/* No5.c*/
#include "stdio.h" /*连入头部文件stdio.h*/
main()
{
char ch; int i;
gotoxy(10,4); /*把光标定位在(10,4)坐标处*/
printf("输入一个字符,它便以大写的形式输出 ");
ch=getchar(); /*用getchar()函数输入一个字符*/
if ((ch>='a') && (ch<='z'))
ch=ch-32;
gotoxy(10,7);
printf("输入一个整数,便把它大1和小1的数输出 ");
scanf("%d",&i);
gotoxy(15,13); printf("你输入的字符大写为%c",ch);
gotoxy(15,14);
printf("你输入的%d两侧的数分别为%d,%d",i,i-1,i+1);
}
第1行是在编译时把stdio.h连入程序文件。具体作用见No.6解释
在上程序的第4行中,两类数据定义占了一行,这是允许的。C语
言程序写法是很随便的,它可以一行一句,也可以一行写多句,上例
的第13行也是这样书写的。不过一般情况下我们不这样写。为了程序
在检查和阅读时方便,我们一般一行写一句,而且程序中一个层次的
内容和另一个层次的内容使用缩格排版格式。如上程序的main()函数
上例中的if()语句等。以后程序中层次越多,越应该形成这样的好习
惯。
如果你输入的字符是m,数字是11,则屏幕输出如下:

输入一个字符,它便以大写的形式输入 m
输入一个整数,便把它大1和小1的数输出 11

你输入的字符大写为M
你输入的11两侧的数分别为10,12

在No.5程序中出现了一个新的函数,它是字符输入函数,它的作用是只输入一个字符。
除了它,还有两个字符输入函数,如右表

getchar()
字符显示,回车键结束

getche()
字符显示,不必按回车

getch()
字符不显示,不必按回车

上述三个字符输入函数使用时没有参数,即()中没有内容。
在C语言中,字符也有大小,它按ASCII表中的值排列大小。可以
进行字符间及字符与数字间的运算。如上例的“ch=ch-32;”。比较
字符大小时,可用字符直接比较,如上例的第7行那样;也可以用数
值进行比较,上第7行可改为:
if ((ch>=97) && (ch<=122))
上一行是程序中的条件语句,它的简单格式是
if(条件表达式)
{ 内容1;}
else
{ 内容2;}
如果条件表达式成立,执行内容1,不成立则执行内容2。else语
句可有可无。当执行内容只有一行时,可以省略内容两侧的“{ }”
上述程序的执行内容就没有“{ }”
在上例的“if ((ch>='a') &&(ch<='z'))”中“&&”是逻辑运
算符,逻辑运算符如下表所示

&&
逻辑与

||
逻辑或

!
逻辑非

任何时候,学习都是为了应用。下面我们编写一个电子表程序:
/* No6.c */
# include "stdio.h" /*连入头部文件stdio.h*/
# include "dos.h" /*连入头部文件dos.h*/
main()
{ struct time t; /*定义时间变量 t */
struct date d; /*定义日期变量 d */
clrscr(); /*清屏*/
getdate(&d); /*获取当前日期*/
gotoxy(33,4);
printf("%d.%d.%d",d.da_year,d.da_mon,d.da_day);
while(!kbhit()) /*如果没有按键,则执行下面内容*/
{ gotoxy(34,6);
gettime(&t); /*获取当前时间*/
printf("%d:%d:%d",t.ti_hour,t.ti_min,t.ti_sec);
}
}
C语言程序特别灵活,它可以把别的程序或文件中的内容,连入
到你的程序中,在C语言中已经有许多我们用到的内容放在了头部文
件中,本例中就是利用了"dos.h"头部文件中的时间和日期的定义。
这种连入,既可以是C语言内部的头部文件(*.h),也可以是你自已
写的文件。你自己被连入的文件既可以是“*.h”文件,也可以是
“*.c”文件。文件连入写法有两种:
#include "dos.h" 用这种写法 dos.h 文件放在当前目录中
#include <dos.h> 用这种写法 dos.h 文件放在TC\INCLUDE目
录中。
第6行中“clrscr();”是清屏函数,它不带参数,作用:清屏
第11行的“kbhit()”函数是用来检测用户是否按了键,但它不
能测试出你按的什么键。要知道按的是什么,必须和输入函数配合使
用。
第11行有“while(!kbhit())”是个循环语句,它的意思是:只
要没有按键,程序便执行{...}所括的内容。
本节内容提纲如下:
1.光标定位:gotoxy(列从标,行坐标);
2.getchar()、getcha()、getch()三个字符输入函数输入时情况
是不同的,一个是光标是否回显,一个是是否用回车结束
3.if(...) 如果...便执行{...}中的内容
4. &&逻辑与,||逻辑或,!逻辑非
5.#include "..." 把...文件和主程序连在一起编译
6.kbhit()测试按键是否按

您的当前位置是:首页>>电脑知识>>使用文件

--------------------------------------------------------------------------------

使用文件

到此为止,我们仍停留在屏上,一些需要的东西还不能做为资料保存。要想把你看到的保留下来,就得把资料存储在磁盘文件中,本节我们用两个例子来学习使用文件。
No.7程序是模仿DOS命令中的程序。
/* No7.c */
#include "stdio.h" /*连入stdio.h*/
main(int argc,char *argv[]) /*带参数的程序(带命令行参数)*/
{
char ch;
FILE *in,*out; /*定义文件指针*/
if(argc!=3) /*如果命令行数目不等于3*/
{ printf("格式应该是: No7 源文件名 目标文件名\n");
exit(1); } /*退出程序*/
if((in=fopen(argv[1],"r"))==NULL) /*打开源文件*/
{ printf("文件不存在或磁盘没准备好!\n");
exit(1); }
if((out=fopen(argv[2],"w"))==NULL)
{ printf("文件复制失败!\n");
exit(1); }
while((ch=fgetc(in))!=EOF) /*如果读出的数据不是结尾标志*/
fputc(ch,out); /*把读出的数据写到目标文件中*/
fclose(in); /*关闭文件*/
fclose(out);
printf(" 1 个文件复制成功 \n");
}
上述程序的主程序是带参数的,argc表示命令行的元素个数,argv[],用来接收程序所带的参数。这些参数的接收都是在执行程序时自动完成的。如用上例程序把名为“HEBEI”文件,复制到名为“BEIFEN”的文件,命令行应执行:
no7 hebei beifen
执行后,argc值为3,argv[1]成为“hebei”,argv[2]赋值为“beifen”。
上例中“exit(1);”表示退出程序的执行,返回到DOS提示符。
文件打开格式用
文件指针=fopen(文件名,"打开方式");
if((in=fopen(argv[1],"r"))==NULL) 意思是“如果文件打开失败”,则... ...
打开方式中“r”是打开文件后,只能从文件中读取信息。“w”是打开文件后,只能从文件中写信息。下面是打开方式及功能列表

r
打开一个文本文件读
rb
打开一个二进制文件读

w
打开一个文本文件写
wb
打开一个二进制文件写

a
打开一个文本文件添加
ab
打开一个二进制文件添加

r+
打开一个文本文件读写
r+b
打开一个二进制文件读写

w+
生成一个文本文件读写
w+b
生成一个二进制文件读写

a+
打开或生成文本文件读写
a+b
打开或生成二进制文件读写

“fclose(文件指针);”用来关闭已打开的文件。 如上面的
fclose(in); fclose(out); 就是应用。
fgetc(文件指针); 从文件中读取一个字符。
fputc(字符,文件指针); 把字符写到文件中去。
EOF是文件结束标志。
下面我们编个简易的文本文件阅读器,它相当于DOS中的“type 文件名 | more”,也就是分页显示文本文件。
/*No8.c*/
#include "stdio.h"
main(int argc,char *argv[])
{
FILE *fp;
int i=1;
char ch;
if(argc<2) /*如果命令行参数少于两个*/
{ printf("正确使用方法是: no8 文本文件名");
exit(1);} /*退出*/
if((fp=fopen(argv[1],"r"))==NULL) /*如果文件打开失败*/
{ printf("%s 不存在",argv[1]);
exit(1);}
else
{ clrscr(); /*清屏*/
while((ch=fgetc(fp))!=EOF) /*读取文件中的字符*/
{ printf("%c",ch); /*显示读出的字符*/
if(ch=='\n') /*如果读出的字符是回车*/
i++;
if(i>=23) /*如果行数到24行*/
{ printf("Any key to continue......\n");
i=1;
getch(); /*输入任一个字符*/
}
}
}
fclose(fp);
}
本例中没有什么更难理解的。需要提醒大家的是:在程序中你打开一个文件后,别忘了在结束程序之前,一定要把打开的文件关闭。
在上述程序中,使用了条件语句中的else语句。在使用else语句时,如果语句不

Ⅱ c语言的问题

ls回答都对.首先头文件无论是"conio.h"还是"stdlib.h"都没错,关键问题是清屏函数在不同编译环境下是不一样的,包括头文件.1楼2楼比较通用在VC或VS环境下(看楼主你说cmd的,估计就是了)
用法大概是:
#include<stdlib.h>
{
...
system("cls");
...
}

而3楼回答的那个也是正确的,不过那个只能在DOS环境下的TC也就是turbo C下才可以用(至于turbo c++又有点不同,你自己点进去那个网络的链接看看吧)

用法大概是:
#include<conio.h>
{
...
clrscr();
...
}

Ⅲ C语言中怎么改变字体颜色

textcolor(),括号内填上颜色值,再用clreol()即可。

Ⅳ C语言编程 温度转换程序 从300度到0度 for语句 和while语句的

可以进行摄氏、华氏、开尔文转换的C程序,在TC下编译运行。

#include <stdio.h>
#include <conio.h>

int main()
{
int i,j;
char choice;
float celsius,fahrenheit,kelvin;
clrscr();
printf(" *****************************************************\n");
printf(" * 1. Celsius change into Fahrenheit *\n");
printf(" * 2. Fahrenheit change into Celsius *\n");
printf(" * 3. Celsius change into Kelvin *\n");
printf(" * 4. Exit *\n");
printf(" *****************************************************\n\n");
printf(" Please your choice(1-4): ");
while(1)
{
scanf("%c",&choice);
if(choice>='1' && choice<='4')
{
printf("\n");
i=(int)(choice-'0');
switch(i)
{
case 1:
{
printf(" Please input Celsius: ");
scanf("%f",&celsius);
fahrenheit=celsius*9.0/5+32.0;
printf("\n");
printf(" The Fahrenheit is: %5.2f\n\n",fahrenheit);
break;
}
case 2:
{
printf(" Please input Fahrenheit: ");
scanf("%f",&fahrenheit);
celsius=(fahrenheit-32.0)*5.0/9;
printf("\n");
printf(" The Celsius is: %5.2f\n\n",celsius);
break;
}
case 3:
{
printf(" Please input Celsius: ");
scanf("%f",&celsius);
kelvin=celsius+273.15;
printf("\n");
printf(" The Kelvin is: %5.2f\n\n",kelvin);
break;
}
case 4: exit(0);
}
printf(" Please press any key to continue...");
getch();
for(j=9;j<=19;j++)
{
gotoxy(1,j);
clreol();
}
gotoxy(28,8);
clreol();
continue;
}
else
{
gotoxy(28,8);
clreol();
gotoxy(28,8);
continue;
}
}
return 0;
}

Ⅳ 怎样用C语言获取屏幕上指定位置处的字符的值

一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode() 文本模式函数
11. highvideo()高亮度函数
12. lowvideo() 低亮度函数
13. normvideo(void);
14. textcolor() 文本颜色函数
15. textattr() 文本属性函数
16.textbackground() 文本背景函数
三、 屏显状态函数
17. wherex() 光标处x坐标函数
18. wherey() 光标处y坐标函数
19. gettextinfo() 获取文本窗口信息函数
2. window()字符窗口函数
功能: 函数window()用于在指定位置建立一个字符窗口。
用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。
此函数的头文件为conio.h。
返回值:无
例: 调用这个函数的实现例见3.gotoxy()函数的例子中。
. gotoxy()光标定位函数
功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。
用法: 这个函数调用方式为void gotoxy(int x,int y);
说明: 括号里x,y是, 光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标不会移动。
此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conio.h
返回值:无
例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。
#include"conio.h>
void border(int startx,int starty,int endx,int endy)
{
register int i;
gotoxy(1,1);
for(i=0;i<=endx-startx;i++)
putch('-');
gotoxy(1,endy-starty);
for(i=0;i<=endx-startx;i++)
putch('-');
for(i=2;i<=endy-starty;i++){
gotoxy(1,i);
putch('1');
gotoxy(endx-startx+1,i);
putch('1');
}
}

main()
{
void border(int,int,int,int);
clrscr();
window(6,8,38,12);
border(6,8,38,12);
gotoxy(2,2);
printf("window 1");
window(8,16,40,24);
border(8,16,40,24);
gotoxy(3,2);
printf("window 2");
getch();
}
三、 屏显状态函数
这里提供三个在文本模式下屏幕显示状态的函数

17. wherex() 光标处x坐标函数
功能: 函数wherex()返回当前窗口中光标处横向坐标。
用法: 此函数调用方式为int wherex(void);
说明: 这个函数调用无参数,其对应的头文件是conio.h
返回值: 函数调用成功,返回光标处x坐标值。
例: 调用这个函数的实例见18.wherey()函数的例中。

18. wherey() 光标处y坐标函数
功能: 函数wherey()返回当前窗口中光标处纵向坐标。
用法: 该函数调用方式为int wherey(void);
说明: 此函数调用无参数,其相应的头文件是conio.h
返回值: 函数调用成功,返回光标处y坐标值。
例: 调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos ,ypos。
int xpos,ypos;
xpos=wherex();
ypos=wherey();

19. gettextinfo() 获取文本窗口信息函数
功能: 函数gettextinfo()获取当前文本窗口信息,并存放在实参结构中。
用法: 函数调用方式为void gettextinfo(struct text-info *info);
说明: 函数中参数info 为struct text-info结构型指针,struct text-info结构在此函数相应的头文件中定义为:
struct text-info{
unsigned char winleft; // 窗口左上角x坐标
unsigned char wintop; // 窗口左上角y坐标
unsigned char winright; // 窗口右下角x坐标
unsigned char winbottom; // 窗口右下角y坐标
unsigned char attribute; // 文本属性
unsigned char normattr; // 正常属性
unsigned char currmode; // 当前屏显模式
unsigned char screenhight // 文本窗口高度(以行数计)
unsigned char screenwidth; // 文本窗口宽度(以字符个数计)
unsigned char curx; // 光标处x坐标
unsigned char cury; // 光标处y坐标
};
记住,调用函数gettextinfo()时,要传递struct text-info结构型指针或该结构的首地址,不要传递结构变量本身。
这个函数对应的头文件是conio.h
返回值: 返回文本窗口角点坐标、高宽度、文本属性等值,并存放在info所指向的结构变量中。
例: 程序语句说明如何正确调用gettextinfo()函数:
struct text-info win-status;
gettextinfo(&win-status);

Ⅵ c语言:clreol()的作用及用法

clreol()——清除字符到行末函数

Ⅶ c语言的看不明白了

#include <stdio.h>
#include <conio.h>

#define Back 8
#define Enter 13
#define Esc 27

#define home 71
#define end 79
#define upkey 72
#define dnkey 80
#define pgup 73
#define pgdn 81

struct person{
char name[14];
char tel[13];
char eml[22];
char dpmnt[22];
};
int savstate=1;

int barup(int y) /*光条上移*/
{
if(y>=8)
{
int i;struct{unsigned char ch;unsigned char attr;}t;
for(i=4;i<=30;i++)
{ gettext(i,y,i,y,&t);t.attr=0x07;puttext(i,y,i,y,&t);}
y=y-2;
for(i=4;i<=30;i++)
{ gettext(i,y,i,y,&t);t.attr=0x70;puttext(i,y,i,y,&t);}
}
return y;
}

int bardn(int y) /*光条下移*/
{
if(y<=18)
{
int i;struct{unsigned char ch;unsigned char attr;}t;
for(i=4;i<=30;i++)
{ gettext(i,y,i,y,&t);t.attr=0x07;puttext(i,y,i,y,&t);}
y=y+2;
for(i=4;i<=30;i++)
{ gettext(i,y,i,y,&t);t.attr=0x70;puttext(i,y,i,y,&t);}
}
return y;
}

int rtnstr(char ary[],int l,int m) /*对按键逐个测试,排除部分非法输入,按后退键修改,Enter键确认*/
{
int i,x,y; char ch;
for(i=0;i<=m;i++)
{ x=wherex();y=wherey();
if(i<m) { ary[i]=getch();
if(ary[i]==0) {getch(); i=i-1; continue;}
}
clreol();
if(i==m) do{ ch=getch(); if(ch==0)getch(); if(ch==Esc)return 0;
if(ch==Enter){ary[m]='\0'; return 1;} if(ch==Back)break;
gotoxy(x+m-i,y) ;clreol(); cprintf(" # Can't be more than %d letters.",m);
gotoxy(x,y);
}while(1);
if(ary[i]==Esc)return 0;
if(ary[i]==Back&&i==0) {i=i-1;continue;}
if(ary[i]==Enter)
{
if(i>=l){ary[i]='\0';return 1;}
else{ gotoxy(x+m-i,y); clreol(); cprintf(" # Can't be less than %d letters.",l);
gotoxy(x,y); i=i-1; continue;
}
}
if(ary[i]==Back&&i>0||ch==Back) {gotoxy(x-1,y); clreol(); i=i-2; ch=0; continue;}
if(m==3||(l==7&&m==12)){if(ary[i]<48||ary[i]>57){i=i-1;continue;}}
putchar(ary[i]);
}
}

int readrecord(struct person psn[],int n) /*读文件。若不存在则新建并写入初始化后的数组,返回记录个数*/
{ int i,rcd=1; FILE *fp;
if((fp=fopen("C:\\zhyx.c","rb"))==NULL)
{ rcd=0;if((fp=fopen("C:\\zhyx.c","wb"))==NULL)
{ printf(" Cannot open file!");
return n;
}
}
if(rcd==0) for(i=0;i<100;i++)fwrite(&psn[i],sizeof(struct person),1,fp);
else for(i=0;i<100;i++)
{
fread(&psn[i],sizeof(struct person),1,fp);if(psn[i].name[0]=='\0')break;n++;
}
fclose(fp); printf(" There are %d records now.\n Records in C://zhyx.c",n); return n;
}

int add(struct person psn[],int n) /*增加记录。任意位置按Esc键退出,返回记录总数,并于主菜单显示增加的个数*/
{ int i,cnt=1;int t=n;
while(n<100)
{ clrscr();
printf("\n\nAdded %d.\nPlease input the information,Esc back to menu:\n\n\n\n",n-t);
printf("name:");
cnt=rtnstr(psn[n].name,2,13);if(cnt==0)break;
printf("\n\nphonenumber:");
cnt=rtnstr(psn[n].tel,7,12);if(cnt==0)break;
printf("\n\nemail:");
cnt=rtnstr(psn[n].eml,7,21);if(cnt==0)break;
printf("\n\ndepartment:");
cnt=rtnstr(psn[n].dpmnt,2,21);if(cnt==0)break;
printf("\n\nRecord added successfully!");
n++;
}if(n==100){
printf("\n\nThe record number has reached 100,can't add any more!");getch();
}
clrscr();if(cnt==0)psn[n]=psn[n+1];
if(t!=n){savstate=0;if(n-t!=1) printf(" Added %d records.\n",n-t);else printf(" Added 1 record.\n");}
return n;
}

int delete(struct person psn[],int n) /* 删除一记录 。姓名重复则输入序号字符串再转化为整数,由于情况简单直接讨论*/
{
int i,indx,num=0,cnt=1; char ch; char str[14];
printf("\n\n\n\nDelete name:");
cnt=rtnstr(str,2,13);str[13]='\0'; if(cnt==0) {clrscr();return n;}
printf("\n");
for(i=0;i<n;i++)if(strcmp(psn[i].name,str)==0)
{ num++; printf("\n%-2d %-14s %-15s %-23s %-22s",i,psn[i].name,psn[i].tel,psn[i].eml,psn[i].dpmnt);
if(num==1)indx=i;
}
if(num==1){ printf("\n\nFind 1 recod. Delete it(Y/N)?:");
do{ ch=getch();
if(ch=='Y'||ch=='y'){ clrscr();printf(" Deleted a record! name: %s",str);
for(i=indx;i<n;i++)psn[i]=psn[i+1];savstate=0;n--;return n;
}
else if(ch=='N'||ch=='n'){clrscr();return n;}
}while(1);
}
if(num>1){ printf("\n\nFind %d recods.Input the number before a record to delete it:\n\n",num);
cnt=rtnstr(str,1,3);if(cnt==0){clrscr();return n;}
cnt=strlen(str);if(cnt==3) {clrscr();printf(" Index error!");return n;} /*借用cnt(continue)*/
if(cnt==1)cnt=str[0]-48; /*续借,indx还要用到*/
else if(cnt==2)cnt=(str[0]-48)*10+str[1]-48;
if(cnt<n&&strcmp(psn[cnt].name,psn[indx].name)==0)
{ clrscr();printf(" Deleted a record! name: %s",psn[indx].name);
for(i=cnt;i<n;i++)psn[i]=psn[i+1];savstate=0;n--;return n;
}
else {clrscr(); printf(" Index error!"); return n;}
}
clrscr();
printf(" The name %s do not exist!",str);
return n;
}

void order(struct person psn[],int n) /*排序。可按姓名或电话按升序排序,主菜单中显示排序情况*/
{ char ch;
printf("\n\npress F to order by name,S by phonenumber.\n");
do
{ ch=getch();
if(ch==Esc)break;
}while(ch!='f'&&ch!='F'&&ch!='s'&&ch!='S');
if(ch=='f'||ch=='F')
{
int i,j,k; struct person temp;
for(i=0;i<n-1;i++)
{
k=i;for(j=i+1;j<n;j++)if(strcmp(psn[j].name,psn[k].name)<0)k=j;
if(k!=j){temp=psn[i];psn[i]=psn[k];psn[k]=temp;}
}clrscr();
printf("\n Ordered by name.");
savstate=0;return;
}
if(ch=='s'||ch=='S')
{
int i,j,k; struct person temp;
for(i=0;i<n-1;i++)
{
k=i;for(j=i+1;j<n;j++)if(strcmp(psn[j].tel,psn[k].tel)<0)k=j;
if(k!=j){temp=psn[i];psn[i]=psn[k];psn[k]=temp;}
}clrscr();
printf("\n Ordered by phonenumber.");
savstate=0;return;
}
clrscr();
}

void modify(struct person psn[],int n) /*修改记录 。姓名重复输入序号字符串再转化为整数,由于情况简单直接讨论*/
{
int i,indx,num=0,cnt=1; char str[14]; struct person temp;
printf("\nPlease input the friend's name:");
cnt=rtnstr(str,2,13);str[13]='\0'; if(cnt==0) {clrscr();return;}
printf("\n");
for(i=0;i<n;i++)if(strcmp(psn[i].name,str)==0)
{ num++; printf("\n%-2d %-14s %-15s %-23s %-22s",i,psn[i].name,psn[i].tel,psn[i].eml,psn[i].dpmnt);
if(num==1)indx=i;
}
if(num==1)
{
temp=psn[indx];
printf("\n\nPlease input new information,Esc back to menu:\n\n");
printf("name:");
cnt=rtnstr(psn[indx].name,2,13);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\nphonenumber:");
cnt=rtnstr(psn[indx].tel,7,12);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\nemail:");
cnt=rtnstr(psn[indx].eml,7,21);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\ndepartment:");
cnt=rtnstr(psn[indx].dpmnt,2,21);if(cnt==0){psn[indx]=temp;clrscr();return;}
}
if(num>1){ printf("\n\nFind %d recods.Input the number before a record to modify it:\n\n",num);
cnt=rtnstr(str,1,3);if(cnt==0){clrscr();return;}
cnt=strlen(str);if(cnt==3) {clrscr();printf(" Index error!");return;} /*借用cnt*/
temp=psn[indx]; if(cnt==1)indx=str[0]-48;
if(cnt==2)indx=(str[0]-48)*10+str[1]-48;
if(indx<n&&strcmp(temp.name,psn[indx].name)==0)
{
temp=psn[indx];
printf("\n\nPlease input new information,Esc back to menu:\n\n");
printf("name:");
cnt=rtnstr(psn[indx].name,2,13);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\nphonenumber:");
cnt=rtnstr(psn[indx].tel,7,12);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\nemail:");
cnt=rtnstr(psn[indx].eml,7,21);if(cnt==0){psn[indx]=temp;clrscr();return;}
printf("\n\ndepartment:");
cnt=rtnstr(psn[indx].dpmnt,2,21);if(cnt==0){psn[indx]=temp;clrscr();return;}
}
else {clrscr(); printf(" Index error!"); return;}
}
clrscr();
if(num>0){printf(" Modified a record! name:%s->%s",temp.name,psn[indx].name);savstate=0;n--;}
else printf(" The name %s do not exist!",str);
}

void print(struct person psn[],int n) /*显示所有记录。由pgup、pgdn、home、end及上下键控制*/
{
int i,k=0,l=0,j=n/10+(n%10?1:0); char ch;
do
{
printf("\n name:: phonenumber:: email:: department::\n\n");
for(i=k*10+l;i<(k+1)*10+l;i++)
{ if(i==n)break;
printf(" %-14s %-15s %-23s %-22s\n\n",psn[i].name,psn[i].tel,psn[i].eml,psn[i].dpmnt);
}
if(l%10==0) {gotoxy(1,24);cprintf(" Press Esc back to menu. page %d / %d ",k+l/10+1,j);}
else {gotoxy(1,24);cprintf(" Press Esc back to menu. (%d pages)",j);}
do
{ ch=getch();
if(ch==0)
{ ch=getch();
if(ch==pgdn&&((k+1)*10+l<n))k++;
if(ch==pgup&&(k*10+l>=10))k--;else if(ch==pgup)ch=home;
if(ch==home){k=0;l=0;}
if(ch==end){k=j-1;l=0;}
if(ch==upkey&&(k*10+l>0))l--;
if(ch==dnkey&&(k*10+l<n-1))l++;
break;
}
}while(ch!=Esc);
if(ch==Esc) break;clrscr();
}while(1);clrscr();
}

void find(struct person psn[],int n) /*查找记录。直接输入姓名或电话,则显示匹配内容,姓名为纯数字者不显示*/
{
int i,num=0,cnt=1; char str[15];
printf("\n\n\n Please input the name or phonenumber you want to find:\n\n");
printf(" name or phone:");
cnt=rtnstr(str,2,14);str[14]='\0'; if(cnt==0)return;
for(i=0;str[i]!='\0';i++)
if(str[i]<48||str[i]>57)
{
for(i=0;i<n;i++)
if(strcmp(psn[i].name,str)==0)
{ num++;
if(num==1)printf("\n\n name:: phonenumber:: email:: department::\n\n");
printf(" %-14s %-15s %-23s %-22s\n\n",psn[i].name,psn[i].tel,psn[i].eml,psn[i].dpmnt);
}
if(num==0) {clrscr();printf("Can't find any record in accordance with %s!",str);return;}
gotoxy(2,24); cprintf("Press any key to cotinue.");
getch(); clrscr(); return;
}
for(i=0;i<n;i++)
if(strcmp(psn[i].tel,str)==0)
{ num++;
if(num==1)printf("\n\n name:: phonenumber:: email:: department::\n\n");
printf(" %-14s %-15s %-23s %-22s\n\n",psn[i].name,psn[i].tel,psn[i].eml,psn[i].dpmnt);
}
if(num==0) {clrscr();printf("Can't find any record in accordance with %s!",str);return;}
gotoxy(2,24); cprintf("Press any key to cotinue.");
getch(); clrscr(); return;
}

void save(struct person psn[],int n) /*保存记录。若磁盘故障或已满则退出*/
{ FILE *fp; int i;
if(savstate==1)return;
if((fp=fopen("C:\\zhyx.c","wb"))==NULL)
{
printf(" Cannot open file!");return;
}
for(i=0;i<=n;i++) if(fwrite(&psn[i],sizeof(struct person),1,fp)!=1) /*多保存了一项,但没必要*/
{printf(" File error!");fclose(fp);return;}
savstate=1;printf(" Records saved!");
fclose(fp);
}
main() /*主函数。有两重循环,第一重打印菜单,第二重处理按键*/
{
int i,n=0,ex=0,y=8; char ch;
struct person psn[100];
for(i=0;i<100;i++)
{ strcpy(psn[i].name,"\0");
strcpy(psn[i].tel,"\0");
strcpy(psn[i].eml,"\0");
strcpy(psn[i].dpmnt,"\0");
}
n=readrecord(psn,n);
do
{
gotoxy(2,4); cprintf("#################################");
gotoxy(2,5); cprintf("# #");
gotoxy(2,6); cprintf("# A: add new records. #");
gotoxy(2,7); cprintf("# #");
gotoxy(2,8); cprintf("# D: delete certain records. #");
gotoxy(2,9); cprintf("# #");
gotoxy(2,10);cprintf("# O: order them. #");
gotoxy(2,11);cprintf("# #");
gotoxy(2,12);cprintf("# M: modify a record. #");
gotoxy(2,13);cprintf("# #");
gotoxy(2,14);cprintf("# P: print all. #");
gotoxy(2,15);cprintf("# #");
gotoxy(2,16);cprintf("# F: find certaen records. #");
gotoxy(2,17);cprintf("# #");
gotoxy(2,18);cprintf("# S: save. #");
gotoxy(2,19);cprintf("# #");
gotoxy(2,20);cprintf("# Esc: exit. #");
gotoxy(2,21);cprintf("# #");
gotoxy(2,22);cprintf("#################################");
y=8;y=barup(y);
gotoxy(2,24);cprintf("Please choose a menu form the table above.");
do
{ ch=getch();
if(ch==0) /*若按部分非字符键,可能是移动光条,y值跟踪光条改变*/
{
ch=getch();
switch(ch)
{
case upkey:
y=barup(y);ch=0;break;
case dnkey:
y=bardn(y);ch=0;
}
}
if(ch==Enter)
{
switch(y) /*光条对应y值,y值对应字符*/
{
case 6: ch='a';break;
case 8: ch='d';break;
case 10: ch='o';break;
case 12: ch='m';break;
case 14: ch='p';break;
case 16: ch='f';break;
case 18: ch='s';break;
case 20: ch=Esc;break;
}
}
switch(ch) /*对不同字符调用相应函数或其它操作*/
{ case 'a':
case 'A':
{ clrscr(); n=add(psn,n);
ch=Enter; break;
}
case 'd':
case 'D':
{ clrscr(); n=delete(psn,n);
ch=Enter; break;
}
case 'o':
case 'O':
{ clrscr(); order(psn,n);
ch=Enter; break;
}
case 'm':
case 'M':
{ clrscr(); modify(psn,n);
ch=Enter; break;
}
case 'p':
case 'P':
{ clrscr(); print(psn,n);
ch=Enter; break;
}
case 'f':
case 'F':
{ clrscr(); find(psn,n);
ch=Enter; break;
}
case 's':
case 'S':
{ clrscr(); save(psn,n);
ch=Enter; break;
}
case Esc: /*退出时的处理。按Y保存后退出,N直接退出,Esc返回程序*/
{ clrscr();ex=1;
if(savstate==0)
{ gotoxy(5,5); cprintf("Records not saved! save(y/n)? Cancel: Esc");
do{ ch=getch();
if(ch=='n'||ch=='N')savstate=1;
if(ch=='y'||ch=='Y')save(psn,n);
if(ch==Esc){ex=0;break;}
}while(savstate!=1);
}
clrscr(); ch=Enter; break;
}
}
}while(ch!=Enter);
if(ex==1)break;
}while(1);
clrscr();
}再自己改改

Ⅷ C++中什么可以代替C语言里的clreol()

#include <conio.h>加上这个就可以用了,都可以用