當前位置:首頁 » 編程語言 » c語言課實訓心得
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言課實訓心得

發布時間: 2022-10-09 21:29:31

A. c語言入門教學

樓主,你可以去編程入門網,那裡有挺多知識點的,很多語言都有,很適合初學者,你也可以去CSDN,那裡有很多源代碼提供下載,也有論壇,呵呵,你也不要忽視網路貼吧,知道,貼吧是學習很多課本沒有東西的地方,知道,你需要看解決答案,這樣很有收獲,你也可以去中國編程網,不過,我覺得一樓也是有道理的,看看書掌握知識點,網上我覺得主要還是提高的地方哦……呵呵……關於怎麼學,我是這么過來的,每看一節書,做一節課後習題,其實初學主要還是學習語法和演算法(解決問題的方法),多上機自己寫程序,寫不出來看答案的演算法,自己再寫一邊,關鍵這個階段還是積累為主,基本知識學好了,可以學深入編程,不過你需要有熟悉的語法,可以寫一些小程序:學生成績管理系統等等,就過關了,然後可以學習鏈表,圖像編程,等等高級編程……呵呵……努力一定有回報的……加油吧…

B. c語言學習總結300字

1.最初接觸C語言時要弄清楚各種變數的定義方法,特別是常用的類型,int、float、char等等,還要掌握各種類型的輸入、輸出格式。這一步做到後,上機就沒有多大的問題了。
2.在對函數的學習過程中,一定要弄明白函數的作用和具體格式。值得強調的是在寫循環程序時,一定要弄清楚循環的條件。
3.對每一個知識點,都應該立即編出對應的程序,有時可能還會有語法錯誤,碰到更好的方法也可以試一下,很多時候你想想代碼怎麼寫和你真的寫出來了是有很大的差距的。
4.學習時一定有很多疑惑的,要及時弄清楚。
5.找一本好的課本,我並不推薦譚浩強的《C語言程序設計》,因為這本書把知識點講的太細碎太理論。我推薦《c語言程序設計:現代方法》這本書,書中奧妙非凡,值得深讀體驗。
6.不要認為上課認真聽課有用,寫程序不可能從課堂上學會太多的,偉大的程序員或者是很多的黑客,不是老師教出來的,你的有自己的想法自己的思路自己的,學習一門語言才有用,也才會得到別人傳教不了的東西。

C. c語言實訓

/*8、學生成績管理系統
學生屬性:學號,姓名,入學年月,有成績的學期數,四門課的成績等9個成員,
在編程中要求當執行狀態輸入i為輸入學生記錄,輸入D為刪除,輸入s為查詢(以學號為查詢條件,輸入p為將整個學生記錄輸出,使用結構數組或結構指針編程)
*/
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"

int stu_num=0; //全局變數,已輸入成績的學生人數

struct student //結構體數組,用於儲存學生的數據
{
char num[11]; //儲存學號
char name[11]; //儲存名字
char sex[3]; //儲存性別
char date[11]; //儲存入學年月
int term; //儲存學期數
float score1; //儲存成績1
float score2; //儲存成績2
float score3; //儲存成績3
float score4; //儲存成績4
}student[100];

void warning() //警告函數
{
char a;
printf("您所查找的學生暫無數據,按任意鍵返回重新輸入");
a=getch(); //儲存任意鍵
}

void input() //輸入函數
{
char a;
do
{
system("cls");
printf("(i)輸入學生數據\n(e)返回主菜單\n請輸入您要執行的選項:");
a=getch(); //獲取輸入選項
if(a=='i'||a=='I') //輸入學生數據
{
system("cls"); //清屏函數
printf("下面輸入第%d個學生的數據\n學號:",stu_num+1); //以下操作儲存學生數據於結構體中
scanf("%s",&student[stu_num].num);
printf("姓名:");
scanf("%s",&student[stu_num].name);
printf("性別:");
scanf("%s",&student[stu_num].sex);
printf("入學年月:");
scanf("%s",&student[stu_num].date);
printf("學期:");
scanf("%d",&student[stu_num].term);
printf("成績1:");
scanf("%f",&student[stu_num].score1);
printf("成績2:");
scanf("%f",&student[stu_num].score2);
printf("成績3:");
scanf("%f",&student[stu_num].score3);
printf("成績4:");
scanf("%f",&student[stu_num].score4);
stu_num++;
}
if(a=='e'||a=='E') //退出輸入函數
{
break; //強制結束循環以退出輸入函數
}
}while(1);
}

void output() //輸出函數
{
system("cls"); //清屏函數
int i,j;
printf("學號\t 姓名 性別 入學年月 學期 成績1 成績2 成績3 成績4\n");
for(i=0;i<stu_num;i++) //通過for語句逐個輸出學生數據
{
printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);
}
printf("按任意鍵返回主菜單");
j=getch(); //儲存任意鍵
}

void revise() //修改函數
{
int i=0;
char a,num[11],name[11];
st: system("cls"); //清屏函數
printf("(x)按學號查找修改\n(m)按名字查找修改\n(e)返回主菜單\n請輸入您要執行的選項:");
a=getch(); //獲取輸入選項
if(a=='x'||a=='X') //按學號查找
{
printf("請輸入該學生學號:");
scanf("%s",&num); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(num,student[i].num)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='m'||a=='M') //按姓名查找
{
printf("請輸入該學生姓名:");
scanf("%s",&name); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(name,student[i].name)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='e'||a=='E') //退出修改函數
{
return;
}
else //為了防止選錯選項
{
goto st;
}
if(i==stu_num) //未找到學生數據時提示警告並重新查找
{
warning();
goto st;
}
system("cls");
printf("您要更改的學生的信息為:\n"); //輸出欲修改的學生信息
printf("學號\t 姓名 性別 入學年月 學期 成績1 成績2 成績3 成績4\n");
printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);
printf("請更新該學生的數據\n學號:"); //找到後進行數據更新
scanf("%s",&student[i].num);
printf("姓名:");
scanf("%s",&student[i].name);
printf("性別:");
scanf("%s",&student[i].sex);
printf("入學年月:");
scanf("%s",&student[i].date);
printf("學期:");
scanf("%d",&student[i].term);
printf("成績1:");
scanf("%f",&student[i].score1);
printf("成績2:");
scanf("%f",&student[i].score2);
printf("成績3:");
scanf("%f",&student[i].score3);
printf("成績4:");
scanf("%f",&student[i].score4);
printf("該學生數據已修改,按任意鍵返回");
a=getch(); //儲存任意鍵
}

void search() //查詢函數
{
int i=0;
char a,num[11],name[11];
st: system("cls"); //清屏函數
printf("(x)按學號查找\n(m)按名字查找\n(e)返回主菜單\n請輸入您要執行的選項:");
a=getch(); //獲取輸入選項
if(a=='x'||a=='X') //按學號查找
{
printf("請輸入該學生學號:");
scanf("%s",&num); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(num,student[i].num)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='m'||a=='M') //按姓名查找
{
printf("請輸入該學生姓名:");
scanf("%s",&name); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(name,student[i].name)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='e'||a=='E') //退出查詢函數
{
return;
}
else //為了防止選錯選項
{
goto st;
}
if(i==stu_num) //未找到學生數據時提示警告並重新查找
{
warning();
goto st;
}
printf("學號\t 姓名 性別 入學年月 學期 成績1 成績2 成績3 成績4\n");
printf("%-12s%-8s%-8s%-10s%-6d%-8.2f%-8.2f%-8.2f%-5.2f\n",student[i].num,student[i].name,student[i].sex,student[i].date,student[i].term,student[i].score1,student[i].score2,student[i].score3,student[i].score4);
printf("按任意鍵返回主菜單");
a=getch();
}

void del() //刪除函數
{
int i=0,j;
char a,num[11],name[11];
st: system("cls"); //清屏函數
printf("(x)按學號查找刪除\n(m)按名字查找刪除\n(e)返回主菜單\n請輸入您要執行的選項:");
a=getch(); //獲取輸入選項
if(a=='x'||a=='X') //按學號查找
{
printf("請輸入該學生學號:");
scanf("%s",&num); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(num,student[i].num)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='m'||a=='M') //按姓名查找
{
printf("請輸入該學生姓名:");
scanf("%s",&name); //輸入查找數據並用for語句進行逐個對比
for(i=0;i<stu_num;i++)
{
if(strcmp(name,student[i].name)==0)
{
break; //找到後結束循環
}
}
}
else if(a=='e'||a=='E') //退出刪除函數
{
return;
}
else
{
goto st; //為了防止選錯選項
}
if(i==stu_num) //未找到學生數據時提示警告並重新查找
{
warning();
goto st;
}
for(j=i;j<stu_num;j++) //通過for語句進行數據覆蓋實現刪除學生數據
{
student[j]=student[j+1];
}
stu_num-=1;
printf("該學生數據已刪除,按任意鍵返回主菜單");
a=getch();
}

void menu() //目錄函數
{
do
{
char a;
st: system("cls"); //清屏函數
printf("\t\t 歡迎使用學生成績管理系統 1.22版\n\n\n\t\t\t(i)輸入學生數據\n\n\t\t\t(d)刪除學生數據\n\n\t\t\t(o)查看學生數據\n\n\t\t\t(s)查詢學生數據\n\n\t\t\t(r)修改學生數據\n\n\t\t\t(e)退出系統\n\n\n請輸入您要執行的選項:"); //主菜單
a=getch(); //獲取輸入選項
switch(a)
{
case 'i': //進入輸入函數
case 'I':
input();
break;
case 'o': //進入輸出函數
case 'O':
output();
break;
case 'r': //進入修改函數
case 'R':
revise();
break;
case 'd': //進入刪除函數
case 'D':
del();
break;
case 's': //進入查找函數
case 'S':
search();
break;
case 'e': //退出程序
case 'E':
return;
default: //為了防止選錯選項
goto st;
}
}while(1);

}

void main()
{
printf("組員:\n李東海 陳志銳\n凌華富 林繼其\n杜德偉 鍾鵬琿\n\n\n\n\t\t請稍後……"); //鳴謝欄
Sleep(7000);
menu();
}

這個是我們幾個人做的期末作業,你可以拿去參考;如果windows函數不能用,就把他刪除掉還有sleep這個也一起刪除掉。

D. c語言課程的總結

1.先學習C語言的基礎知識。現在正在學C語言的在校學生可以直接進入第2步學習。
2.按照《C語言程序設計入門學習六步曲》進行上機練習。
3.在上機練習時要養成良好的編程風格。點擊查看C語言的編程風格

4.積極參加C、C++興趣小組,養成和老師與同學交流習慣,從而相互收益。有時別人不經意的一句話可能使你茅塞頓開--「一句話點醒夢中人」。

5.及時總結自己的學習經驗,養成寫C語言日記的習慣。軟體有編程日記功能。

6.從網上或教材上找一個自己感興趣的題目(選題時根據自己的能力,可先易後難,培養自己的成就感,如果有了成就感,即使再苦再累還是感覺C語言學習是一件快樂的事,同學們喜歡打游戲,經常通宵達旦地玩游戲也樂而不疲就是這個道理)進行實戰訓練,提高自己的C語言綜合應用能力。

7. 由於C語言靈活、強大,初學者要全面地掌握它是不可能的,因此在學習C語言的過程中,不要在細枝末節上浪費精力(比如++、--用於表達式的計算,實際上是沒有意義的),但一定要熟練掌握C語言的流程式控制制語句、數組、函數、指針等基礎知識的應用,為學習面向對象程序設計打下堅實的基礎。如果這些知識你學不好,要後續學習好C++、可視化的程序設計Visual C++或C++Builder就像空中樓閣,是不現實的。
C語言程序設計入門學習六步曲

筆者在從事教學的過程中,聽到同學抱怨最多的一句話是:老師,上課我也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因有三個:

一、所謂的看懂聽明白,只是很膚淺的語法知識,而我們編寫的程序或軟體是要根據要解決問題的實際需要控製程序的流程,如果你沒有深刻地理解C語言的語句的執行過程(或流程),你怎麼會編寫程序解決這些實際問題呢?

二、用C語言編程解決實際問題,所需要的不僅僅是C語言的編程知識,還需要相關的專業知識。例如,如果你不知道長方形的面積公式,即使C語言學得再好你也編不出求長方形的面積的程序來。

三、C語言程序設計是一門實踐性很強的課程,「紙上談兵」式的光學不練是學不好C語言的。例如,大家都看過精彩自行車雜技表演,假如,你從來沒有騎過自行車,光聽教練講解相關的知識、規則、技巧,不要說上台表演、就是上路你恐怕都不行。

出現問題原因清楚了,那麼如何學習呢?請你看【C語言學習六步曲】

在程序開發的過程中,上機調試程序是一個不可缺少的重要環節。「三分編程七分調試」,說明程序調試的工作量要比編程大得多。這里以如何上機調試C程序來說明C語言的學習方法。

第一步、驗證性練習

在這一步要求按照教材上的程序實例進行原樣輸入,運行一下程序是否正確。在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。
初學者最容易犯的錯誤是:

1、沒有區分開教材上的數字1和字母l,字母o和數字0的區別,造成變數未定義的錯誤。另一個易錯點是將英文狀態下的逗號,分號;括弧()雙引號""輸入出入成中文狀態下的逗號,分號;括弧(),雙引號「」造成非法字元錯誤。

2、C語言初學者易犯語法錯誤:使用未定義的變數、標示符(變數、常量、數組、函數等)不區分大小寫、漏掉「;」、「{」與「}」、「(」與「)」不匹、控制語句(選擇、分支、循環)的格式不正確、調用庫函數卻沒有包含相應的頭文件、調用未C聲明的自定義函數、調用函數時實參與形參不匹配、數組的邊界超界等。

3、修改C語言語法錯誤時要注意以下兩點:

(1)、由於C語言語法比較自由、靈活,因此錯誤信息定位不是特別精確。例如,當提示第10行發生錯誤時,如果在第10行沒有發現錯誤,從第10行開始往前查找錯誤並修改之。

(2)、一條語句錯誤可能會產生若干條錯誤信息只要修改了這條錯誤,其他錯誤會隨之消失。特別提示:一般情況下,第一條錯誤信息最能反映錯誤的位置和類型,所以調試程序時務必根據第一條錯誤信息進行修改,修改後,立即運行程序,如果還有很多錯誤,要一個一個地修改,即,每修改一處錯誤要運行一次程序。
第二步、照葫蘆畫瓢
在第一步輸入的C程序的基礎上進行試驗性的修改,運行一下程序看一看程序結果發生了什麼變化,分析結果變化的原因,加深新學知識點的理解。事實上這和第一步時同步進行的,實現「輸入」加深知識的記憶,「修改」加深對知識的理解。記憶和理解是相輔相成的,相互促進。

例如:將最簡單的Hello World!程序
#include "stdio.h"
int main()
{
printf("Hello World!\n");
return 0;
}
中的

printf("Hello World!\n");

中的Hello World!改成你的姓名,運行一下程序,看有什麼變化?

再如求1+2+3...+100的和的程序

#include <stdio.h>

main()

{

int i,sum=0;

for(i=1;i<=100;i++)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
}

第1次將for(i=1;i<=100;i++)中的100改成50,運行一下程序,看有什麼變化?

第2次將for(i=1;i<=100;i++)中的i++改成i=i+2,運行一下程序,看有什麼變化?

找出程序結果變化的原因,就加深了對C語句的理解。

第三步、不看教材看是否能將前兩步的程序進行正確地輸入並運行。

在這一步要求不看教材,即使程序不能運行,看能否將其改正,使其能正確運行。目的是對前兩步的記憶、理解進一步強化。

第四步、增強程序的調試能力

在教材中每章都有C語言初學者易犯的錯誤,按照易出錯的類型,將教材中的正確的程序改成錯誤的程序,運行一下程序,看出現的錯誤信息提示,並記下錯誤信息,再將程序改成正確的,運行一下程序。這樣反復修改,就能夠學習C語言程序發生錯誤的原因和修改錯誤的能力。

注意:每次只改錯一個地方,目的是顯示發生該錯誤的真正原因,避免一次改動多個地方,搞清發生錯誤的真正原因,切記!!!!

注意:上機調試程序時要帶一個記錄本,記下英文錯誤提示信息和解決該錯誤問題的方法,積累程序調試經驗,避免在編程犯同樣的錯誤,切記!!!!。

例如,將Hello World程序中語句

printf("Hello World!\n");

中的;改成中文的分號;

運行一下程序,看有什麼結果?

調試程序是一種實踐性很強的事,光紙上談兵是是沒用的,就像游泳運動員只聽教練講解示範,而不親自下水練習,是永遠學不會游泳的。

即使在優秀的程序員編寫程序也會犯錯誤的,可能事最低級的語法錯誤,但他能快速發現錯誤並改正錯誤,而我們C語言初學者面對錯誤提示,不知道發生了什麼錯誤,如何改正,這就事差別。

第五步、研究典型的C語言程序,提高程序設計能力

C語言初學者遇到最多的困惑是:上課也能聽懂,書上的例題也能看明白,可是到自己動手做編程時,卻不知道如何下手。發生這種現象的原因是:所謂的看懂聽明白,只是很膚淺的語法知識,而沒有深刻地理解C語言的語句的執行過程(或流程)。

計算機是按照人的指令(編寫的程序)去執行的,如果不知道這些C語句在計算機中是如何執行的,你怎麼回靈活運用這些知識去解決實際問題呢?

解決問題的方法是要先理解C語言各種語句的流程(即計算機是如何執行這些語句的過程),然後研讀現成C語言經典程序,看懂別人事如何解決問題的,以提高自己的程序設計能力。
第六步、研究課程設計源成序,提高C語言的綜合應用能力.

E. c語言程序設計題。實驗報告。高分。

車票系統,與你的第2題要求略有不同,你自己修改吧
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<time.h>
#include<conio.h>
#include<string.h>
const int MAX=20;
const int N=50;
const int MAXFILENAME=100;
enum {FALSE,TRUE};
struct time
{
int hour;
int minutes;
};
struct ticket
{
int SerialNumber;
struct time SetOut;
char DeparturePoint[MAX];
char TerminalPoint[MAX];
float LastTime;
int FixNumber;
int FixedNumber;
}car[N];
int RecordNumber;
int FLAG=FALSE;
/**********************************************/
int ShowMessage(void); //載入原始數據
void mainmenu(void); //主菜單
void InsertMessage(void); //錄入班次信息
void SearchMenu(void); //查詢路線子菜單
void SearchByNumber(void); //按班次號查詢
void SearchByAddress(void); //按終點站查詢
void TicketManagement(void); //車票售出與退回
void TicketOrder(void); //售票
void TicketDelete(void); //退票
void exit(void); //退出該系統
/********************************************/
int main(void)
{
RecordNumber=ShowMessage();
if(1)
do{
mainmenu();
}while(FLAG==FALSE);
return 0;
}
void mainmenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 車票管理系統\n\n");
printf(" 製作:hmm182007\n");
printf(" 日期:2007/11/25/19:57\n");
printf("============================================================================\n");
printf(" 1.錄入班次信息\t\n");
printf(" 2.瀏覽班次信息\t\n");
printf(" 3.查詢行車路線\t\n");
printf(" 4.售票與退票系統\t\n");
printf(" 5.退出該系統\t\n");
printf("============================================================================\n");
printf("請選擇你所需要的功能:");
scanf("%c",&functionNumber);
switch(functionNumber)
{
case '1':
{
InsertMessage();
printf("\n按任意鍵回主菜單......\n");
getchar();
getchar();
}
break;
case '2':
{
ShowMessage();
printf("\n按任意鍵回主菜單......\n");
getchar();
getchar();
}
break;
case '3':
{
SearchMenu();
printf("\n按任意鍵回主菜單......\n");
getchar();
getchar();
}
break;
case '4':
{
TicketManagement();
getchar();
getchar();
}
break;
case '5':FLAG=TRUE;exit();break;
default:
{
printf("輸入錯誤,請確保你的輸入為1--5.\n");
printf("按任意鍵回主菜單......\n");
getchar();
getchar();
}
}//switch ends
FLAG=FALSE;
}
void InsertMessage(void)
{
FILE *fp;
char filename[MAXFILENAME];
int i;
printf("請輸入文件名或者文件路徑名:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{
printf("文件%s不可讀,請確認文件%s存在或者文件路徑正確.\n\n",filename,filename);
mainmenu();
}
for(i=RecordNumber;!feof(fp)&&!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",&car[i].SerialNumber,&car[i].SetOut.hour,&car[i].SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",&car[i].DeparturePoint,&car[i].TerminalPoint,&car[i].LastTime,&car[i].FixNumber,&car[i].FixedNumber);
}
int count=i;
printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
for(i=0;i<count;i++)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
fclose(fp);
}
int ShowMessage(void)
{
int i;
FILE *fp;
if((fp=fopen("add.txt","r"))==NULL)
{
printf("讀取數據失敗,請檢查文件add.txt是否存在.\n");
exit(-1);
}
for(i=0;!feof(fp)&&!ferror(fp);i++)
{
fscanf(fp,"%d%d%d",&car[i].SerialNumber,&car[i].SetOut.hour,&car[i].SetOut.minutes);
fscanf(fp,"%s%s%f%d%d",&car[i].DeparturePoint,&car[i].TerminalPoint,&car[i].LastTime,&car[i].FixNumber,&car[i].FixedNumber);
}
int count=i;
printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
for(i=0;i<count;i++)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
return count;
}
void SearchMenu(void)
{
system("color 1f");
system("mode con: cols=140 lines=130");
char functionNumber;
printf(" 查詢子菜單\n");
printf("============================================================================\n");
printf(" 1.按班次號查詢\t\n");
printf(" 2.按終點站查詢\t\n");
printf(" 3.返回主菜單\t\n");
printf("============================================================================\n");
printf("請選擇你所需要的功能:");
scanf("%*c%c",&functionNumber);
switch(functionNumber)
{
case '1':SearchByNumber();break;
case '2':SearchByAddress();break;
case '3':
getchar();
mainmenu();
break;
default:
printf("輸入錯誤,請確保你的輸入為1--3.\n");
printf("按任意鍵回查詢子菜單......\n");
getchar();
getchar();
SearchMenu();
}
}
void SearchByNumber(void)
{
int SearchNumber;
printf("請輸入要查詢的班次號:");
scanf("%d",&SearchNumber);
printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
printf("%d\t%d:%d\t\t",car[SearchNumber-1].SerialNumber,car[SearchNumber-1].SetOut.hour,car[SearchNumber-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[SearchNumber-1].DeparturePoint,car[SearchNumber-1].TerminalPoint,car[SearchNumber-1].LastTime,car[SearchNumber-1].FixNumber,car[SearchNumber-1].FixedNumber);
}
void SearchByAddress(void)
{
int i;
char Address[MAX];
printf("請輸入終點站的名稱:");
scanf("%s",&Address);
printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
for(i=0;i<RecordNumber;i++)
{
//對比終點站記錄,找到並輸出
if((strcmp(Address,car[i].TerminalPoint))==0)
{
printf("%d\t%d:%d\t\t",car[i].SerialNumber,car[i].SetOut.hour,car[i].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i].DeparturePoint,car[i].TerminalPoint,car[i].LastTime,car[i].FixNumber,car[i].FixedNumber);
}
}
}
void TicketManagement(void)
{
char functionNumber;
system("color 1f");
system("mode con: cols=140 lines=130");
printf(" 訂票與退票菜單\n");
printf("============================================================================\n");
printf(" 1.訂票\t\n");
printf(" 2.退票\t\n");
printf(" 3.返回主菜單.\n");
printf("============================================================================\n");
printf("選擇你需要的功能:");
scanf("%*c%c",&functionNumber);

switch(functionNumber)
{
case '1':
{
TicketOrder();
//getchar();
//getchar();
}
break;
case '2':TicketDelete();break;
case '3':
{
getchar();
mainmenu();
}
break;
default:
{
printf("輸入錯誤,請確保你的輸入為1--3.\n");
printf("按任意鍵回主菜單......\n");
getchar();
getchar();
mainmenu();
}
}
}
void TicketOrder(void)
{
int i;
printf("請輸入要訂購的車票的班次:");
scanf("%d",&i);
if(i<0||i>RecordNumber)
{
printf("對不起,今天沒有這趟車,請明天再來,謝謝使用!\n");
printf("按任意鍵回主菜單......\n");
getchar();//getchar();
TicketManagement();
}

time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
if((now->tm_hour==car[i].SetOut.hour&&now->tm_min<car[i].SetOut.minutes)||(now->tm_hour<car[i].SetOut.hour))
{
if(car[i].FixedNumber<car[i].FixNumber)
{
car[i].FixedNumber++;
printf("你的訂票成功,請按時上車,謝謝使用!\n");
}
else printf("對不起,今天的這趟車的票已賣完,請明天再來,謝謝合作!\n");
}
else printf("對不起,今天的這趟車已發出,請明天再來,謝謝合作!\n");

printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
printf("%d\t%d:%d\t\t",car[i-1].SerialNumber,car[i-1].SetOut.hour,car[i-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i-1].DeparturePoint,car[i-1].TerminalPoint,car[i-1].LastTime,car[i-1].FixNumber,car[i-1].FixedNumber);
//printf("按任意鍵回主菜單......\n");
//getchar();getchar();
}
void TicketDelete(void)
{
int i;
printf("請輸入要退購的車票的班次:");
scanf("%d",&i);
if(i<0||i>RecordNumber)
{
printf("對不起,今天沒有這趟車,無法完成退票.謝謝使用!\n");
getchar();
//getchar();
TicketManagement();
getchar();
}
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
if((now->tm_hour==car[i].SetOut.hour&&now->tm_min<car[i].SetOut.minutes)||(now->tm_hour<car[i].SetOut.hour))
{
if(car[i].FixedNumber>=1)
{
car[i].FixedNumber--;
printf("退訂車票成功,謝謝使用!\n");
}
else printf("對不起,今天的這趟車的票尚未賣出,無法完成退票!\n");
}
else printf("對不起,今天的這趟車已發出,無法完成退票!\n");

printf("班次\t發車時間\t起點\t終點\t行車時間(小時)\t額定載量\t已定票人數\n");
printf("%d\t%d:%d\t\t",car[i-1].SerialNumber,car[i-1].SetOut.hour,car[i-1].SetOut.minutes);
printf("%s\t%s\t\t%.1f\t %d\t\t%d\n",car[i-1].DeparturePoint,car[i-1].TerminalPoint,car[i-1].LastTime,car[i-1].FixNumber,car[i-1].FixedNumber);
getchar();//getchar();
}
void exit(void)
{
printf("\n\n*********************謝謝使用本系統,歡迎下次繼續使用***********************\n");
exit(0);
}

F. c語言學習心得

我也在學C,《C程序設計》,清華大學出版社,譚浩強主編的,這本書挺好的,講解的很細,挺適合你自學的,還有一本配套的題解和上機指導.

G. 幫忙寫一份C語言課程實訓報告

程序:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<dos.h>
#define swap(x,y,t) ((t)=(x),(x)=(y),(y)=(t))
#define N 30
#define C 15
#define ok 1
#define error 0
typedef int status;
typedef struct stud
{
long num;
char name[C];
int high_math;
int english;
int physics;
int program;
int database;
int total;
int ave;
}student;
student chengji[N];
int number,ave[N];
status assert(int x)
{
if(x>=0&&x<=100)
return ok;
else
return error;
}
status create_chengjilist()
{
int num,i;
print("\n正在創建學生成績表,請稍等.........\n");
sleep(6);
print("請輸入學生的數目(<30):");
scanformat("%d",&num);
while(num>N)
{
print("\n你輸入的人數太多!");
print("\n請重新輸入:");
scanformat("%d",&num);
}
for(i=0;i<num;i++)
{
print("\n輸入第%d個學生的成績信息:\n",i+1);
print("學號:");
scanformat("%ld",&chengji[i].num);
print("\n姓名:");
scanformat("%s",chengji[i].name);
print("\n高等數學:");
scanformat("%d",&chengji[i].high_math);
while(!assert(chengji[i].high_math))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji[i].high_math);
}
print("\n英語:");
scanformat("%d",&chengji[i].english);
while(!assert(chengji[i].english))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji[i].english);
}
print("\n物理:");
scanformat("%d",&chengji[i].physics);
while(!assert(chengji[i].physics))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji[i].physics);
}
print("\n程序設計:");
scanformat("%d",&chengji[i].program);
while(!assert(chengji[i].program))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji[i].program);
}
print("\n資料庫:");
scanformat("%d",&chengji[i].database);
while(!assert(chengji[i].database))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji[i].database);
}
chengji[i].total=chengji[i].high_math+chengji[i].english+chengji[i].physics+chengji[i].program+chengji[i].database;
chengji[i].ave=chengji[i].total/5;
}
print("\n學生成績表創建成功!!!\n");
return num;
}
void show(int data)
{
int i;
print("\n學生成績表的所有信息:\n");
for(i=0;i<data;i++)
{
if(!(chengji[i].name[0]==''))
{
print("\n第%d個學生信息:",i+1);
print("\n學號:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等數學:");
print("%d",chengji[i].high_math);
print("\n英語:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序設計:");
print("%d",chengji[i].program);
print("\n資料庫:");
print("%d",chengji[i].database);
print("\n總分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
}
}
}
status search_num(int v,long d)
{
int i;
for(i=0;i<v;i++)
{
if(chengji[i].num==d)
break;
}
if(i==v)
{
print("\n成績表中不存在該生.");
return;
}
else
{
print("\n查找學生的信息是:\n");
print("\n學號:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等數學:");
print("%d",chengji[i].high_math);
print("\n英語:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序設計:");
print("%d",chengji[i].program);
print("\n資料庫:");
print("%d",chengji[i].database);
print("\n總分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
return i;
}
}
void search_name(int s)
{
int i;
char string[C];
print("\n請輸入要查找學生的姓名:");
scanformat("%s",string);
for(i=0;i<s;i++)
{
if(!strcmp(string,chengji[i].name))
break;
}
if(i==s)
{
print("\n成績表中不存在該生.");
return;
}
else
{
print("\n該生的成績記錄:\n");
print("\n學號:");
print("%ld",chengji[i].num);
print("\n姓名:");
print("%s",chengji[i].name);
print("\n高等數學:");
print("%d",chengji[i].high_math);
print("\n英語:");
print("%d",chengji[i].english);
print("\n物理:");
print("%d",chengji[i].physics);
print("\n程序設計:");
print("%d",chengji[i].program);
print("\n資料庫:");
print("%d",chengji[i].database);
print("\n總分:");
print("%d",chengji[i].total);
print("\n平均分:");
print("%d",chengji[i].ave);
}
}
void searchlist(int t)
{
int i;
long num;
char ch;
while(1)
{
print("\n1.學號.\n2.姓名");
print("\n你想通過什麼查詢.請選擇:");
scanformat("%d",&i);
switch(i)
{
case 1:
print("\n請輸入要查找學生的學號:");
scanformat("%ld",&num);
search_num(t,num);
break;
case 2:
search_name(t);
break;
default:
print("\n非法輸入.");
break;
}
print("\n想繼續查詢嗎?Y or N?:");
scanformat("%ch",&ch);
if(ch=='N'||ch=='n')
break;
}
}
void show_menu()
{
print("==================================");
print("\n1.顯示成績表中所有的學生成績信息.");
print("\n2.查詢學生的成績信息.");
print("\n3.加入學生的成績信息.");
print("\n4.刪除學生的成績信息.");
print("\n5.顯示各科目的平均分.");
print("\n6.顯示學生成績排名情況.");
print("\n7.退出學生成績管理系統.");
print("\n================================");
print("\n請選擇你想要的操作:");
}
status insertlist(int m)
{
char ch;
print("\n請輸入加入學生的成績信息:\n");
while(1)
{
print("\n輸入第%d個學生的成績信息:\n",m+1);
print("學號:");
scanformat("%ld",&chengji ­.num);
print("\n姓名:");
scanformat("%s",chengji ­.name);
print("\n高等數學:");
scanformat("%d",&chengji ­.high_math);
while(!assert(chengji ­.high_math))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji ­.high_math);
}
print("\n英語:");
scanformat("%d",&chengji ­.english);
while(!assert(chengji ­.english))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji ­.english);
}
print("\n物理:");
scanformat("%d",&chengji ­.physics);
while(!assert(chengji ­.physics))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji ­.physics);
}
print("\n程序設計:");
scanformat("%d",&chengji ­.program);
while(!assert(chengji ­.program))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji ­.program);
}
print("\n資料庫:");
scanformat("%d",&chengji ­.database);
while(!assert(chengji ­.database))
{
print("\n輸入非法格式.");
print("\n請重新輸入.");
scanformat("%d",&chengji ­.database);
}
chengji ­.total=chengji ­.high_math+chengji ­.english+chengji ­.physics+chengji ­.program+chengji ­.database;
chengji ­.ave=chengji ­.total/5;
print("\n成功的加入一個學生的成績信息.");
m=m+1;
print("\n想繼續嗎?Y or n?:");
scanf("%c",&ch);
if(ch=='N'||ch=='n')
return m;
}
}
void deletelist(int n)
{
char ch,string[C];
int i;
long xuehao;
string[0]='\0';
print("\n請輸入你想刪去的學生的學號:");
scanf("%ld",&xuehao);
print("\n你要刪去的學生的信息:\n");
i=search_num(n,xuehao);
print("\n你真的要刪去該生的成績信息嗎?Y or N ?:");
scanformat("%c",&ch);
if(ch=='Y'||ch=='y')
{
strcpy(chengji[i].name,string);
print("\n你已經成功的刪去了該生的成績信息!!\n");
return;
}
else
return;
}
void show_average()
{
int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,i;
print("\n正在計算各科目的平均分,請稍等.........");
sleep(5);
for(i=0;i<number;i++)
if(!(chengji[i].name[0]==' '))
{
sum1+=chengji[i].high_math;
sum2+=chengji[i].english;
sum3+=chengji[i].physics;
sum4+=chengji[i].program;
sum5+=chengji[i].database;
}
print("\n高等數學:%d",sum1/number);
print("\n英語:%d",sum2/number);
print("\n物理:%d",sum3/number);
print("\n程序設計:%d",sum4/number);
print("\n資料庫:%d",sum5/number);
}
status search_ave(int average)
{
int i;
for(i=0;i<number;i++)
{
if(chengji[i].name[0]==' ')
continue;
if(ave[i]==average)
{
ave[i]=0;
return i;
}
}
return -1;
}void search_paiming()
{
int numb[N],i,j,temp,k,m=0;/*??????*/
for(i=0;i<number;i++)
numb[i]=chengji[i].ave;
for(i=number;i>=0;i--)
{
for(j=i-1;j>=0;j--)
if(numb[j]<numb[i])
{
swap(numb[j],numb[i],temp);
i=j;
}
}
print("\n學生成績排名:\n");
print("名次 學號 姓名 平均分");
for(i=0;i<number;i++)
{
k=search_ave(numb[i]);
if(k>=0&&chengji[k].name[0]!=' ')
{
print("\n第%d名:",m+1);
print(" %ld",chengji[k].num);
print(" %s",chengji[k].name);
print(" %d",chengji[k].ave);
m++;
}
}
print("\n");
}
main()
{
int choice,i;
number=create_chengjilist();
while(1)
{
print("\n");
show_menu();
scanformat("%d",&choice);
switch(choice)
{
case 1:
show(number);
break;
case 2:
searchlist(number);
break;
case 3:
number=insertlist(number);
break;
case 4:
deletelist(number);
break;
case 5:
show_average();
break;
case 6:
for(i=0;i<number;i++)
ave[i]=chengji[i].ave;
search_paiming();
break;
case 7:
saveconsole("student.txt");
return;
default:
print("\n非法輸入!");
break;
}
}
}

H. c語言程序設計實驗報告

五、 課程設計小結心得體會
1設計思想
1)、設定一個一維數組,可先按員工序號設定每位員工的工資
2)、利用While語句和Prinft語句完成用戶菜單的設計
功能為:第1項 設為員工編號和工資數據
第2項 設為修改員工工資數據
第3項 設為查詢員工工資數據
第4項 設為結束系統
3)、當用戶選擇1、2項時,需輸入員工編號,所以需要設計編號校正功能,如果出錯可輸出「The error employe number」
4)、當選擇2時,進行工資數據的修改,並將新數據存回該員工的工資數組中
5)、利用for循環中判斷語句,將用戶工資數與數組中的工資數進行比較,如相同則輸出,將計數器加1,如此下去,直到把整個數組遍歷一遍
6)、判斷計數器是否為0, 是0表示找不到相符的工資,如果不為0,則輸出共查出幾比相符的工資
以上當然裡面也涉及了「函數的模塊化」理念,可以避免但需要重復列印頭文件時重復編寫列印信頭的語句。像這樣的程序是多見的,這樣不但降低了程序還發效率,而且耗時浪費資源「共用體」的使用簡化了程序的「復雜」性,正如(4)中,學號與姓名同時表示一個人,但在函數使用了「共用體」,從而程序的簡單可以便於糾錯,查找問題,避免了代碼的重復,這樣就給編譯時帶來了一定的難度與「量」的繁雜。一般不採取這樣的做法,力求「簡單、明了、清晰」。

I. C語言實訓心得

通過這次C語言實訓,提高了我掌握和利用C語言進行程設計的能力, 而且進一步理解和運用結構化程設計的思想和方法。初步掌握了開發一個小型實用系統的基本方法。學會了調試一個較長程序的基本方法。學會了利用流程圖或N-S圖表示演算法。掌握了書寫程設計開發文檔的能力.為以後的實訓打下堅實的基礎。