自考《計算機軟件基礎》實驗指導_第1頁
自考《計算機軟件基礎》實驗指導_第2頁
自考《計算機軟件基礎》實驗指導_第3頁
自考《計算機軟件基礎》實驗指導_第4頁
自考《計算機軟件基礎》實驗指導_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、計算機軟件基礎實驗指導主編徐顯秋重慶科技學院計算機系實驗一 C程序的運行環(huán)境、運行方法和數(shù)據(jù)類型、運算符的簡單輸入輸出一、實驗目的I.熟悉使用計算機系統(tǒng),c程序運行環(huán)境.熟悉并掌握C程序的編輯、編譯、連接和運行.掌握C語言的數(shù)據(jù)類型以及各種數(shù)據(jù)的正確輸入、輸出.學會編寫和運行簡單的C語言程序.二、實驗內(nèi)容.進入C編譯集成環(huán)境,熟悉集成環(huán)境的界面和菜單的使用方法.輸入并運行教材第2頁的程序. ttinclude void main () int a, b, max;scanf (;if (ab)max=a;elsemax=b;printf ( max二%dn” , max);檢查輸入的程序有無錯

2、誤,對源程序進行編譯,觀察屏幕上顯示的編譯信息,無錯 后再進行下一步連接.運行程序,觀察分析運行結果,該程序的功能是:.輸入以下程序.# include void main () int a, b;float x, y;char cl,c2;scanf (z/%d, %d, &a, &b);scanf (/,%f,&x, &y);scanf (c, %c”, &cl, &c2);printf (a=%d,b=%dn, a, b);printf (z,a=%c, b=%cn,/, a, b);printf (x=%f, y=%en, x, y);printf (z/cl=%c, c2=%cn,

3、cl, c2);printf (,zcl=%d, c2=%dn,/, cl, c2);編譯、連接后,運行時輸入以下數(shù)據(jù).9798運行結果:三、完成實驗報告實驗完成后應整理并寫出實驗報告.報告內(nèi)容應包括:題目、實驗目的、程序流程圖、 程序清單、運行結果、功能分析、心得與體會.(其中“程序流程圖”和“心得與體會”為 選做)實驗五線性表的基本操作一、實驗目的.掌握線性表的基本運算.掌握順序存儲的概念,學會對順序存儲數(shù)據(jù)結構進行操作.加深對順序存儲數(shù)據(jù)結構的理解,逐步培養(yǎng)解決實際問題的編程能力.二、實驗內(nèi)容要求先編寫好教材142頁習題六中各小題的程序,然后上機調(diào)試、運行,得出結果.長度為n的線性表A采

4、用順序存儲結構,請寫一算法,找出該線性表中值最小的數(shù) 據(jù)元素.分析與提示:由于線性表A采用順序存儲結構,表中數(shù)據(jù)節(jié)點是存放在一段連續(xù)的空間中,所以在算法中 按一位數(shù)組處理比擬方便. 參考算法(參照教材類C語言描述):# define M 100/*設順序表最大長度為M*/ int data M; int n; int data M; int n;struct/*設節(jié)點數(shù)據(jù)類型為整型*/*n代表線性表表長*/ A;/*A代表線性表*/int find (A , n) /*Ai替代 A datai, n 替代 A n*/ int i,min;min=A0;for (i=0;i=n-l;i+) if

5、 ( Aimin) min=Ai;)printf ( min二%dn” , min); )參考程序:#include /*設順序表最大長度為M*/*設節(jié)點數(shù)據(jù)類型為整型*/An代表線性表表長*/min=ptr-datai;# define M 100 struct list int dataM;int n;);int find(list *ptr) int i,min;min=ptr-data0;for (i=0;in;i+) if (ptr-datai=0;i一) if (Aiitem) Ai+l=Ai; elseAi+l=item; n+; ) 參考程序: ttinclude # defi

6、ne M 100/*設順序表最大長度為M*/struct list int dataM;/*設節(jié)點數(shù)據(jù)類型為整型*/int n;/*n代表線性表表長*/ ); void insert (list *ptr, int item) ( int i; if (ptr-n=M) printf (表滿,無法插入); elseif (ptr-n=O)/*表空,直接插入*/ptr-data0=item;else for (i=ptr-n-l;i=0;i-) if (ptr-dataiitem) ptr-datai+l=ptr-datai;else break;)ptr-datai+l=item;)ptr-n

7、=ptr-n+l;/*表長加 1*/)return;)void main()(int i,iteml;struct list A=1, 3, 9, 12, 45, 78, 6 ; /*線性表初始化*/scanf (d,;/*輸入要插入的值*/insert (&A, iteml) ;/*調(diào)用 insert ()函數(shù)插入值*/for (i=0; iA. n; i+) /*顯示插入操作后的線性表*/printf(dt,A. datai);3.長度為n的線性表A采用順序存儲結構,并且元素按值的大小非遞減排列,寫一算 法,刪除該線性表中值相同的多余元素(該算法完成后,線性表中數(shù)據(jù)元素嚴格按值遞增排 列.

8、參考算法(參照教材類C語言描述):# define M 100structint dataM;int n;A;void delete (A , n)int i, j, k;for i=0;i=n-l;i+for (j=i+1; j=nT, j+) if (Ai=AjJ)for (k=j;k=n-l;k+)Ak=Ak+l;n一;參考程序:# include # define M 100# define M 100/*設順序表最大長度為M*/struct list int dataM;/*設節(jié)點數(shù)據(jù)類型為整型*/int n;/*n代表線性表表長*/);void deleteitem (list *

9、ptr) int i, j, k;for (i=0;in-l;i+)for (j=i+l;jn-l;j+)(if (ptr-datai=ptr-dataj) for (k=j;kn-l;k+) ptr-datak=ptr-datak+l ; ptr-n=ptr-n-l;/*刪除相同元素(相同元素后的元素依次向前移動)后,需從新的ptr-dataj開始判斷*/j;return;)void main ()(int i;struct list A=1,3, 3, 3,45, 78, 78, 90, 8); /*線性表初始化*/ deleteitem(&A) ;/*調(diào)用 deleteitem()函數(shù)刪

10、除相同元素*/ for (i=0 ;inext!=NULL) p=p-next;n+;return (n);)參考程序:ttinclude ttinclude ttinclude struct nodeint data;struct node *next;);int length (struct node *p)int n=0;/*用n返回線性表長度*/while (p-next!二NULL) p=p-next;n+; return (n); ); void main () (/*鏈表初始化,產(chǎn)生具有5個節(jié)點的鏈表,list為鏈表頭節(jié)點指針*/ int i,len=0;struct node*

11、list, *ptrl, *ptr2;list=(struct node*) malloc(sizeof (struct node) ;/*申請一個表頭節(jié)點list*/list-next=NULL;ptrl=list;/*指針perl指向頭節(jié)點*/for (i=0;idata=(rand()%100+l);ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;/*移動perl始終指向尾節(jié)點,為下一個新增節(jié)點插入作準備*/)/*求鏈表list的長度*/len=length(list);printf (鏈表的長度 length=%dn,len);.非空線性鏈表第

12、一個鏈節(jié)點的指針為list,請寫一算法,刪除線性鏈表的第i個節(jié) 點.參考算法(參照教材類C語言描述):struct node int data;struct node*next;*p, *q, *list;struct node*del (list, i) int j;p=list;for(j=0;jnext;q=p-next;p-next=p-next-next;free (q);)參考程序:include include include struct node(int data;struct node *next;;void deletenode (struct node *p, int

13、i)(/*查找第i個節(jié)點*/int j;struct node *front=p;for(j=0;jnext=NULL)break;else(front=p;p=p-next;)if (j=i)/*查找成功,刪除第i個節(jié)點*/(front-next =p-next;free (p);return;void main()|/*鏈表初始化,產(chǎn)生具有5個節(jié)點的鏈表Jist為鏈表頭節(jié)點指針*/ int i;struct node*ptrl, *ptr2;list=(struct node*) malloc(sizeof(struct node);list-next=NULL;ptrl=list;sra

14、nd( (unsigned)time(NULL);for (i=0;idata=(rand()%100+1);ptr2-next二NULL;ptrl-next=ptr2;ptrl=ptrl-next; /*移動ptrl指向新節(jié)點,為下一個新節(jié)點的插入坐準備*/)ptrl=list;while (ptrl-next!=NULL)(ptrl=ptrl-next;printf (dt, ptrl-data);)printf(n);scanf (%d, &i) ;/*輸入要刪除的節(jié)點*/deletenode (list, i);printf (n);ptrl=list;while(ptrl-next!

15、=NULL)(ptrl=ptrl-next;printf(dt, ptrl-data);).非空線性鏈表第一個鏈節(jié)點的指針為list,請寫一算法,找出鏈表中數(shù)據(jù)域值最小 的那個鏈節(jié)點,并將其鏈接到鏈表的最前面.參考算法(參照教材類C語言描述):struct node int data;struct node *next;*p, *q, *s, *list;struct node *find(list) int i;p= list;min= p-data;while (p!=NULL)p= p-next;if (p-datanext;q-next=q-next-next;s-next=list-

16、next;list-next=s;)參考程序:ttinclude ttinclude ttinclude struct node (int data;struct node *next;;void FindAndExchange (struct node* p) struct node *head=p, *min, *minfront,*front; if (head-next=NULL) return;/*查找最小值節(jié)點*/ minfront二front=p; min=p-next ; p=p-next ;while(p-next !=NULL) (front=p;/*隨p向表尾移動并始終保

17、存p節(jié)點的前一個節(jié)點指針*/p=p-next ;if(min-data p-data )minfront=front;Aminfront為指向最小節(jié)點的前一個節(jié)點指針*/min=p;/*將最小值節(jié)點放到鏈表的最前面*/ minfront-next =min-next ;min-next =head-next ; head-next =min;void main()(/*鏈表初始化,產(chǎn)生具有5個節(jié)點的鏈表,list為鏈表頭節(jié)點指針*/ int i;struct node *list, *ptr2;list=(struct node*) malloc(sizeof(struct node);lis

18、t-next=NULL;ptrl=list;srand( (unsigned)time(NULL);for (i=0;idata=(rand()%100+l);ptr2-next二NULL;ptrl-next=ptr2; ptrl=ptrl-next;)ptrl=list;while (ptrl-next!=NULL) ptrl=ptrl-next;printf (dt, ptrl-data);)printf (n);FindAndExchange(list);ptrl=list;while (ptrl-next!=NULL) ptrl=ptrl-next;printf (%dt, ptrl-

19、data);).設不帶頭節(jié)點的循環(huán)鏈表第一個節(jié)點指針為list,請寫一個逆置該循環(huán)鏈表的算法. 參考算法:struct node int data;struct node *next; *p, *list, *rear,*front;struct node*inversion(list) rear-next=list;front=list;p= front-next;while (p!=list)(rear=p-next;p-next=front; front=p;p=rear;) list-next=front;)參考程序:include include include struct nod

20、e (int data;struct node *next;);/*鏈表倒置函數(shù)*/struct node *inversion (struct node * head) (struct node *front, *p,;front=head; p=front-next;while(p!=head)(rear=p-next;p-next=front;front=p;p=rear;)head-next=front; return front;)void main()/*鏈表初始化,產(chǎn)生具有5個節(jié)點的循環(huán)鏈表Jist為鏈表頭節(jié)點指針*/觀察結果,分析原因,得出結論.總結出數(shù)據(jù)輸入、輸出的規(guī)律和容易

21、出錯的地方.(數(shù)值的默認分隔符可以是回車或空格,如果scanf語句中數(shù)值的輸入格式是逗號 分隔,數(shù)值輸入時就要用逗號隔開.).嘗試編輯一個簡單的C語言程序,并上機調(diào)試、運行,得出結果.用C語言程序編寫教材11頁習題中二、6題,輸出表達式3*9%2+9%2*5的值. 程序: 運行結果:三、完成實驗報告實驗完成后應整理并寫出實驗報告.報告內(nèi)容應包括:題目、實驗目的、程序流程圖、 程序清單、運行結果、功能分析、心得與體會.(其中“程序流程圖”和“心得與體會”為 選做)實驗二順序結構、選擇結構和循環(huán)結構的C程序設計一、實驗目的I.掌握在c語言中,正確使用賦值語句,正確使用邏輯運算符和邏輯表達式.熟練掌

22、握if語句(包括if語句的嵌套),多分支選擇switch語句.熟練掌握while語句、dowhile語句和for語句實現(xiàn)循環(huán)的方法.在程序設計中掌握一些簡單常用的算法.二、實驗內(nèi)容要求先編寫好教材42頁習題五中各小題的程序,然后上機調(diào)試、運行,得出結果.1.從鍵盤輸入假設干個字符,分別統(tǒng)計其中字母(區(qū)分大、小寫)、數(shù)字字符和其他字符的個 數(shù).分析:利用字符的ASCH值不同,分別設置統(tǒng)計不同字符個數(shù)的條件,假設從鍵盤輸入一個 字符給C,當A,WCW Z,時,C為大寫字母;當a WCW z,時,C為小寫字母; 當O WCW 9時,C為數(shù)字字符;其余為其他字符.注意C語言中邏輯運算符和邏輯表 達式的

23、正確使用.參考程序:# include void main() (char c;int nl, n2, n3, n4;nl=n2=n3=n4=0;/*要進行加、減運算的變量賦0,乘、除的賦1*/printf (請輸入假設干字符:);while (c=getchar( )!=n) if (c=A & c二Z) nl+;else if (c=,a9 & c=O & cnext=NULL;srand( (unsigned)time(NULL);list-data=(rand()%100+l);ptrl=list;for (i=0;idata=(rand()%100+1);ptr2-next=NULL

24、;ptrl-next=ptr2;ptrl=ptrl-next; )ptrl-next=list;/*尾節(jié)點指向頭節(jié)點,形成循環(huán)鏈表*/*顯示鏈表*/ ptrl=list;printf (線dt, ptrl-data); while(ptrl-next !=list) ( ptrl=ptrl-next ;printf (dt, ptrl-data);)printf(nn);/*倒置*/list=inversion (list);/*再次顯示鏈表*/ ptrl=list;printf(dt, ptrl-data); while(ptrl-next !=list) ptrl=ptrl-next ;p

25、rintf(%dt, ptrl-data);printf(nn);8.非空線性鏈表第一個鏈節(jié)點的指針為list,請寫一算法,將該鏈表中數(shù)據(jù)信息為 iteml的所有節(jié)點的數(shù)據(jù)信息修改為item2.算法:心得與體會:三、完成實驗報告實驗完成后應整理并寫出實驗報告.報告內(nèi)容應包括:題目、實驗目的、程序流程圖、程序清單、運行結果、功能分析、心得與體會.(其中“程序流程圖”和“心得與體會”為 選做)實驗六常用的排序方法 一、實驗目的.掌握常用的排序方法和算法,直接插入排序、冒泡排序、直接選擇排序.理解各種方法的特點,并能靈活應用.加深對排序的理解,逐步培養(yǎng)解決實際問題的編程能力.二、實驗內(nèi)容要求先編寫好

26、教材208頁習題五中各小題的程序,然后上機調(diào)試、運行,得出結果.1.兩個單鏈表中的元素遞增有序,試寫一算法將兩個有序表合并成一個遞增有序表.算 法應利用原有的鏈表節(jié)點空間.參考程序:# include # include struct node int data; struct node *next;);void FindAndlnserter(struct node *listl,struct node *list2) (struct node *ptrl, *front, *ptr2;front=listl;ptrl=front-next ;while(list2-next !=NULL)

27、( ptr2=list2-next ; while (ptri!=NULL)(if (ptrl-dataptr2-data) break;front=ptrl;ptrl=ptrl-next ;if (ptrl二NULL) front-next =list2-next ;break;) else list2-next =ptr2-next ; front-next=ptr2; ptr2-next =ptrl; front=front-next ;void main ()/*建立第一個鏈表并初始化,headl為鏈表頭節(jié)點指針*/ int i,lenl=0,len2=0;struct node *h

28、eadl, *head2, *ptrl, *ptr2;headl=(struct node*) malloc(sizeof(struct node);headl-next=NULL;ptrl=headl;printf (請輸入第一個鏈表節(jié)點個數(shù):);scanf(%d, &lenl);for(i=0;idata);ptr2-next二NULL;ptrl-next=ptr2;ptrl=ptrl-next;)/*建立第一個鏈表并初始化,head2為鏈表頭節(jié)點指針*/head2= (struct node*) malloc(sizeof(struct node);head2-next=NULL;ptr

29、l=head2;printf (請輸入第二個鏈表節(jié)點個數(shù):);scanf(d,&len2);for(i=0;idata);ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;)/*顯示兩個鏈表*/printf (n 鏈表 1 如下:n);ptrl=headl;while (ptrl-next!=NULL)ptrl=ptrl-next ;printf (/,%dt,z, ptrl-data ); printf Cn 鏈表 2 如下:n); ptrl=head2;while(ptrl-next!=NULL) ( ptrl=ptrl-next ;printf (

30、z,%dt,z, ptrl-data );)FindAndlnserter(headl, head2);/*顯示合并后的鏈表*/printf (n合并后的鏈表如下:n); ptrl=headl;while (ptrl-next!二NULL) ( ptrl=ptrl-next ;printf (z,%dt,z, ptrl-data );) printf ( n” ); )2.一維數(shù)組a10中存放了 09共10個互不相同的無序數(shù)字,試編一算法,將它們對 號入座(如,a0中存放0、al中存放1等).要求算法的時間復雜度為0(n).參考程序:ftinclude void main () int i,

31、j, t;int a10 = 2, 5, 7,9, 3, 6, 4, 8, 1,0);for (i=0;i=9;i+) printf(%dt, ai); printf (n);/*對數(shù)組a排序(冒泡排序法)*/ for (i=0;i9;i+)(for(j=0;jaj+l) (t=aj;aj=aj+l;aj+l=t; )for (i=0;i=9;i+) printf(dt,ai) ; printf(n);3.序列(3 5,78,12,26,90,41,66,5 8),請寫出對該序列分別采 用插入排序、選擇排序、冒泡排序方法進行升序排序的各趟結果,并分析它們的時間復雜度.插入排序各趟結果:插入排序

32、時間復雜度:選擇排序各趟結果:選擇排序時間復雜度:冒泡排序各趟結果:冒泡排序時間復雜度:三、完成實驗報告實驗完成后應整理并寫出實驗報告.報告內(nèi)容應包括:題目、實驗目的、程序流程圖、 程序清單、運行結果、功能分析、心得與體會.(其中“程序流程圖”和“心得與體會”為 選做)參考答案實驗一.求出a、b中大的數(shù).嘗試編輯一個簡單的C語言程序,并上機調(diào)試、運行,得出結果.用C語言程序編寫教材11頁習題中二、6題,輸出表達式3*9%2+9%2*5的值. 參考程序:# include main () float x;x=3 *9%2+9%2*5;printf ( x=%fn,x );) 實驗二.編程求解以下

33、函數(shù):x + 8當100H 寸Y= -x + 8當x10時0尤為其他值時參考程序:# include void main () int x,y;printf ( x=”);scanf ( “%d,&x);if (x100) y=x+8;else if (x-10) y=一x+8;elsey=0;printf ( x=%d, y=%dn”,x, y);實驗三5.有一行字符,要求將每個單詞中的第一個字符改寫成大寫字母(如果原來已是大寫字 母,那么不變).參考程序:4include ttinclude void main ()(int i;char s 100;printf (請輸入一行字符:);g

34、ets(s);for (i=0;si!= 0 ;i+)(if (s0=,& s0=z)s0=s0-32;if (si-l=,& si=a & si二z)si=si-32;)puts (s);實驗四4.編寫一個程序,主函數(shù)輸入年份,輸出是否閏年的結果,調(diào)用fun函數(shù)進行判斷,假設參 數(shù)year為閏年,那么返回1,否那么返回0.參考程序:# include int fun(int y)(if(y%4=0 & y%100!=0)|(y%400=0)return 1;elsereturn 0;)void main () int x,year;printf (請輸入年份:);scanf (d, &yea

35、r);x=fun(year);if (x=l)printf (,z%d 年是閏年. n,year);elseprintf (/z%d 年不是閏年.n, year);實驗五8.非空線性鏈表第一個鏈節(jié)點的指針為list,請寫一算法,將該鏈表中數(shù)據(jù)信息為 iteml的所有節(jié)點的數(shù)據(jù)信息修改為item2.參考算法: struct node char data;struct node *next;*p, *list;struct node *replace(list, item2) int i;char iteml, item2; p= list-next;while (p!=NULL) p= p-ne

36、xt;if (p-data=iteml) p-data=item2;參考程序:# include # include # include struct node (int data;struct node *next;);/*查找并修改函數(shù)(針對非循環(huán)鏈表)*/void FindAndModify(struct node *head, int iteml, int item2) (struct node *p=head; do(if(p-data =iteml) p-data =item2; p=p-next ;while(p!=NULL);)void main ()(/*鏈表初始化,產(chǎn)生具有

37、5個節(jié)點的非循環(huán)鏈表Jist為鏈表頭節(jié)點指針*/ int i,num=0, iteml, item2;struct node *list,*ptr2;list=(struct node*) malloc(sizeof(struct node); list-next=NULL;printf (請輸入節(jié)點數(shù)據(jù)值(整數(shù));scanf(d, &num);list-data=num;ptrl=list;for(i=0;idata=num;ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;/*顯示鏈表*/ ptrl=list;printf(dt, ptrl-data

38、);while(ptrl-next !=NULL)( ptrl=ptrl-next ; printf(%dt, ptrl-data);printf(nn);/* 將 iteml 修改為 item2*/ printf (請輸入 iteml); scanf(d, &iteml);printf (請輸入 item2z/);scanf(d,&item2);FindAndModify(list, iteml, item2);/*再次顯示鏈表*/ ptrl=list;printf (,/%dt,/, ptrl-data);while(ptrl-next !=NULL) ( ptrl=ptrl-next ;

39、printf (dt,ptrl-data);printf (nn);實驗六3.序列(3 5,78,12,26,90,41,66,5 8),請寫出對該序列分別 采用插入排序、選擇排序、冒泡排序方法進行升序排序的各趟結果,并分析它們的時間復雜 度.插入排序各趟結果:R:0R2R3R4R:5R6R7R8初始3578122690416658第1趟783578122690416658第2趟121235782690416658第3趟261226357890416658第4趟901226357890416658第5趟411226354178906658第6趟661226354166789058第7趟5812

40、26354158667890時間復雜度:0(1?)選擇排序各趟結果:初始3578122690416658第1趟1278352690416658第2趟1226357890416658第3趟1226357890416658第4趟1226354190786658第5趟1226354158786690第6趟1226354158667890第7趟1226354158667890時間復雜度:0(/)冒泡排序各趟結果:初始3578122690416658第1趟3512267841665890第2趟1226354166587890第3趟1226354158667890第4趟1226354158667890時間

41、復雜度:0(r)2).輸入a、b、c、d四個整數(shù),求最小值Min和最大值Max.分析與提示:參照書上26頁例2-12求四個數(shù)中最大數(shù)的解題思路,同樣可以求出四個數(shù)中的最小 數(shù).先將a賦給變量Min,然后分別用其他三個數(shù)和Min比擬,假設某數(shù)小于Min,就把這個數(shù)賦 給Min(替換Min的值),比擬完成后,Min中存放的就是a、b、c、d四個數(shù)中的最小數(shù).參考程序:ttinclude void main () int a, b, c, d, Min, Max;printf (請輸入4個整數(shù):);scanf (d, %d, %d, %d, &a, &b, &c, &d);Min=a;if(bMin

42、) Min=b;if(cMin) Min=c;if(dMax) Max=b;if(cMax) Max二c;if(dMax) Max=d;printf (z,Min=%d, Max=%dnz,, Min, Max);).銀行整存整取存款不同期限的月息利率分別為:0.63%期限一年0.66%期限兩年月息利率二 0.69%期限三年0.75%期限五年0.84%期限八年要求輸入存錢的本金和期限,求到期時能從銀行得到的利息與本金的合計. 提示:使用多分支switch語句編寫程序.參考程序:ttinclude void main () double m, 1; Afloat有效數(shù)字67位,double有效數(shù)

43、字1516位*/ int y;printf (請輸入本金和存款期限:);scanf %d,&m, &y) ;/*double 型輸入用1建/ switch (y)(l=m*0. 63/100;break;l=m*0. 66/100;break;case 3:l=m*0. 69/100;break;case 4:l=m*0. 75/100;break;case 5: l=m*O. 84/100;break;default:printf (輸入錯誤n);)printf (lfn,m+1) ;double 型輸出可用lf、%e %g4編程輸出如以下圖形:1 xjsxyxx?sxTs參考程序:# in

44、clude void main () (int i, j, k;for (i=l;i=4;i+) (for (j=l;j=10-i;j+)printf ( );/*注意空格的表示*/for (k=1;k=2*i+3;k+)printf (*);printf (n);5.編程求解以下函數(shù):x + 8當x100U 寸Y= -x + 8當x10B寸0 x為其他值時分析與討論:程序:運行結果:三、完成實驗報告實驗完成后應整理并寫出實驗報告,報告內(nèi)容應包括:題目、實驗目的、程序流程圖、 程序清單、運行結果、功能分析、心得與體會.(其中“程序流程圖”和“心得與體會”為 選做)實驗三 C程序設計中數(shù)組的應用

45、一、實驗目的.掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入、輸出的方法.掌握字符數(shù)組和字符串的使用方法.掌握一些與數(shù)組有關的常用算法.二、實驗內(nèi)容要求先編寫好教材66頁習題六中各小題的程序,然后上機調(diào)試、運行,得出結果.L在具有10個數(shù)的遞增序列中加入一個x ( x由鍵盤輸入),使結果仍然有序.分析:假設a10中存放著10個遞增序列的數(shù),由鍵盤輸入一個x, x需要和a10中的數(shù) 依次比擬大小,尋找適當?shù)奈恢貌迦?插入后原數(shù)組中10個數(shù)變?yōu)?1個數(shù),仍然遞增,注意 開始需預留數(shù)組空間.參考程序:ttinclude void main () int all, i,x;printf (請輸入10個遞增序

46、列的數(shù):);for (i=0;ix) ai + l=ai;else ai+l=x;break;)printf (x插入后的數(shù)組序列:);for (i=0;i=10;i+)printf r%ldt/z,ai);/*” t :將當前位置移到下一個水平制表位(輸出)*/printf (n);.從鍵盤輸入字符串a(chǎn)和字符串b,并在a串中的最小元素后面插入字符串b.參考程序:ttinclude ftinclude void main () (char a100, b50, c100, min;/*數(shù)組大小的設置要恰當*/int i, k;printf (請輸入字符串a(chǎn): );gets(a);printf

47、(請輸入字符串b:);gets(b);min=a0;for (i=0;ai!=0 ;i+) if (aimin) min=ai ; /*min中存放新的更小值,參與后面的循環(huán),尋找最小值*/ k=i;) for (i=0;ai+k+l!=0 ;i+) ci=ai+k+l;ci+l= 0 ;/*此語句是在c串結尾加“ 0,也可移到循環(huán)體外*/)for (i=0;bi!=0 ;i+) ai+k+l=bi;ai+k+2= W ; /*此語句是在a串結尾加“ 0,也可在循環(huán)體外用ai=0實現(xiàn)*/)strcat (a,c); puts(a);).編寫一個程序,將兩個字符串si和s2比擬,如果sls2,輸

48、出一正數(shù);sl=s2,輸出 0;sls2,輸出一個負數(shù).不要用strcmp函數(shù).兩個字符串用gets函數(shù)讀入.輸出的正數(shù)或負 數(shù)的絕對值應是相比擬的兩個字符串的相應字符的ASCH碼的差值.分析:兩個字符串的比擬方法:兩個字符串自左向右逐個字符比擬(按ASCII碼值大小),直到出現(xiàn) 不同的字符或遇到0為止.參考程序:ttinclude ttinclude ttinclude void main () char sl100, s2100;int i, k;printf(請輸入字符串sl:);gets (si);printf (請輸入字符串s2:);gets(s2);for(i=0;sii!=0 |

49、s2i!=0;i+) k=sli-s2i;if(k=0) continue;else break; if(k0)printf (sls2, %dn,k);if (k=0)printf (sl=s2, %dn,k);if(k0)printf (z/sls2, %dn,k);.編寫一個程序,將字符串s2中的全部字符拷貝到字符數(shù)組si中.不用strcpy函數(shù),復 制時(T也要復制過去J 0,后面的字符不復制.參考程序:#include ttinclude void main ()(int i, j;char si 100,s250;printf(請輸入字符串sl:);gets (si);printf (請輸入字符串s2:);gets (s2);for (i=0; si i != 0 ; i+);for (j=0; s2j != 0 ; j+)sii=s2j;i+;sli=s2j ;/*也可用語句0實現(xiàn)*/puts (si); ).有一行字符,要求將每個單詞中的第一個字符改寫成大寫字母(如果原來已是大寫字母, 那么不變). 分析與提示:首先把一行字符串放在一個字符串數(shù)組ci中,要將每個單詞中的第 一個字符改寫成大寫字母,考

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論