當前位置:首頁 » 編程語言 » c語言提綱

c語言提綱

發布時間: 2022-12-21 14:21:25

A. 關於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語句時,如果語句不

B. C語言課程設計~~~ 要求編寫一段程序,題目是《校際運動會管理系統》

我這是源代碼已經調試過了,在VC++上運行成功了。
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;

void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}

void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];

} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}

fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{

printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}

C. 怎麼去學習編程c語言,我沒有一點數學基礎 還有就是看不懂裡面的代碼 需要怎樣去學 謝謝!

看不懂代碼可以找網上的公開課,都有免費的,老師講的也很詳細

D. C語言程序設計:通訊錄程序設計

#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "stdio.h"
#include "dos.h"
FILE *fp;
int i; //i是全局變數 可代替length
struct address
{ char postnum[10];
char a[40]; //家庭地址
};
struct birthday
{ int year;
int month;
int day;
};
struct ffriend
{ int num; //序號
char name[20];
char sex;
char telephone[13];
struct birthday birthday;
struct address address;

}
friends[50];

void Load()
{
int j;
long k;
fp=fopen("friend.txt","a+"); //打開文件friend.txt
if(fp!=NULL)
{
for(i=1;i<50;i++)

{
j=fgetc(fp);
if(j==EOF) //判斷是否到了文件尾
return;
k=i-1;
fseek(fp,k*sizeof(struct ffriend),SEEK_SET);
fread(&friends[i],sizeof(struct ffriend),1,fp); //從文件中讀取一條記錄
}

}
else
{
fp=fopen("friend.txt","w");
i=1;
}

}
void Show(int j)
{
// friends[j].num=i;
printf("\n\n\t編號-Nnumber: %3d",friends[j].num);
printf("\n\t姓名-Name:%-20s",friends[j].name);
printf("\n\t性別-Sex:%c",friends[j].sex);
printf("\n\t聯系電話-Telephone:%-13s",friends[j].telephone);
printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
printf("\n\t郵編-Postnum:%-10s",friends[j].address.postnum);
printf("\n\t通信地址-address:%-40s",friends[j].address.a);
}
void Append(int j)
{
fflush(stdin); //區內清除文件緩沖區,文件以寫方式打開時將緩沖容寫入文件
//stdin是一個標准FILE*(文件型指針)指向通常是用鍵盤的輸入的輸入流
friends[j].num=j;
printf("\n\t\t\t序號-Number:%d",j);
printf("\n\t\t\t姓名-Name:");
scanf("%s",friends[j].name);
fflush(stdin); //為什麼沒有fflush(stdin); 的效果會自動跳過呢?
printf("\t\t\t性別-Sex(m/w):"); //為什麼輸入漢字男女也會自動跳過聯系電話呢
scanf("%c",&friends[j].sex);
printf("\t\t\t聯系電話-telephone:");
scanf("%s",friends[j].telephone);
printf("\t出生日期-birthday");
printf("\n\t\t\t年份-year:");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t郵編-Postnumber:");
scanf("%s",friends[j].address.postnum);
printf("\t\t\t通信地址-Address:");
scanf("%s",friends[j].address.a);
getchar();
}
void Delete()
{
int k;
printf("\n\tDelete 序號-Number:");
scanf("%d",&k);
if(k<=i)
{
for(int j=k;j<i+1;j++) /*插入位置後的元素順序後移*/
{
strcpy(friends[j].name,friends[j+1].name); /*交換元素內容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
strcpy(friends[j].address.a,friends[j+1].address.a);

}
i--;
}
else
{
printf("輸入的序號太大!");
}
}
void Modify(int j)
{
Append(j);
}
void Save()
{
int j;
fp=fopen("friend.txt","w");
for(j=1;j<=i;j++)
{
fwrite(&friends[j],sizeof(struct ffriend),1,fp);
}
fclose(fp);

}

void main()
{
int j;
char grade;
char searchname[10];
Load();
i--;
do
{
printf("\t\t\t\t簡易通訊錄\n\n");
printf("功能選擇(Function choose)\n");
printf("\1A.讀取(Read)\n");
printf("\2B.增添(Append)\n");
printf("\6C.插入(Insert)\n");
printf("\5D.刪除(Delete)\n");
printf("\5E.查詢(Search)\n");
printf("\6F.修改(Modify)\n");
printf("\2G.保存(Save)\n");
printf("\1H.退出(Quit)\n");
printf("請選擇(Choice)\n注:輸入A~H的大寫字母\n");
scanf("%c",&grade);
switch(grade)
//加個大寫和小寫 都可以啊
{
case 'A': j=1; //顯示功能
while(getchar()!=0x1b&&j<=i) //增添按Esc鍵退出
{
Show(j++);
printf("\n請按回車鍵繼續!");
}
if(j-1<1)
{
printf("\n\t空文檔,無任何記錄-Empty Note\n");
printf("\n請按回車鍵繼續!");
getchar();

}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'B': //增加功能
while(i<=50) //增加按ESC鍵退出的功能
{
i++;
Append(i);
printf("\t是否繼續增加?y/n");
//修改 加上else if 其他就跳出或強制列印出出錯
char a=getchar();
if(a=='n'||a=='N')
break;
}
if(i==51)
printf("\n\t文檔已滿,無法增加記錄-note full");
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'C':
int k;
printf("\n\t輸入要插入的位置:");
scanf("%d",&k);
j=i+1;
friends[j].num=j;
for(j;j>k;j--) //插入功能
{
strcpy(friends[j].name,friends[j-1].name); //數據後移
friends[j].sex=friends[j-1].sex;
strcpy(friends[j].telephone,friends[j-1].telephone);
friends[j].birthday.year=friends[j-1].birthday.year;
friends[j].birthday.month=friends[j-1].birthday.month;
friends[j].birthday.day=friends[j-1].birthday.day;
strcpy(friends[j].address.postnum,friends[j-1].address.postnum);
strcpy(friends[j].address.a,friends[j-1].address.a);

}
Append(k);
i++;
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'D': //刪除功能 //增添隨意刪除多條記錄的功能
Delete();
if(i<1)
printf("\n沒有記錄-No records\n");
printf("\n請按回車鍵繼續!");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'E': //查詢功能
printf("\n\t請輸入要查詢記錄的相關姓名:"); //增添查詢按列號的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Show(j);
break;
}
}
if(i<1)
{
printf("\n 沒有您所查詢的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'F': //修改功能 / /增添按序列號查詢
printf("\n\t請輸入要修改記錄的相關姓名:");
gets(searchname);
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比較字元串
{
Modify(j);
// getchar(); //加個輸出確定修改嗎
}
}
if(i<1) //修改功能
{ printf("\n 沒有您所要修改的記錄-No records");
printf("\n 請按回車鍵繼續!");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'G':
Save(); //存檔功能
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;

case 'H': //退出功能
char x;
printf("是否保存?yes/no\n");
scanf("%s",&x);
//getchar();
// getchar();
if(x=='y')
{
Save();
exit(0);
}
else
exit(0);

default:
printf("\n\t輸入有誤,請輸入正確的序列號!");
printf("\n請按回車鍵繼續!");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作結束");
printf("\n\t------------------------------------------------------------\t\t\n");
}
}while(1);
}

E. 2010年9月份計算機二級C語言考試提綱

二級(C語言程序設計)考試大綱

公共基礎知識

基本要求
1. 掌握演算法的基本概念。
2. 掌握基本數據結構及其操作。
3. 掌握基本排序和查找演算法。
4. 掌握逐步求精的結構化程序設計方法。
5. 掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。
6. 掌握數據的基本知識,了解關系資料庫的設計。

考試內容

一、 基本數據結構與演算法

1. 演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。
2. 數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。
3. 線性表的定義;線性表的順序存儲結構及其插入與刪除運算。
4. 棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。
5. 線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。
6. 樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。
7. 順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。

二、 程序設計基礎

1. 程序設計方法與風格。
2. 結構化程序設計。
3. 面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。

三、 軟體工程基礎

1. 軟體工程基本概念,軟體生命周戎概念,軟體工具與軟體開發環境。
2. 結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。
3. 結構化設計方法,總體設計與詳細設計。
4. 軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。
5. 程序的調試,靜態調試與動態調試。

四、 資料庫設計基礎

1. 資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。
2. 數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型。
3. 關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理論。
4. 資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。

考試方式

1、 公共基礎的考試方式為筆試,與C語言(VisualBASIC、Visual FoxPRo、java、access、Visual C++)的筆試部分合為一張試卷。公共基礎部分佔全卷的30分。
2、 公共基礎知識有10道選擇題和5道填空題。

C語言程序設計
基本要求

1.熟悉TURBO C集成環境。
2.熟練掌握結構化程序設計的方法,具有良好的程序設計風格。
3.掌握程序設計中簡單的數據結構和演算法。
4.TURBO C的集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。

考試內容

一、C語言的結構

1.程序的構成,MAIN函數和其他函數。
2.頭文件,數據說明,函數的開始和結束標志。
3.源程序的書寫格式
4.C語言的風格。

二、數據類型及其運算

1.C的數據類型(基本類型,構造類型,指針類型,空類型)及其定義方法。
2.C運算符的種類、運算優先順序和結合性。
3.不同類型數據間的轉換與運算。
4.C表達式類型(賦值表達式、算術表達式、關系表達式、邏輯表達式、條件表達式、逗號表達式)和求值規則。

三、基本語句

1.表達式語句,空語句,復合語句。
2.數據的輸入和輸出,輸入輸出函數的調用。
3.復合語句。
4.GOTO語句和語句標號的使用。

四、選擇結構程序設計

1.用if語句實現選擇結構。
2.用switch語句實現多分支選擇結構。
3.選擇結構的嵌套。

五、循環結構程序設計

1.for 循環結構。
2.while和do while循環結構。
3.continue語句和break語句。
4.循環的嵌套。

六、數組的定義和引用

1.一維數組和多維數組的定義、初始化和引用。
2.字元串與字元數組。

七、函數

1.庫函數的正確調用。
2.函數的定義方法。
3.函數的類型和返回值。
4.形式參數與實在參數,參數值的傳遞。
5.函數的正確調用,嵌套調用,遞歸調用。
6.局部變數和全局變數。
7.變數的存儲類別(自動、靜態、寄存器、外部),變數的作用域和生存期。
8.內部函數與外部函數。

八、編譯預處理

1.宏定義:不帶參數的宏定義;帶參數的宏定義。
2.「文件包含」處理。

九、指針

1.指針與指針變數的概念,指針與地址運算符。
2.變數、數組、字元串、函數、結構體的指針以及指向變數、數組、字元串、函數、結構體的指針變數。通過指針引用以上各類型數據。
3.用指針作函數參數。
4.返回指針值的指針函數。
5.指針數組,指向指針的指針,MAIN函數的命令行參數。

十、結構體(即「結構」)與共用體(即「聯合」)

1.結構體和共用體類型數據的定義方法和引用方法。
2.用指針和結構體構成鏈表,單向鏈表的建立、輸出、刪除與插入。

十一、位運算

1.位運算符的含義及使用。
2.簡單的位運算。

十二、文件操作

只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。
1.文件類型指針(FILE類型指針)。
2.文件的打開與關閉(fopen,fclose)。
3.文件的讀寫(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函數),文件的定位(rewind,fseek函數)。

考試方式

1.筆試:120分鍾,滿分100分,其中含公共基礎知識部分的30分。
2.上機:60分鍾,滿分100分。
-

資料引用:http://www.knowsky.com/18130.html

熱點內容
我的世界哪五個伺服器被炸了 發布:2025-05-15 10:36:16 瀏覽:993
ehcache存儲對象 發布:2025-05-15 10:35:31 瀏覽:526
搭建虛擬電腦的伺服器 發布:2025-05-15 10:29:31 瀏覽:269
湖人雙核配置哪個最好 發布:2025-05-15 10:09:48 瀏覽:979
手機熱點密碼怎麼查看 發布:2025-05-15 09:54:47 瀏覽:108
生意發力雲存儲 發布:2025-05-15 09:54:45 瀏覽:616
編寫一個shell腳本添加用戶 發布:2025-05-15 09:54:43 瀏覽:505
資料庫查看錶命令 發布:2025-05-15 09:52:27 瀏覽:914
p30是不是自帶方舟編譯器 發布:2025-05-15 09:51:48 瀏覽:599
追擊世界房間密碼是多少 發布:2025-05-15 09:51:46 瀏覽:995