



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗1、C語言編程環(huán)境和運行C程序的方法ー、實驗目的1、熟悉VisualC++6.0集成開發(fā)環(huán)境的使用方法;2、熟悉C語言程序從編輯、編譯、連接到最后運行得到結果的全過程及每ー步驟的作用;3、了解C語言程序的結構特征與書寫規(guī)則,能夠編寫簡單的C程序;4、初步理解程序調試的思想,能找出并改正C程序中的典型語法錯誤。二、實驗內容1、熟悉上機環(huán)境⑴參照教材附錄A(P370-376)或實驗指導書前言中的內容,熟悉VC++6.0集成環(huán)境,重點是其中常用菜單、工具按鈕的功能;⑵在D盤建立一個自己的工作文件夾,文件夾以班名+學號后兩位+姓名來命名(例如:動漫班75號張三的工作文件夾命名為dm75zhangsan注意:文件夾及文件的命名盡量不要用漢字!);⑶參照教材第1章中的3個例題的源代碼,在自己的工作文件夾中分別創(chuàng)建并運行三個C源程序,初步熟悉C程序的結構特點和運行方式。注意:①每個例題對應ー個C源程序(新建C源文件時,文件時務必要加擴展名.c);②ー個源程序成功運行后,要關閉工作區(qū)后再新建下一個例題的源程序(否則會出錯);2、編程參照教材例題!.!編寫ー個程序實現(xiàn)分兩行輸出自己的姓名及聯(lián)系電話。遇到的主要問題及分析:「調試通過3、程序改錯調試以下給定程序的功能是在屏幕上顯示“WelcometoYou!”,其中存在3處語法錯誤,請根據(jù)編譯給出的出錯提示,依次指出錯誤所在行并進行修改,調試程序使其能運行得到正確結果。#include<stdio.h>mian() //Iprintf(WelcometoVou!\nH)//2
出錯行號、出錯提示信息、原因分析及更正后的代碼://I//2調試通過//2三、實驗要求1、將每次實驗所編輯的C源程序調試通過后分別保存在D盤上自己的文件夾中(備査!)及自己的U盤中;2、對調試過程中出現(xiàn)的問題和解決方法進行必要的記錄,并予以簡要分析四、實驗小結1、結合本次實驗,簡述C程序從編寫到最終運行的一般過程,并簡要說明其中每個步驟的作用及其生成的文件類型。2、結合本次實驗,總結ー下C程序中常見的語法錯誤及其對應的出錯提示信息。評闋人評闋日期
實驗2、順序結構程序設計ー、實驗目的1、理解c語言中基本數(shù)據(jù)類型,掌握整型、實型和字符型變量的定義、賦值及使用方法;2、掌握C語言常用算術運算符的功能,掌握C表達式的書寫方法、求值規(guī)則以及表達式計算中的類型轉換;3、熟練掌握格式化輸入函數(shù)scanf()、格式化輸出函數(shù)printf()的使用,能正確使用各種格式符:4、掌握簡單的順序結構程序的編寫以實現(xiàn)簡單的數(shù)據(jù)處理;5、初步熟悉C程序的調試方法(單步執(zhí)行方式)。二、實驗內容1、分別在VC++6.0和Win-TC中運行以下程序,觀察輸出結果是否相同?并簡要說明原因。運行結果://I,//6//2,//7//3,//8//4,//9//5,//10簡要說明:說明:運算符sizeof()用于求解C語言中不同類型數(shù)據(jù)所占內存字節(jié)數(shù)(參見附錄D)#include<stdio.h>main(){inta=l;\n");printf(nchar型占%d個字節(jié);\nM,sizeof(char));//IprintfC'int型占%d個字節(jié);\nH,sizeof(int));//2printfC'longint型占%d個字節(jié);\nH,sizeof(long));//3printf(nfloat型占%d個字節(jié);\nn,sizeof(float));//4printfC'double型占%d個字節(jié);\n"9sizeof(double));\n");printf("printf("變量a的值的類型占%d個字節(jié);\nヽsizeof(a));//6printf("表達式(float)a的值的類型占%d個字節(jié);\n",sizeof((float)a));//7printf("表達式2.〇?a的值的類型占%d個字節(jié);\n",sizeof(2.0*a));//8printf("表達式a+'a'-2.0的值的類型占%d個字節(jié);\n",sizeof(a+*a*-2.0));//9printf('字符串Hello!占%d個字節(jié);\n",sizeof("Hello!”));//102、程序改錯并調試:下列程序的功能為:輸入一個華氏溫度,要求輸出攝氏溫度。公式為:C=3(ドー32),9輸出取2位小數(shù)。程序中有5處錯誤,請修改并調試程序,使其實現(xiàn)所要求的功能。(編譯連接無誤后單步執(zhí)行)#include<stdio.h> 出錯行號及其正確代碼:main(){floatc,f;//Iprintf("請輸入ー個華氏溫度:\n");//2scanf("%r,f)5 〃3c==(5/9)*(f-32); //4printf("攝氏溫度為:%5.2An"c);//5} 程序修改正確后運行,若輸入的華氏溫度為!20,對應的攝氏溫度為: 3、編程:⑴由鍵盤輸入ー個圓柱體的底面半徑r和高度h的值,編程計算并輸出該圓柱體的體積。(注意:體積=底面積?高,要求將圓周率定義為符號常量PD調試通過⑵由鍵盤輸入兩個整型變量a和b的值。編程計算并輸出a與b的和、差、積、商、a除以b的余數(shù)、a1)的值。輸入輸出參考示例如下:(提示:用到C語言的運算符+、ー、?、/、%、函數(shù)pow()(參見附錄CP385))請輸入a,b的值:a=3,b=2a+b=5a-b=la*b=6a/b=la%b=laAb=9⑶求一元二次方程ax,bx+c=O的實根xl,x2,。a,b,c的值由鍵盤輸入,設?/daoO。輸入輸出示例如下:請輸入三個系數(shù)a,b,c的值: (提示:用到C語言的庫函數(shù)sqrt。(參見附錄CP385))a=l,b=3,c=2xl=-1.00x2=-2.00調試通過⑷編寫ー個程序,從鍵盤輸入一個大寫字母,輸出該字母及其對應的ASCI!碼值,同時輸出其小寫字母及其對應的ASCII碼的值。]調試通過⑸(選做)編寫程序,從鍵盤輸入兩個數(shù)字字符并分別存放在字符型變量a和b中,要求通過程序將與這兩個字符對應的數(shù)字相加后輸出,例如,輸入字符型數(shù)字7和5,輸出的則是整型數(shù)12。
(提示:通過“數(shù)字字符ー‘〇'得到對應數(shù)字”)。I!調試通過⑹(選做)編寫程序,要求從鍵盤輸入ー個3位整數(shù),然后將它們逆序輸出.(比如:輸入123,輸出321。提示:關鍵是想辦法分別提取百位、十位和個位上的數(shù)字!?。┤?、實驗小結在上機過程中主要遇到哪些問題?分別是如何解決的?評闋人評闋評闋人評闋日期ー、實驗目的1、熟悉關系表達式、邏輯表達式的書寫和求值;2、掌握if語句的三種基本形式、switch語句的結構及其應用;3、能綜合運用if語句與switch語句實現(xiàn)多分支選擇;4、熟悉并掌握程序的“單步執(zhí)行”、“斷點設置及跟蹤”等調試方法。二、實驗內容1、邏輯表達式驗算:設已有定義inta=3,b=4,c=5;先自行計算下面各邏輯表達式的值,然后編寫程序上機驗證你分析的結果是否正你分析的結果是否正確。(l)a+b>c&&b=c⑵!(a>b)&&!c||l⑶!(x=a)&&(y=b)&&0(4)!(a+b)+c_l&&b+c/2(5)(a=b+c,b>c-l)&&(b+=c)||(b*2=a+c)(6)(*c*-a*)/2+b>c!=b-a;分析的結果:上機的結果及出錯原因說明:(1)(1)(2)(2)(3)(3)(4)(4)(5)(5)(6)(6)2、程序填空:以下程序的功能為:從鍵盤輸入依次輸入操作數(shù)、運算符、操作數(shù),如果運算符是+、ー、*、/之一,則進行相應的四則運算,否則輸出運算符有誤。在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能。main(){inta,b,c;charop;printf(MPleaseinputaexpression:1*);[I]scanf("%d%c%d", 11】 )switch(op){case*+*:c=a+b;【2】printf(**%d+%d=%d\n**,a,b,c);break;case*-*:c=a-b;【3】printf(**%d-%d=%d\n**,a,b,c);break;case***:c=a*b;printf(**%d*%d=%d\n**,a,b,c);break;case7*:if( )printf("Divisoriszero\n**);調試通過elseprintf("%d/%d=%i\n,,.a.b,( [3] >a/b):/?強制類型轉換?/break;default:printf("輸入的運算符有誤!\n");3、程序改錯調試(請糾正程序中存在錯誤,使程序實現(xiàn)其功能)⑴下列程序的功能為:輸入1個字母后,輸出該字母的前序字母、該字母、該字母的后序字母,例如:輸入ル則輸出cde;輸入a,則輸出zab;輸入P,則輸出OPQ;輸入Z,則輸出YZA。調試后正確的代碼為:#include<stdio.h>main(){ charch,cl,c2;printf(MEnteracharacter:*1)ch=getchar();if((ch>=,a,)ll(ch<=,z*))ch-=32;cl=ch-l;c2=ch+l;if(ch=’A')cl=ch+25;elseif(ch='Z')c2=ch-25;putchar(cl);putchar(ch);putchar(c2);putchar('\n');)調試通過⑵下列程序的功能為:輸入1?4月份號,輸出該月份對應的英語表示法。例如,輸入“3”,則輸出“March”。includenstdio.hMmain(){charm;printf(uinputthemonthnumber:\nM);調試后正確的代碼為:scanf("%ビ,&m);switch(m){調試后正確的代碼為:casekprintf("Jan");case2:printf(HFebM);case3:printf(*'MarH);case4:printf("Apr");}30元費用=(每小時30元費用=(每小時3元每小時2.5元<10小時10~50小時>50小時⑴根據(jù)上網(wǎng)時間t計算并輸出上網(wǎng)費用cost?計算公式:同時為了鼓勵多上網(wǎng),每月收費最多不超過300元。調試通過⑵判斷用戶從鍵盤輸入的任意ー個字符是數(shù)字字符、字母字符還是其他字符,要求有必要的輸入提示和輸出信息;如果輸入的是英文字母,再利用switch語句判斷該字母是否是元音字母,并以“yes”或“no”字樣輸出判斷結果。]調試通過⑶編程實現(xiàn):任意輸入一個百分制成績,輸出成績等級A、B、C、D.當輸入的分數(shù)小于0分或大于100分時,顯示出錯信息:在85-100分時為A,70-84分為B,55-69分為C,55分以下為D。(要求:綜合應用if和switch結構實現(xiàn),參考教材P102例題4.6)]調試通過調試通過⑷(選做)編程實現(xiàn):對任意輸入的ー個日期(年year、月month、日day),計算并輸出該年該月該日是這ー年的第幾天。(提示:本題要綜合應用到if、switch結構)調試通過三、實驗小結對選擇結構掌握的情況如何?主要存在什么問題?ー、實驗目的1、熟悉for、while、dO…while三種循環(huán)語句的結構和執(zhí)行流程,體會三種循環(huán)語句的異同,能夠根據(jù)實際問題選用適合的循環(huán)語句。2、掌握用循環(huán)的方法實現(xiàn)常見實際問題。3、進ー步熟悉調試程序的方法(單步執(zhí)行、運行到光標位置、斷點設置及跟蹤)。二、實驗內容1、程序調試改錯:(請糾正程序中存在的錯誤,使程序實現(xiàn)其功能)⑴下面程序的功能是:輸入10名學生某門課程的成績,計算平均分,并求出其中的最髙分和最低分。#include<stdio.h>main() //I{inti;//2floatscore,max,min,sum,ave;//3printf(HPleaseenterscoreofstudent:\nM);//4scanf(M%F\&score);//5max=min=sum=0; //6for(i=l;i<=10;i++) //7{scanf("%r‘,&score);//8sum+=score;//9if(max>score)//10max=score;//llelseif(min<score)//12min=score;//13}出錯行號及正確代碼:調試通過ave=sum/10;//14printf(HAverage=%6.2f\nMax=%6.2f\nMin=%6.2f\nn,ave,max,min);//15⑵下面程序的功能為:逆序輸出26個大寫英文字母。#include<stdio.h>main()//I{charx;//2x=Z*;//3while(x=’a')//4{printf("%3d",x);//5x++;116)出錯行號及正確代碼:調試通過2、程序填空(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)⑴下列程序的功能為:用輾轉相除法求兩個正整數(shù)的最大公約數(shù)?!拜氜D相除法”求兩個正整數(shù)的最大公約數(shù)的算法提示如下:①將兩數(shù)中大的那個數(shù)放在m中,小的放在n中。②求出m被n除后的余數(shù)r?③若余數(shù)為0則執(zhí)行步驟⑦:否則執(zhí)行步驟④。④把除數(shù)作為新的被除數(shù);把余數(shù)作為新的除數(shù)。⑤求出新的余數(shù)r。⑥重復步驟③到⑤。⑦輸出n,n即為最大公約數(shù)。#include<stdio.h>main(){intr,m,n,[1] ;scanf(H%d%dM,&m,&n);if(m<n)【2】r=m%n;while(r){m=n;n=r;r=[3] ;}printf(H%d\n,\n);}⑵下列程序的功能為:計算1020個西瓜幾天后能賣完(第一天賣了一半多兩個,以后每天賣剩的一半多兩個)。#include<stdio.h>main(){intday,xl,x2;day=0;xl=1020;while(14]){ x2= [5];xl=x2;day++;}printf(Mday=%d\nM,day);}3、編程:⑴輸入ー個實數(shù)x和一個正整數(shù)n,輸出X”。要求分別用for、while、d〇…while語句來實現(xiàn)。用while循環(huán)實現(xiàn)用用while循環(huán)實現(xiàn)用dO…while循環(huán)實現(xiàn)⑵編程求1到n中能被3或7整除的數(shù)之和,n的值由鍵盤輸入。請分別用for循環(huán)語句和while循環(huán)語句完成用for循環(huán)用while循環(huán)⑶任意輸入ー串字符(敲回車鍵結束輸入)。分別統(tǒng)計日H其中英文字母、數(shù)字字符、其它字符的個數(shù)。⑷(選做)編寫程序:從鍵盤輸入x,利用募級數(shù)展開計算sinx的近似值,要求誤差小于10.6。
sinxX3——sinxX3——+3!5!(-<n<X<-Hr)⑸(選做)編寫程序:任意輸入一串字符(敲回車鍵結束輸入),將其中所有的大寫字母均轉換為小寫,然后將所有字母均用其前面的第3個字母替換,其他字符不變,輸出轉換后的字符串。例如:如果輸入AsiaGame201〇,輸出xpfxdxjb2010.三、實驗小結本次實驗完成的情況如何。對三種循環(huán)語句掌握的情況如何,目前主要存在哪些問題?實驗ね循環(huán)結構程序設計%評闋實驗ね循環(huán)結構程序設計%評闋人評闋日期ー、實驗目的1、掌握break、continue語句的作用、區(qū)別及使用方法;2、掌握循環(huán)結構的嵌套(至少兩層);3、掌握用循環(huán)的方法實現(xiàn)ー些常用算法;4、進ー步熟悉調試程序的方法(單步執(zhí)行、運行到光標位置、斷點設置及跟蹤)。二、實驗內容1、程序改錯調試:以下程序的功能是用人機對話的形式進行加、減、乘、除運算。用戶每輸入一次運算數(shù)和運算符,系統(tǒng)輸出相應的計算結果,例如,當用戶輸入3+5后,系統(tǒng)輸出3+5=8.00,進行除法運算時要判斷分母是否為0S只有當輸入的運算符為“修時オ結束整個程序的運行。程序中兩行存在錯誤,調試以實現(xiàn)要求的功能。#include<stdio.h>#include<conio.h>main()//I{inti=l,flag=O;//2#include<stdio.h>#include<conio.h>main()//I{inti=l,flag=O;//2floata,b,result;//3charsym;//4〃i代表題號,flag作為標志變量進行分類〃a、b分別為參加運算的兩個數(shù),result為運算結果//sym為運算符printf「請輸入操作數(shù)1運算符操作數(shù)2:\nつ;//5while(sym!=,#')//6{flag=O;mprintグ第(%d)題:H,i);//8scanf(M%f%c%r\&a,&syni,&b);//9switch(sym)//IO{case*+,:result=a+b;break;//llcase*-*:result=a-b;break;//12case***:result=a*b;break;//13case7*://14出錯行號及正確代碼:if(b==0)//15 nag=l;//16else//17result=a/b;//18continue;//19case,#,:flag=3;break;//20調試通過default:flag=2;//21調試通過} lf(flag==0)//22{ printf(H%0.1f%c%0.1f=%0.2f\n\nH,a,sym,b,result);//23i++;//24if(flag==l)priiitf("除數(shù)為零!請重新輸入!\n\nM);//25if(flag==2)printf("運算符錯誤!請重新輸入!\n\iT);//26lf(flag==3)printf("結束!\n\nn);//272、程序填空(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)⑴下列程序的功能為:對任意輸入的ー個整數(shù),輸出它的位數(shù)以及各位數(shù)字之和,例如,若輸入123,則輸出“123的位數(shù)為3,各位數(shù)字之和為6”?#include<stdio.h>main(){inta,n,len=0,sum=0,num; /*n代表整數(shù)a的每一位數(shù)字,len代表a的位數(shù)*/printf("請輸入ー個整數(shù)aゴ);scanグ%d'',&a);⑴;while(a>0){n=[2] ;/?求整數(shù)的個位、百位、…位的數(shù)字?/sum+=n;【3】 ;len++;
printf("整數(shù)%d共有%d位,”,num,leu);printf("其各位數(shù)字之和為%小11\11",§11111);}⑵以下程序的功能是:給出年、月、日,計算出該日是該年的第幾天。請?zhí)羁胀晟瞥绦?。main(){ intyear,month,day,days,i,d;printf(”請輸入年,月,日:H);scanf(n%d,%d,%d,',&year,&month,&day);days=O;for(i=l;i<month;i++){switch([4]){caseLease3:case5:case7:case8:case10:case12:d=31; [5] ;case4:case6:case9:casell:d=30; [6] ;case2:if(year%4==0&&year%100!=0llyear%400==0)d=29;elsed=28;}days+=d;}printf(M%d年%d月%d日是該年的第%d天。\n”.vear.month,dav,17】):}3、編程:⑴編程輸出如下圖所示的下三角形乘法九九表。1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81⑵中國古代數(shù)學家張丘建提出的“百雞問題ーー只大公雞值五個錢,ー只母雞值三個錢,三個小雞值ー個錢。現(xiàn)在有100個錢,要買100只雞,是否可以?若可以,給出ー個解,要求三種雞都有。請寫出求解該問題的程序。⑶編程輸出如下圖形(要求以第30列為對稱軸)。1
222
33333
4444444
555555555
66666666666
7777777777777
66666666666
555555555
4444444
33333
2221⑷統(tǒng)計100之內素數(shù)的個數(shù)(2是最小的素數(shù)),并將這些素數(shù)按每行10個輸出.4、選做題⑴程序改錯調試:下列程序的功能為:找出1000以內的所有完數(shù)(ー個數(shù)等于它的所有因子之和,這個數(shù)就稱為“完數(shù)”,例如28的因子1+2+4+7+14=28,則28即為一個“完數(shù)”).程序中有2行存在錯誤,請調試修改,以實現(xiàn)程序所要求的功能。include"stdio.h" //Imain()//2{main()//2{inta,k,s=O;//3for(k=2;k<1000;k++)//4{s=s;//5for(a=l;a<=k/2;a++)//6if(k/a==O)ms+=a;//8if(s==k)//9printf("%disOK!\n",k);//IO}出錯行號及正確代碼:}⑵編程驗證哥德巴赫猜想:任何一個大于6的偶數(shù)均可表示為2個素數(shù)之和。如,6=3+3,8=3+5,10=3+7,10=5+5 20 =3+17,20=13+7等。編程將6?100之間的偶數(shù)都表示為2個素數(shù)之和。三、實驗小結談談本次實驗完成的情況。到目前為止你掌握的情況如何,主要問題是什么?磔評闋人評闋日期實驗6、數(shù)組⑴ー、實驗目的
1、掌握ー維數(shù)組的定義、初始化及其使用方法;2、熟悉二維數(shù)組的定義、初始化及其使用方法;3、熟練掌握利用數(shù)組實現(xiàn)常用算法;4、進ー步熟悉調試程序的方法(單步執(zhí)行、運行到光標位置、斷點設置及跟蹤)。二、實驗內容1、程序改錯調試:出錯行號及正確代碼:TOC\o"1-5"\h\z⑴程序的功能是:輸入10個數(shù),求出這些數(shù)中的最大值、最小值以及平均值,并按照每行5個數(shù)的格式輸出。#include<stdio.h>//I#deHneN10; //2出錯行號及正確代碼:main() //3{inti,sum=O,a[N],max,min;//4for(i=0;l<N;i++) //5scanf(H%dM,a[i]);//6sum=max=min=a[0];//7for(i=0;i<N;i++) //8{sum+=a[i];//9if(a[i]>max) //10max=a[i];//llelseif(a[i]<min)//12min=a[i];//13} //14for(i=0;i<N;i++) //15{printf(H%8dM,a[i]);//16if(i%5==0)printf(M\nn);//17} //18printf(Hmax=%dmin=%daverage二%H\n”,max,min,§um*l.0/N);//19}出錯行號及正確代碼:⑵程序的功能是計算ー個3X3矩陣中對角線(含正、反對角線)上的各個元素之和。#include<stdio.h>//Imain()//2{intij,sum,a[3][3]={l,2,3,4,5,6);//3for(i=0;i<=n;i++)//4for(j=0;j<=n;j++)//5if(i==jlli+j==n)116sum+=a[i][j];//7printf(,,sum=%d\n,,,sum);//8出錯行號及正確代碼:2、程序填空(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)⑴程序的功能是將由鍵盤輸入的一2、程序填空(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)⑴程序的功能是將由鍵盤輸入的一個十進制正整數(shù)轉換為二進制數(shù)輸出。main(){intaL20],x,i=0J;scanf("%d",&x);while([1] ){a[i]=x%2x=[2]i++;_LL1[2][31for(j=i-l;i>=0; [3] )printf("%-2d",aUJ);}⑵程序的功能是在ー組數(shù)中査找與任意輸入的x值相同的元素所在位置。main()[4][5]
{inta[10]={l,2,3,4,5,6,7,8,9,10},i,x;printf(“輸入要找的數(shù)x:");scanf(“%d”,[4] >:i=10;while(15】)i--;if(【6】 )printf("與x值相同的元素位置是:%d\n”,i);elseprintf(“找不到與x值相同的元素!\n");⑶程序的功能是:對ー個已拝好序的10個數(shù),從鍵盤任意輸入一個數(shù)插入,使之仍然有序。#include<stdio.h>main(){inta[U]={1,4,6,9,13,16,19,28,40,100};intnum,ij;printf(narraya:\nM);〃依次輸出原數(shù)組中的各個數(shù)for(i=0;i<10;i++)printf(M%5dH,a[i]);printfC,\nM);printf(Hinsertdata:**); /喩入待插入的數(shù)scanf(M%dH,&num);for(i=0;i<10;i++)if(a[i]>num){for0=9;j>=iU-)【7】 ;a[i]=num;break;}elseaH01= 18] ;printf(MNowarraya:\nM);for(i=0; [9] ;i++)printf(M%5dH,a[iJ);printf(H\nM);}3、編程:分別用選擇法和冒泡法對任意輸入的N個不同的整數(shù)按升序排序并輸出排序前后的各個數(shù)(提示:定義符號常量N代表需要排序的個數(shù))。選擇法排序:冒泡法排序:三、實驗小結娟評闋人評闋日期實驗7、數(shù)組⑵實驗7、數(shù)組⑵ー、實驗目的1、理解字符串與字符數(shù)組的關系,掌握字符串的輸入輸出方法2、熟悉常用的字符串操作函數(shù);3、進一步熟悉調試程序的方法(單步執(zhí)行、運行到光標位置、斷點設置及跟蹤)。二、實驗內容
1、程序填空:(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)⑴程序的功能是:對從鍵盤輸入的任意ー串字符(長度不超過80),統(tǒng)計出各字母出現(xiàn)的次數(shù)(不區(qū)分大小寫)#include<stdio.h>main(){intij,count[26]={0};〃存放各個字母出現(xiàn)的次數(shù)charletter[26],zfc[100];//zfc[100]存放輸入的字符串for(i=0;i<26;i++)letter[i]=,a,+i;printfT請輸入ー串字符:\n");gets(zfc);while(zfc[i]!=,\O,){for(i=0;12】う++)if(zfc[i]==letter[j]llzfc[i]+32==letter[j])count[j]++;【3】;)for(i=0;i<26;i++)if(count[i]!=0)printf("字母%c出現(xiàn)%イ次、n”』etter[i],count[i]);printf「其它字母均未出現(xiàn)'n”);⑵程序的功能為:在一行文字中,刪除其中某個字符,需要刪除的字符由鍵盤輸入。#include<stdio.h>#include<string.h>main(){charline[80],ch;intij,len;printf("輸入ー串字符\n");【4】;printf("輸入要刪除字符?');ch=getchar();i=0;while(line[i]!=*\O,){while([5] &&line[i]!=ch)i++;len=strlen(line);for(j=i;j<len-l;j++)[6]:〃串中待刪除字符之后的字符依次向前移動ー個位置。linem='\O';}puts(line);}2、編程⑴從鍵盤接受一個字符串,判定輸入的字符串是否為回文(所謂回文是指正序和逆序排列結果是同樣的,例如字符串abcdEdcba為回文)。⑵有一行電文,已經按照如下規(guī)律譯成密碼:AfZ(a-z),B-*Y(bfy) 即:第一個字母變成第26個字母,第i個字母變成第(26-i+l)個字母,非字母字符不變。要求編程將密碼(從鍵盤輸入)譯回原文,并輸出密碼和原文。(本題:P169第12題)⑶(選做)有一篇文章,共有3行文字,每行有80個字符。要求分別統(tǒng)計出其中英文大寫字母、小寫字母、數(shù)字、空格以及其他字符的個數(shù)(本題:P169第10題)三、實驗小結目前主要存在哪些問題,主要原因及解決辦法?實驗8、函數(shù)⑴ー、實驗目的1、掌握自定義函數(shù)的聲明、定義和調用;2、理解函數(shù)的實參、形參和返回值的概念;3、掌握用簡單變量、數(shù)組名作為函數(shù)的參數(shù)不同及其各自的作用;4、熟悉單步調試進入函數(shù)和跳出函數(shù)的方法。二、實驗內容娟評闋人評闋日期1、程序改錯調試:⑴程序的功能是:在主函數(shù)中輸入三角形的三個邊長,如果邊長合理,則調用自定義函數(shù)求出三角形面積;如果邊長不合理,則重新輸入三個邊長直至合理。程序中有4處錯誤,請修改并調試程序。出錯行號及正確代碼:TOC\o"1-5"\h\z#include<stdio.h>#include<math.h>main() //I出錯行號及正確代碼:{ //2floata,b,c;prints”請輸入三角形的三個邊長值:\nn); //3scanf(M%f%f%fM,&a,&b,&c);//4while((a+b>c&&a+c>b&&b+c>a))//5{ prints不能構成一個三角形!\nH);//6printf「請重新輸入三角形的三個邊長值:、曖);//7scanf(H%f%f%fH,&a,&b,&c);//8}printf(MArea=%f\nn,area(floata,floatb,floatc));//9}area(floata,floatb,floatc) //10TOC\o"1-5"\h\z{floats,area_s;//Hs=(a+b+c)/£o; //12area_s=sqrt(s*(s-a)*(s-b)*(s-c));//13returnarea_s; //14)1
222
33333
4444444
555555555
66666666666
7777777777777
66666666666
555555555
4444444
33333
2221⑵程序的功能是:輸出如下圖形(以第30列為對稱軸)程序中有21
222
33333
4444444
555555555
66666666666
7777777777777
66666666666
555555555
4444444
33333
2221出錯行號及正確代碼:#include<stdio.h>voida(inti)//I{intj; //2出錯行號及正確代碼:for(j=l;j<=i;j++) //3printf(u%cn;*);//4for(j=l;j<2*iu++) //5printf(',%dH,i);//6printf(H\nn); //7)main() //8{inti;//9for(i=l;i<=7;i++)a(i); //10for(i=l;i<=6;i++)a(i); //ll⑶下列程序的功能為:輸入N個ー100~100間的整數(shù),若輸入的數(shù)據(jù)不對,則重輸,并計算其中的正整數(shù)之和。#include<stdio.h>#deRneN10intsum(intx,intn){inti=0,s=0;出錯行號及正確代碼:while(i<=n)出錯行號及正確代碼:if(x[i]>0){ s=s+x[i];i++;}returns;}main(){inti=0,s,a[N];do{printf(MNO%d:H,i+1);
scanf(M%dH,&a[i]);if((-100<=a[i])&&(a[i]<=100))i++;elseprintf(Mwrong!inputagain...\nM);}while(i<N);s=sum(a[],N);printf(Hsum=%d\nH,s);2、程序填空(在程序的空白處填入正確的語句,使得程序能正常執(zhí)行并完成規(guī)定的功能)程序的功能為:通過調用ー個判斷素數(shù)的函數(shù)isprimeO,驗證歌德巴赫猜想:即任何大于2的偶數(shù)均可表示為兩個素數(shù)之和。例如:4=2+2(特例,僅此ー個),6=3+3,8=3+5 程序要求輸入任一偶數(shù)x,輸出6到該數(shù)范圍內的各個滿足條件的組合。#include<stdio.h>intisprime(intm){inti,flag=l;for(i=2;i<m;i++)if(m%i==0){【1】;break;(if(flag)return1;elsereturn0;}main(){intn,x,a,b;scanf("%d'',&x);for(n=6;n<=x;n+=2)for(a=3;a<=n/2;a+=2)if([2] ){b=n-a;if([3]){printf(H%d=%d+%d\nH,n,a,b);continue;//退出a循環(huán),判別下ー個n的組合})}3、編程:主函數(shù)已經給出,編寫以下指定的6個函數(shù),在主函數(shù)中依次調用各個函數(shù)分別實現(xiàn)從鍵盤輸入n個整數(shù)、求其中最大值、最小值和平均值,按升序排序,輸出排序前后的n個數(shù)。#include<stdio.h>voidin(intarr口,intn);intave(intarr[],intn);intmax(intarr[],intn);intmin(intarr[],intn);voidsort(intarr[],intn);voidout(intarr[],intn);main()(inta[10],n=10;printf("請輸入!0個整數(shù):H);in(a,n);printf(H\n排序前為:ッ;out(a,n);printf(M\n平均值為:%d'*,ave(a,n));printf("\n最大值為:%d",max(a,n));printf("\n最小值為:%d",min(a,n));三、實驗小結實驗9、函數(shù)⑵ー、實驗目的1、進ー步掌握函數(shù)的定義、調用、返回值以及值傳遞、地址傳遞的不同2、理解并掌握函數(shù)的嵌套調用和函數(shù)的遞歸調用;3、了解全局變量和局部變量、動態(tài)變量、靜態(tài)變量的概念和使用方法;4、熟悉多文件的C程序的運行方法5、掌握包含自定義函數(shù)以及多文件的C程序的調試方法幽評咼人評闋日期二、實驗內容1、程序填空(請?zhí)顚戇m當?shù)姆柣蛘Z句,使程序實現(xiàn)其功能)程序的功能是:從鍵盤接受任意ー個字符串,通過調用函數(shù)ishuiwen()判斷出該字符串是否為回文字符串。#include<stdio.h>#include<string.h>main(){ _LU_chara[80];puts("請輸入ー串字符:");gets(a);if([2] )printf("是回文!\n");elseprintf("不是回文!\n");)intishuiwen(chara[]){intij,flag=l;for(i=0.i=strlen(a)-l;a[il!=,\0,; [3] )if(a[i]!=aU]){flag=O;break;)if(flag)return1;elsereturn0;2、程序調試(糾正程序中存在錯誤,使程序實現(xiàn)其功能)函數(shù)facO是用戶自定義的一個用遞歸方法求任意整數(shù)階乘的函數(shù),在main函數(shù)中通過調用該函數(shù)求出ー個三位整數(shù)n,其每位數(shù)字的階乘之和正好等于該數(shù)本身,即x!+y!+z!=n。例如145=1!+4!+5!。//2//I//3//4//5%//7出錯行號及正確答案://2//I//3//4//5%//7出錯行號及正確答案:if(m==0llm==l)f=l;elsef=f*fac(m-l);returnf;TOC\o"1-5"\h\z)main(){inti,a,b,c; //8for(i=100;i<=999;i++)//9{a=i/100; //10b=i%100/10;//llc=i%10; //12if(i=fac(a)+fac(b)+fac(c))//13printf("%d'',i);//14)}3、編程:⑴編寫程序:根據(jù)下面的要求,按所給的公式計算并輸出結果?!浮?ガ" (/I—m)!m!要求:①分別編寫ー個求階乘n!的函數(shù)fac(n)、ー求組合數(shù)函數(shù)cnm(n,m);②編寫主函數(shù),由鍵盤輸入n和m,通過嵌套調用①中的函數(shù)完成計算。③輸入n和m要給出提示,并檢査n和m的合理性,不合理的輸入應輸出錯誤信息,并不再進行計算。主函數(shù):階乘函數(shù)fac(n):組合數(shù)函數(shù)cnm(n,m)、ムノ加ライ生ノ」’?用也リ-jノJ0加ヲ小rnjuiiacci不ワリ年”小口リ但ロソBQ不"5"ノ,ノIJ=L1Lmain團姒下ワEwqw:fib(n)函數(shù):Fibonacci數(shù)列從第1項到第n項的系數(shù),每行輸出5項,nfib(n)函數(shù):主函數(shù):
4、分析并驗證程序⑴分析以下程序的運行結果,然后運行程序驗證自己的分析是否正確。#include<stdio.h>—voidf(intc){inta=0;分析的結果: 運行的結果:staticintb=0;a++;b++;printf(H%d:a二%d,b=%d\nH,c,a,b);)如有不同,分析原因:main(){inti;for(i=l;i<=3;i++)f(i);⑵分析以下程序的運行結果,然后運行程序驗證自己的分析是否正確。#include<stdio.h>inta=10,b=20;main(){inta=l,c=0;分析的結果:運行的結果:c=a+b;printグ%dj,c);a++;b++;mysum(a,b);如有不同,分析原因:{inta=6,b=6;c=a+b;printグ%dJ,c);}printグ%d\nヽa+b);}intmysum(intxjnty){ a++;b++;printf("%d\n'\a+b);returnx+y;)5、包含多個文件的C程序的運行方法實踐以教材P216的例題7.20為例,練習包含多個文件的C程序的編譯、連接及其運行方法。簡單總結一下多文件的C程序的從編輯到最后運行的主要過程和注意事項。三、實驗小結?評閩人評闋日期實驗10、指針⑴ー、實驗目的1、理解指針和指針變量、內存單元和地址、變量與地址、數(shù)組與地址的關系。2、掌握指針變量的定義和初始化,指針變量的引用方式。3、掌握指針運算符以及指向變量的指針變量的使用。4、初步熟悉指向ー維數(shù)組的指針變量的使用。5、進ー步熟悉和掌握調試程序的方法。二、實驗內容1、讀懂以下各組程序,畫示意圖理解指針的使用,單步執(zhí)行觀察各個變量取值情況,回答相應問題。⑴以下兩個程序的功能是輸入三個整數(shù),按由小到大的順序輸出。#include<stdio.h>〃程序#include<stdio.h>〃程序Amain(){ inta,b,c,*p1,*p2,*p3,*t;scanf("%d,%d,%d”,&a,&b,&c);p1=&a;p2=&b;p3=&c;if(*pl>*p2){t=pl;pl=p2;p2=t;}if(*pl>*p3){t=pl;pl=p3;p3=t;}if(*p2>*p3){t=p2;p2=p3;p3=t;)printf(,,%d,%d,%d\n,',*pI,*p2,*p3);#include<stdio.h>〃程序Bmain(){inta,b,c,*p1,*p2,*p3,t;scanf(M%d,%d,%d\&a,&b,&c);pI=&a;p2=&b;p3=&c;if(a>b){t=*pl;*pl=*p2;*p2=t;}if(a>c){t=*p1;*p1=*p3;*p3=t;}if(b>c){t=*p2;*p2=*p3;*p3=t;}printf("%d,%d,%d\n”,a,b,c);回答:兩個程序的主要不同在于:⑵以下兩個程序的功能是通過指針變量的操作輸出數(shù)組元素的值。#include<stdio.h>voidmain(){inta[5];int*p,i#include<stdio.h>voidmain(){inta[5];int*p,i;printf(nenter5integernumbers:°);for(i=0;i<5;i++)scanf(M%dM,&a[i]);for(p=a;p<(a+5);p++)printf(”%d”,*p);printf("\n");#include<stdio.h>voidmain(){inti,a[5],*p=a;printf(npleaseenter5numbers:'1);for(i=0;i<5;i++)scanf("%d",p++);P=a;for(i=0;iv5;i++,p++)printf("%d",*p);printf("\n");回答:兩個程序的主要不同在于:2、程序改錯調試下列程序的功能為:通過調用函數(shù)實現(xiàn)對所輸入的任意兩個整數(shù),交換它們的值。程序中有三處錯誤。#include<stdio.h>〃//2//3//4Z/5〃//2//3//4Z/5{int*p;*p=*pl;*pl=*p2;*p2=*p;)main()出錯行號及正確代碼:{inta,b;Z/7出錯行號及正確代碼:scanf(M%d%dM,&a,&b);//8printf(ua=%d\tb=%d\nM,a,b);//9swap(&a,&b);//IOprintf(Ma=%d\tb=%d\nH,a,b);//H)3、程序填空下列程序的功能為:通過指針變量的自增運算,掃描ー維數(shù)組中全部元素的地址,并引用它們各自的值,同時對數(shù)組中的正整數(shù)求和。includenstdio.hM#defineN10main(){inti,k,a[N],sum,count,*p;〃所有變量和數(shù)組a的基類型都是intcount=sum=0;
do{printfC'inputk:\iT);scanf("%d",&k);/Z總共要求輸入k個數(shù)}while(k<=0llk>N); //直到型循環(huán)森保OWk近NprintfCinputa[0]~a[%d]:\n",k-l);for(p=a;p<a+k;p++)/Z指針p指向數(shù)組a的首地址,p依次求出后繼值{scanf("%d",[1] /Z此處的p等價于&a[i]if([2] ) //引用指針變量p所指變量的值{sum+=*p;/Z指針p所指變量?p的值>0者相加count++;//正整數(shù)個數(shù)統(tǒng)計)}【3】 ; /Z指針復位,重新指向數(shù)組a的首地址while(p<a+k)printfC%-5d?\L41); /Z先執(zhí)行?p,取出所指變量的值,再指向數(shù)組的下一元素printf(M\nNumberofabove>0is:%d\nu,count);printfCSumof>0is:%d\nM,sum);上機前分析結果:實際上機結果:4、程序調試分析:先分析程序運行結果,然后通過單步執(zhí)行方式,觀察每ー步執(zhí)行情況及運行結果。⑴(提示:理解?上機前分析結果:實際上機結果:#include<stdio.h>main(){inta[]={l,3,5,7,9},*p=a;printf(H%dM,(*p++));printf(''%d'',(*++p));printf(M%d\nH,(*++p)++);上機前分析結果:實際上機結果:⑵(提示:理解指針變量自加的作用,指針變量的值與指針變量所指向變量的值的區(qū)別)上機前分析結果:實際上機結果:{inta[10]={1,2,3,4,5,6,7,8,9,10};int*p;for(p=a;p<a+10;p++){printf(Maddress=%x\tH,p);printfCvalue二%d\n'',*p);}printfC'%d\t”,p);printfC%d\t",*p);)回答以下幾個問題:①修改指針變量值的輸出格式,即把程序中的printf("address=%x\t”,p);改為printf("address=%d\t",p);?重新運行程序,觀察結果,這樣是否更清楚?(提示:格式符%x是以16進制整數(shù)輸出,\t是轉義字符)②程序運行后最后一行顯示的數(shù)據(jù)是哪個單元的數(shù)據(jù)?畫一張圖來看看;能否用?p=10;對這個單元賦值?③將程序中所有的int換成iloat,數(shù)據(jù)輸出格式改為%f,觀察指針變量的變化規(guī)律:這次相鄰地址值相差多少?通過以上,你對指針變量的含義理解了嗎?指針變量++(如p++)是指針地址值加1嗎?④如果只將程序中的float*p;改為int*p;編譯出現(xiàn)什么警告?說明什么?三、實驗小結實驗三、實驗小結實驗11、指針⑵磔評閱人評閱日期ー、實驗目的1、進ー步熟悉和掌握指向變量的指針變量、指向ー維數(shù)組的指針變量的應用2、掌握指向字符數(shù)組的指針變量的應用;3、熟悉指針數(shù)組、指向指針的指針變量的應用;上機前分析結果:實際上機結果:157上機前分析結果:實際上機結果:1575、進ー步掌握程序調試的方法。二、實驗內容1、程序改錯調試⑴下列程序的功能為:統(tǒng)計已知字符串中數(shù)字符的個數(shù)。程序中有兩處錯誤。#include<stdio.h>intdigits(char*s)//I {intc=0; //2 出錯行號及正確代碼:while(s) 〃3{if(*s>=0&&*s<=9)//4C++;//5TOC\o"1-5"\h\zs++; //6)returnc; //7}main() 〃8{chars[80]; //9printf("請輸入一行字符\n”);//10gets(s);//llprintf("數(shù)字字符長度是:%d\n",digits(s));//12⑵下面程序的功能是:通過調用函數(shù)fun找出ー維數(shù)組元素中最大的值和它所在的下標,最大值的和它所在的下標通過形參指針P和q傳回。數(shù)組元素中的值在主函數(shù)中賦予,主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標。程序中有處錯誤。TOC\o"1-5"\h\z#include<stdio.h> //Ivoidfun(inta[],intn,int*p,int*q) //2{inti; //3*p=a[〇]; //4出錯行號及正確代碼:*q=O; //5出錯行號及正確代碼:for(i=l;i<n;i++) //6if(*p<a[i]) m{ *p=a[i]; 〃8q=i; //9)}main() //IO{inti,x[50],max,index,n=10; //llfor(i=0;i<n;i++) //12{scanf(M%dM,&x[i]); //13printf(M%4dn,x[i]); //14)fun(x,n,max,index); //15printf("\nMax二%d,Index=%d\n",max,index);〃16}2、程序填空⑴以下程序的作用是掃描字符數(shù)組a和字符數(shù)組b,并輸出對應位置相同的字符。#include<stdio.h>main(){chara[10]二''language",bロニ"programe";【1】;intk;pl=a;p2=b;for(k=0;k<8;k++)if(*(pl+k)ニニ [2】)printf("%c\n",*(pl+k));)⑵函數(shù)voiddelete-blank(char*p)的功能為將指針p所指向的字符串中的空格給去掉。#include<stdio.h>#defineN80main(){voiddelete_blank(char*p);
chara[N],i;char*p;【3】 ;gets(a);14】;//void調用delete-blank(char*p)函數(shù)puts(a);}voiddelete_blank(char*p){char*q;q=p;while(*q!=,\0,){if(*q!ゴ’)【5】 ;//p指針所指向的內存單元賦值,并將p指針后移q++;)*p=ヘ〇’;}⑶以下兩段程序是分別用數(shù)組、指針來實現(xiàn)的統(tǒng)計ー個字符子串sunstr在ー個字符串str中出現(xiàn)的次數(shù)(如:字符子串boy在字符串thatboyisagoodboy!中出現(xiàn)2次)。請?zhí)羁找詫崿F(xiàn)所要求的功能(注意對比!)。#include<stdio.h>//(1)(用數(shù)組實現(xiàn))main(){charstr[100],substr[10];inti,j,k,count=0;printf("請輸入字符串:str=");gets(str);printf("請輸入字符子串:substr=M);gets(substr);for(i=0; 【6];i++) 〃判斷是否到了字符串str的尾for([7],k=O;substr|kl==str|j|;j++,k++)〃判斷substr是否是str的子串if(substr[k+l]==\O,){ 【8】;〃如果substr是str的子串,累計個數(shù)break;}printf(n%dM,count);)#include<stdio.h>// #include<stdio.h>// ⑵(用指針實現(xiàn))main(){charstr[100],substr[10],*p=str,*q=substr,*w;inti,j,k,count=0;printf("請輸入字符串:st=)gets(p);printf("請輸入字符子串:substr=n);gets(q);for(吟tr; 【9] ;P++)for(__[K)J__,q=substr;*q==*w;q++,w++)if(*(q+l)==ヘ〇'){ LIU;break;)printf("字符子串%s出現(xiàn)了%d次\n",substr,count);3、程序調試分析:先分析程序運行結果,然后通過單步執(zhí)行方式,觀察每ー步執(zhí)行情況及運行結果。⑴(知識點:指向二維數(shù)組的指針變量,畫圖理解!)#include<stdio.h>move(int*pointer){intij,t;for(i=0;i<3;i++)for(j=i;j<3y++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;)}main(){inta[3][3]={l,2,3,4^,6,7,8,9),*p=a[0],i;move(p):printf("調用函數(shù)后數(shù)組的各元素為:\n");for(i=0;i<3;i++)printf(H%3d%3d%3d\nM,a[i][0],a[i][l],a[i][2]);}(2)(知識點:指針數(shù)組、指向指針的指針變量,畫圖理解!)#include<stdio.h>main(){char*str[]={,,EnglishH,HMathM,MMusicM,HComputerH},**q;inti;q=str;for(i=0;i<4;i++)printf(,,%s\n,\*(q++));)4、編程上機前分析結果:實際上機結果:上機前分析結果:實際上機結果:⑴分別用選擇法、冒泡法編寫ー個排序的函數(shù)voidmysort(int*p,intn)。在主調函數(shù)中通過調用該函數(shù),對指定的n個整數(shù)進行升序排列并輸出。#include<stdio.h>main(){voidmysort(int*p,intn);inta[10],i;printf("輸入10個待排序的數(shù)for(i=0;i<10;i++){printf(Ma[%d]=H,i);scanf(M%dH,&a[i]);}mvsort(a,10);pfintf("排序后的10個數(shù):也”);for(i=0;i<10;i++)printf(H%3dM,a[i]);}voidmysort(int*p,intn)〃選擇法實現(xiàn)的排序{inti,j,k,t;voidmysort(int*p,intn) 〃冒泡法實現(xiàn)的排序{inti,j,t;))intishuiw(char*p)⑵編寫一個專門用于判斷ー個字符串是否為回文字符串的函數(shù)intishuiw(char*p),在主函數(shù)中接受任意ー串字符,通過調用該函數(shù),給出是否是回文的結論。intishuiw(char*p)#include<stdio.h>main(){intishuiw(char*p);chara[10],*p=a;printf("輸入字符串:"); ▲</”ゝーーHX.
⑶編程實現(xiàn)以下功能:在主函數(shù)中由鍵盤輸入10個按升序排列的整數(shù)存放在ー維數(shù)組a中,通過調用以下幾個自定義函數(shù)分別輸出數(shù)組a、將從鍵盤輸入的ー個整數(shù)x插入到數(shù)組a使其依然有序、輸出數(shù)組ao要求:定義以下幾個函數(shù)(注:函數(shù)中形參指針p用來接收實參數(shù)組名a),按上述要求依次調用它們以實現(xiàn)所要求的功能。①voidmyout(int*p,intn):該函數(shù)用于輸出含有n個整數(shù)的數(shù)組;②intmyinsertdnt*p,intn,intx):該函數(shù)用于將整數(shù)x插入到ー個按升序拝列的包含n個數(shù)組元素的數(shù)組中,并返回插入后數(shù)組元素的個數(shù)。voidmyout(int*P,intn)#include<stdio.h>main(){voidmyout(int*p,intn);intmyinsert(int*p,intn,intx);inta[ll],i,n=10,x;printf(”請輸入10個按升序排列的整數(shù):");intmyinsert(int*p,intn,intx)for(i=0;i<n;i++)intmyinsert(int*p,intn,intx)scanf("%d”,&a[i]);printf("數(shù)組a中的元素為:\nM);myout(a,n);printf(”請輸入一個待插入的整數(shù)x=");scanf("%d",&x);n=myinsert(a,n,x);printf("插入x后數(shù)組a中的元素為:\n”);myout(a,n);a[W……統(tǒng)計共有多少個整數(shù),并輸出這些數(shù)。⑸(本題選做)若有兩個已經按升序排列的數(shù)列a:1,7,9,11,13,15,17,19和數(shù)列b:2,4,6,8,10.現(xiàn)要將這兩個數(shù)列合并存放到c數(shù)列中,插入后的c數(shù)列仍按升序排列,要求通過指針完成。三、實驗小結ー、實驗目的ー、實驗目的實驗12、結構體⑴蜘評闋人評闋日期1、掌握結構類型的聲明、結構體類型變量和結構體類型數(shù)組的定義和使用;2、熟悉利用結構變量名、結構指針引用結構體成員的方法;二、實驗內容1、分析以下各個程序的執(zhí)行結果,并與運行結果進行比較,理解結構體類型數(shù)組的使用。歯評闋人評闋日期分析的纟運行的4(1)分析的纟運行的4{charname[12];intday;I;main(){structmyweekweek[7]={MMonday,\l,,,l\iesdayH,2,HWednesdayH3,HThursdayH,4,nFirdayM,5,MSatadayn,6,MSundayH,7};printf(H%c\nH,week[2J.namell]);分析的結果:運行的結果:⑵比較以下分析的結果:運行的結果:①structstu{charnum[5];
floatscore[3];};main(){structstua[3]={{n0r,,60,70,80},{M02H,70,75,80}4H03H,90,95,92}},*p=a;inti;floatsum=0;for(i=0;i<3;i++)sum=sum+p->score[i];printf(H%6.2f\nv\sum);分析的結果:運行的結果:分析的結果:運行的結果:②structstu{charnum[5];floatscore[3];};main(){structstua[3]={{n0r\60,70,80},{H02M,70,75,80}4n03n,90,95,92}};inti;floatsum=0;for(i=0;i<3;i++)sum=sum+a[i].score[i];printf(,,%6.2f\nH,sum);分析的結果:運行的結果:#include<stdio.h>struct分析的結果:運行的結果:{intnum;charname[10];intage;);voidfun(structstu*p)structstustudents[3]={{9801,HZhangH,20},{9802;structstustudents[3]={{9801,HZhangH,20},{9802;,Wang,,,19},{9803,,,ZhaoM,18}};fun(students+2);2、程序改錯調試:下列程序的功能為:學生姓名(name)和年齡(age)存于結構體數(shù)組person中,函數(shù)fun的功能是:找出年齡最小的那名學生并輸出該學生的姓名和成績。程序中有三處錯誤。#include<stdio.h>structstud出錯行號及正確代碼:{charname[20];intage;出錯行號及正確代碼:);fun(structstudperson[],intn)//I{intmin,i;111min=0;//3for(i=0;i<n;i++) //4TOC\o"1-5"\h\zif(person[i]<person[minj)min=i;1/5return(person); //6)main(){structstuda[]={{nZhao,\21},{,,QianM,20},{,,SunM,19}4nLr\22)}; //7intn=4; //8structstudminpers;119minpers=fun(a,n);//10printf(M%s是年齡小者,年齡是:%d\n'',,minpers.age);//ll)3、程序填空:以下程序的功能是:對已經存在的幾本圖書,任意輸入一個書名,調用函數(shù)search。進行査詢,如果査到了,顯示出該書的單價,否則顯示“Nofound!”。
#include<stdio.h>#include<string.h>structbook{charname[10];intprice;}bk[5]={{naaan,10},{,,bbb,\20}4Hccc,\30},{,,ddd,,,40},{,,eeeH,50}};main(){voidsearch(structbookchar*c);charshu[10]; 待査圖書名?/printf(Minputthesearchname:\nu);gets(shu);search(【1]);}search(structbook*p,char*c)#include<stdio.h>#include<string.h>#include<stdio.h>#include<string.h>#defineN3 〃學生總人數(shù)#defineM3 〃每個學生的課程數(shù)structStudent{intnum;charname120];floatscore[3];floattotal;}stu[N];for(i=0;i<5;i++,p++)TOC\o"1-5"\h\zif(strcmp(p>>name,【21 )==0){printf(Hpriceis%d\nM,[3] );break;}if([41 )p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)用設備運輸合同范例
- 俱樂部短期合同范本
- 冰箱維修合同范本
- 出租證件合同范本
- 天津工人用工合同范本
- 單位借調合同范本
- 個人車輛寄售合同范本
- 代辦正式就業(yè)合同范本
- 前臺用工合同范例
- 中藥飲代煎服務合同范本
- 《綠色建筑設計原理》課件
- 中醫(yī)館裝修合同范本
- 學習與科技的融合主題班會
- 《直播銷售》課件-項目一 認識直播與直播銷售
- 2025年南京科技職業(yè)學院高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2025-2030年中國航空配餐行業(yè)市場發(fā)展現(xiàn)狀及投資前景規(guī)劃研究報告
- 新課標背景下的跨學科學習內涵、設置邏輯與實踐原則
- 母嬰分離產婦的護理
- 2025年全國高考體育單招政治時事填空練習50題(含答案)
- 2025教科版一年級科學下冊教學計劃
- 人教版高一上學期數(shù)學(必修一)期末考試卷(附答案)
評論
0/150
提交評論