當前位置:首頁 » 編程語言 » 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>加上這個就可以用了,都可以用