第一篇:--單片機C語言編程實訓
實習報 告
實習地點:201機房
實習時間:2014.12.1——2014.12.6 實習項目:單片機C語言編程實訓 指導老師:駱
樂 姓
名:
班
級:電信3121
一、實習內容 1.計算字符的ASCII碼
編寫一個程序,在終端輸入一個字符,輸出它的ASCII碼。解題思路:通常我們輸出一個字符一般用printf(“%c”,c);的形式,因為輸出格式規定的是“%c”,因此表示以字符的形式輸出,所以我們看到的是相對應的ASCII碼的字符形式。
用char定義字符a,a的值為任意值。輸出結果a=%d。源代碼:
#include
2.嵌套if-else語句的妙用
學校進行成績分級管理,取消分數制,改為成績分級評定。具體辦
法是:小羽60分為E類;60分至70分(不含70分)為D類;70分至80分(不含)為C類;80分至90分(不含)為B類;90分以上為A類。設計一個程序。對輸入的成績進行等級劃分。
解題思路:先把頭文件和主函數輸入。定義score為整型變量,定義grade為字符型變量。定義score為任意值scanf(“%d”,score)。使用多分支條件語句,判斷趁機的等級。
源代碼:
#include
}
程序截圖:
3.判斷日期
輸入一個日期(年月日),輸出這是某年的第幾天。源代碼:
#include “stdio.h” void main(){ int year,month,day;int cday;scanf(“%d %d %d”,&year,&month,&day);switch(month){ case 1: cday = 0;break;case 2: cday = 31;break;case 3: cday = 31+28;break;case 4:
cday = 31+28+31;break;case 5: cday = 31+28+31+30;break;
case 6: cday = 31+28+31+30+31;break;case 7: cday = 31+28+31+30+31+30;break;case 8: cday = 31+28+31+30+31+30+31;break;case 9: cday = 31+28+31+30+31+30+31+31;break;case 10: cday = 31+28+31+30+31+30+31+31+30;break;case 11: cday = 31+28+31+30+31+30+31+31+30+31;break;
case 12:
cday = 31+28+31+30+31+30+31+31+30+31+30;
break;} cday += day;
if((year % 4 ==0 && year % 100!=0 || year % 400 == 0)&& month > 2){ cday += 1;} printf(“%d,n DCF 14 ”,cday);
getch();}
程序截圖:
4.打印特殊圖案
請設計一個程序,實現在屏幕上輸出一個下面的圖案 解題思路:直接輸入編程,但要注意*間的空格。源代碼:
#include
* n * * * n* * * * *n ,DCF 14 n”);getch();}
程序截圖:
5.求兩個數的最大公約數和最小公倍數
編寫一個程序計算兩個正整數的最大公約數和最小公倍數
源代碼:
#include
int main(int argc,int *argv[]){ int num1,num2,temp;int a,b;a > b;printf(“please input 2 number:”);scanf(“%d,%d”,&num1,&num2);if(num1 < num2){ temp = num1;num1 = num2;num2 = temp;} a = num1;b = num2;while(b){ temp = a % b;a = b;b = temp;}
printf(“the zuidagongyuehsu:%d,the zuixiaogongbeishu:%dn”,a,num1 * num2 / a);printf(“%dn,dcf 14 n”);system(“pause”);return 0;getch();}
程序截圖:
6.猴子吃桃問題
有一只猴子第一天摘下若干個桃子,當即吃掉了一半,又多吃了一個;第二天又將剩下的桃子吃了一半,有多吃了一個;按照這樣的吃法每天都吃前一天剩下的桃子的一半又一個。到了第10天,就只剩一個桃子。問題:這只猴子第一天摘了多少個桃子。源代碼:
#include
void main(){ int day,x1,x2;day=9;x2=1;while(day>0){ x1=(x2+1)*2;x2=x1;day--;} printf(“total=%dn dcf 14”,x1);getch();}
程序截圖:
7.誰在說謊
3個嫌疑犯在法官面前各執一詞,甲說:已在說謊;已說:甲在說謊;丙說:甲已兩人都在說謊。法官為了難,甲乙丙三人到底誰在說謊,睡說的是真話呢?
源代碼:
#include
int main(int argc, char *argv[]){
int a,b,c;
for(a=0;a<2;a++)
for(b=0;b<2;b++)
for(c=0;c<2;c++)
if((a&&!b ||!a&&b)&&(b&&!c || b&&c)&&(c &&a+b == 0 ||!c&&a+b!= 0))
printf(“j told a %sn”,a?“truth”:“lie”);
printf(“y told a %sn”,b?“truth”:“lie”);
printf(“b told a %sn”,c?“truth”:“lie”);
printf(“%dn dcf 14n”);
getch();}
程序截圖:
第二篇:C語言編程實訓報告
設計題目及要求設計題目及要求設計題目及要求設計題目及要求
1.綜合應用實例——學生成績管理 編寫一個菜單驅動的學生成績管理程序。實現如下管理功能:
(1)能輸入并顯示 n 個學生的 m 門考試科目的成績、總分和平均分。
(2)按總分進行排序。
(3)按學號進行排序。
(4)任意輸入一個學號,能顯示該學生的姓名、各門功課的成績
(5)將輸入的學生成績數據保存到文件中。
(6)從文件中讀出學生成績數據。
具體要求如下:)先用靜態的數據結構(結構體數組)來存儲和管理 n 個學生的學號、姓名、成績等信息,進行編程。)排序函數是一個具有多種排序方式的、通用的、排序程序,即不僅可以實現成績的升序排序,還可以實現成績的降序排序。)程序能夠進行異常處理,檢查用戶輸入數據的有效性,在用戶輸入數據有錯誤(如類型錯誤)或無效時,不會中斷程序的執行,程序具有一定的健壯性。)輸出菜單形式如下:
1.輸入學生記錄
2.瀏覽學生記錄
3.修改學生記錄
4.排序 0.退出 請選擇(0-4):
5)排序菜單形式如下: 排序方式:1.按總分升序排序 2.按總分降序排序3.按學號排序 0.返回主菜單 請選擇:
二二二二、、、、算法分析及實現步驟算法分析及實現步驟算法分析及實現步驟算法分析及實現步驟
總體算法分析的思路就是用調用函數來實現每個小程序的作用,首先是確定頭文件,定義學生成績結構體類型,用結構體函數實現。然后在函數執行過程中調用主菜單函數,緊接著被調用函數返回一個值給主函數,由返回來的值確定主函數應該執行下面的哪個步驟,再用一個while語句控制下面的幾個步驟的循環,里面再嵌套switch語句來控制對每個小菜單程序的執行。例如:當調用函數返回“1”時,經過switch語句的判斷之后就會執行相應的程序,最后,又會返回到主菜單程序中。其它的都一樣。當調用函數返回的值是“4”時,此時因為排序里面還有一個排序的子菜單,所以此時這里我又用了一個switch語句來實現對排序程序的控制,也就是說在switch語句里面再嵌套switch語句。對排序程序進行的控制。等到跳出排序程序的時候,其它的都和之前的選擇那樣。其中,瀏覽每個學生信息的函數先計算出每個學生的平均成績然后用for語句來實現每個學生信息的循環輸入。修改學生信息的函數里面也用到了for語句,先找到相同的學號,然后在修改后循環執行。后來的排序程序都選用冒泡法來執行。當然一切程序都是從主函數開始執行。
三三三三、、、、源程序代碼源程序代碼源程序代碼源程序代碼
#include
struct student//定義學生成績結構體類型定義學生成績結構體類型定義學生成績結構體類型定義學生成績結構體類型
{
intno;charname[8];
floateng,phy,math,sum,ave;};
int menu(student s[],int n)//主菜單函數主菜單函數主菜單函數主菜單函數
{
int k;
cout<<“歡迎使用學生成績管理軟件歡迎使用學生成績管理軟件歡迎使用學生成績管理軟件歡迎使用學生成績管理軟件”< cout<<“"< cout<<”學生成績管理系統菜單學生成績管理系統菜單學生成績管理系統菜單學生成績管理系統菜單“< cout<<”1.輸入學生記錄輸入學生記錄輸入學生記錄輸入學生記錄“< cout<<”2.瀏覽學生記錄瀏覽學生記錄瀏覽學生記錄瀏覽學生記錄“< cout<<”3.修改學生記錄修改學生記錄修改學生記錄修改學生記錄“< cout<<”4.排序排序排序排序“< cout<<”0.退出退出退出退出“< cout<<”請選擇請選擇請選擇請選擇(0-4):“; cin>>k; returnk;} void Input(student s[],int n)//輸輸輸輸入入入入函數函數函數函數 { int i; cout<<”輸入學號輸入學號輸入學號輸入學號:“< for(i=0;i { cout<<”第第第第“<>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math;s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}} void Ave(student s[],int n)//瀏覽每個學生瀏覽每個學生瀏覽每個學生瀏覽每個學生信息的信息的信息的信息的函數函數函數函數 { int i;for(i=0;i { s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math; } cout<<”學號學號學號學號“<<'t'<<”姓名姓名姓名姓名“<<'t'<<”英語英語英語英語“<<'t'<<”物理物理物理物理“<<'t'<<”數學數學數學數學“<<'t'<<”總成績總成績總成績總成績“<<'t'<<”平均成績平均成績平均成績平均成績“<<'n'; for(i=0;i cout< } int Sort(student s[],int n)//排序的子菜單排序的子菜單排序的子菜單排序的子菜單函數函數函數函數 { int y; cout<<”排序方式排序方式排序方式排序方式:“< cout<<”1.按總分升序排序按總分升序排序按總分升序排序按總分升序排序“< cout<<”0.返回主菜單返回主菜單返回主菜單返回主菜單“< cout<<”請選擇請選擇請選擇請選擇:“; cin>>y; returny; } void change(student s[],int n)//修改學生信息的函數修改學生信息的函數修改學生信息的函數修改學生信息的函數 { int i,j; cout<<”請輸入要修改的學生的學號請輸入要修改的學生的學號請輸入要修改的學生的學號請輸入要修改的學生的學號:“; cin>>j; for(i=0;i { cout< cout<<”學生的信息學生的信息學生的信息學生的信息:“< cout<<”請輸入修改的信息請輸入修改的信息請輸入修改的信息請輸入修改的信息“< }} voidzpxs(student s[],int n)// 按總分升序按總分升序按總分升序按總分升序排序排序排序排序的函數的函數的函數的函數 { int i,j;studenttemp;for(i=0;i { s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;} for(i=0;i { for(j=0;j { temp=s[j];s[j]=s[j+1];s[j+1]=temp; }} cout<<”學號學號學號學號“<<'t'<<”姓名姓名姓名姓名“<<'t'<<”英語英語英語英語“<<'t'<<”物理物理物理物理“<<'t'<<”數學數學數學數學“<<'t'<<”總成績總成績總成績總成績“<<'t'<<”平均成績平均成績平均成績平均成績“<<'n'; for(i=0;i cout< } voidzpxj(student s[],int n)//按總分降序排序按總分降序排序按總分降序排序按總分降序排序的函數的函數的函數的函數 { int i,j;studenttemp;for(i=0;i {s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;} for(i=0;i { for(j=0;j for(i=0;i cout< voidxhpxs(student s[],int n)//按學號升序排序按學號升序排序按學號升序排序按學號升序排序的函數的函數的函數的函數 {int i,j;studenttemp;for(i=0;i for(i=0;i {for(j=0;j for(i=0;i cout< void main()//主函數主函數主函數主函數 { int i,g;studentstu[3];while(i){i=menu(stu,3);switch(i){case 1:Input(stu,3);cout<<”“< cout<<”“< cout<<”“< cout<<”“< 單片機外圍電路設計及C語言編程視頻教程介紹 這是一部學單片機革命性的視頻教程,教程全部十二講,每講3小時左右,講座從最基本的預備知識開始講起,非常詳細的講解KEIL編譯器的使用,包括軟件仿真,測定時間,單步運行,全速運行,設置斷點,調試,硬件仿真調試,變量觀察等,整個過程全部用單片機的C語言講解,從C語言的第一個主函數MAIN講起,一步步一條條講解每一個語法,每條指令的意思,即使對單片機一巧不能,對C語言一無所知,通過本課程十節課的內容也可以讓你輕松掌握51單片機的C語言編程設計,全新的講課風格跳過復雜的單片機內部結構知識,首先從單片機的應用講起一步步深入到內部結構,讓學生徹底掌握其實際應用方法,把51單片機的所有應用每個部分都講解的非常仔細,在講解單片機應用的同時將單片機的常用外圍電路設計及電阻,電容選值等都講的清清楚楚,教師在教室前面用電腦一條一條寫程序,旁邊用TX-1C單片機實驗板一個實驗一個的演示,給學員解釋每條指令的意思及原理,通過十天的時間讓學生完全掌握單片機的C語言編程及單片機外圍電路設計的思想。全程的屏幕,聲音,用屏幕錄像,實驗板現象用攝像頭拍攝,這部教程算是國內首個如此創新的以教師親自實踐為主,學員現場寫程序,直接下載到實驗板看現象,講單片機的視頻教程,只要你認真看,認真聽,保證十天讓你學會單片機應用和C語言編程。 教師推薦書籍如下: 1.如果要學C語言基本知識請看 譚浩強寫的《C程序設計》 教師推薦的單片機書籍為以下兩本: 2.新編MCS-51單片機應用設計 哈爾濱工業大學出版社 張毅剛 上書主要以匯編語言為主,對單片機內部結構介紹較詳細,初學者可選擇本書,在聽講本課程的同時,不但學會了C語言,而且通過查看本書還可了解匯編語言。3.8051系列單片機C程序設計完全手冊 人民郵電出版社 求是科技 #include(stdio.h) main() { int question[4]={-1,-1,-1,-1},i=0,j=0,k=0,A=0,B=0,answer[4]={0}; char again='y'; while(again=='y'){ srand((int)time(0)); while(i4){ k=(int)rand()%10; for(j=0;ji;j++)if(k==question[j]){ k=-1;break;} if(k==-1)continue;question[i]=k;i++;}/*while i*/ for(i=8;i0;i--)/*還有8次機會*/ { A=0;B=0;printf(“n你還剩下%d次機會。”,i); printf(“n請輸入四個0-9之間的數字,中間用空格隔開n”);for(j=0;j4;j++)scanf(“%d”,&answer[j]); for(j=0;j4;j++) for(k=0;k4;k++) { if(answer[j]==question[k]){ if(j==k)A++;else B++;} }/*for*/ if(A==4){ again='0'; printf(“n你贏了,還繼續猜嗎?(y/n)”); while(again!='y'&&again!='n') scanf(“...%c”,&again);break;}/*if*/ printf(“n%dA%dB”,A,B);if(i==1){ again='0'; printf(“n你輸了,正確答案是”); for(j=0;j4;j++) printf(“%dt”,question[j]); printf(“n還繼續嗎?(y/n)”); while(again!='y'&&again!='n')scanf(“%c”,&again); printf(“%c”,again);break;}/*if*/ }/*for changce*/ }/*while again*/ printf(“感謝您玩這個游戲。”);} 《C語言程序設計》綜合實訓 一、實訓目的: 1、完成C語言程序設計課程的教學之后,通過1周的課程設計可以進一步鞏固所學知識,加深理解。 2、指導和促使學生通過各種途徑對C語言相關技術內容進行拓展和深入,增強自學能力、軟件開發能力等綜合能力的培訓。 二、綜合實訓題目:學生成績管理系統 完成下列功能: 1、初始化:把50個學生的學號、姓名、性別、年齡、四科成績以及平均成績和總成績放在一個結構體數組中,學生的學號、姓名、四科成績由鍵盤輸入,然后計算出平均成績和總成績放在結構體對應的域中。 2、插入:輸入一個學生的記錄,按學號的先后順序插入該學生的全部內容。 3、排序:對所有學生按要求排序(1.學號 2.總成績),并輸出。 4、查找:輸入一個學生的學號或姓名,找到該學生并輸出該學生的全部內容。要求能查詢多次。 5、刪除:輸入一個學生的學號或姓名,找到該學生并刪除該學生的全部內容。 6、輸出: 輸出全部學生的記錄。 7、main調用所有函數,實現全部函數功能。 三、設計要求: 1、掌握《C語言程序設計》有關的專業基礎知識和程序設計的基本方法。 2、學會利用程序的三種基本結構:順序結構、選擇結構、循環結構解決不同的問題。 3、學會根據實際需求定義變量及類型。 4、掌握過程和函數的定義及調用方法。 5、學會程序調試的基本方法。 四、時間分配: 序課程設計內容 號 1 2 3 4 界面設計 模塊設計 程序綜合調試 設計報告 總計 時)2 12 6 計學時 非上機時間完成不 時間(學 備注 五、實訓報告要求 1、封面 2、目錄 3、實訓報告內容: 第一章 需求分析 第二章 系統設計 結構圖 數據類型 第三章 程序實現 代碼 第四章 心得與不足 設計題目 C語言程序設計實訓 專業班級 網絡101 學生姓名 學號 06 指導教師 張青 起止日期 2012.5.28—2010.6.1 河南化工職業學院 #include main() { int i=9; while(i) { printf(“n1.插入學生信息n”); printf(“2.修改學生信息n”); printf(“3.查詢學生信息n”); printf(“0.退出n”); printf(“請選擇功能:”); scanf(“%dn”,&i); switch(i) {case 1:printf(“n1.插入學生信息n”);break; case 2:printf(“n2.修改學生信息n”);break; case 3:printf(“n3.查詢學生信息n”);break; default:printf(“n輸入有誤,重新輸入n”); } } }第三篇:單片機外圍電路設計及C語言編程視頻
第四篇:C語言編程
第五篇:c語言綜合實訓