![內(nèi)蒙古民族大學(xué)C語言程序設(shè)計實(shí)驗(yàn)指導(dǎo)書2014_第1頁](http://file4.renrendoc.com/view12/M00/18/1A/wKhkGWXipPCAXiYVAADkERiGavg475.jpg)
![內(nèi)蒙古民族大學(xué)C語言程序設(shè)計實(shí)驗(yàn)指導(dǎo)書2014_第2頁](http://file4.renrendoc.com/view12/M00/18/1A/wKhkGWXipPCAXiYVAADkERiGavg4752.jpg)
![內(nèi)蒙古民族大學(xué)C語言程序設(shè)計實(shí)驗(yàn)指導(dǎo)書2014_第3頁](http://file4.renrendoc.com/view12/M00/18/1A/wKhkGWXipPCAXiYVAADkERiGavg4753.jpg)
![內(nèi)蒙古民族大學(xué)C語言程序設(shè)計實(shí)驗(yàn)指導(dǎo)書2014_第4頁](http://file4.renrendoc.com/view12/M00/18/1A/wKhkGWXipPCAXiYVAADkERiGavg4754.jpg)
![內(nèi)蒙古民族大學(xué)C語言程序設(shè)計實(shí)驗(yàn)指導(dǎo)書2014_第5頁](http://file4.renrendoc.com/view12/M00/18/1A/wKhkGWXipPCAXiYVAADkERiGavg4755.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
程序設(shè)計基礎(chǔ)基礎(chǔ)實(shí)驗(yàn)指導(dǎo)書機(jī)械工程學(xué)院內(nèi)蒙古民族大學(xué)2014年02月目錄實(shí)驗(yàn)一熟悉C語言編程環(huán)境 1實(shí)驗(yàn)二基本數(shù)據(jù)處理 8實(shí)驗(yàn)三計算分段函數(shù) 11實(shí)驗(yàn)四指定次數(shù)的循環(huán) 15實(shí)驗(yàn)五分支結(jié)構(gòu)程序設(shè)計 18實(shí)驗(yàn)六循環(huán)結(jié)構(gòu)程序設(shè)計(一) 24實(shí)驗(yàn)七循環(huán)結(jié)構(gòu)程序設(shè)計(二) 29實(shí)驗(yàn)八循環(huán)結(jié)構(gòu)程序設(shè)計(三) 34實(shí)驗(yàn)九循環(huán)結(jié)構(gòu)程序設(shè)計(四) 39實(shí)驗(yàn)十函數(shù)程序設(shè)計(一) 43實(shí)驗(yàn)十一函數(shù)程序設(shè)計(二) 50實(shí)驗(yàn)十二一維數(shù)組程序設(shè)計 57實(shí)驗(yàn)十三二維數(shù)組程序設(shè)計 63實(shí)驗(yàn)十四字符數(shù)組程序設(shè)計 70實(shí)驗(yàn)十五指針程序設(shè)計 76實(shí)驗(yàn)十六結(jié)構(gòu)程序設(shè)計 87實(shí)驗(yàn)十七文件 93實(shí)驗(yàn)一熟悉C語言編程環(huán)境【實(shí)驗(yàn)?zāi)康摹?、熟悉TC運(yùn)行環(huán)境2、練習(xí)簡單C程序的編寫3、熟練掌握C程序的上機(jī)運(yùn)行步驟4、能夠編寫簡單的C程序。5、掌握程序的調(diào)試方法,能夠找出并改正程序中的語法錯誤。二.實(shí)驗(yàn)內(nèi)容:1.編寫課本例題1.2,例題1.42.編寫課后習(xí)題1.10,將答案寫在課本上在TC環(huán)境中輸入上面的代碼后,先編譯、連接,再保存,然后再運(yùn)行。具體操作步驟如下所示:(1)編譯(2)連接(3)保存F2(4)運(yùn)行CTRL+F9(5)運(yùn)行結(jié)果ALT+F5按任意鍵返回注意:1、第(1)步和第(2)步可以合起來操作,使用快捷鍵F92、程序比較大時,最好邊輸入代碼,邊保存,以防止意外情況的發(fā)生。二、試著編寫下列程序【例1-1】設(shè)計一個程序,程序運(yùn)行后,在屏幕上顯示如下圖形*****************hello*****************源程序:#include<stdio.h>/*編譯預(yù)處理*/main()/*定義主函數(shù)main()*/{ printf("**************\n");/*調(diào)用printf函數(shù)輸出*/ printf("**\n"); printf("*hello*\n"); printf("**\n"); printf("**************\n");}J舉一反三【實(shí)驗(yàn)1】課本例題1.2,1.4,課后習(xí)題1.10?!緦?shí)驗(yàn)2】如何在屏幕上顯示下列圖形?*********實(shí)驗(yàn)二基本數(shù)據(jù)處理【實(shí)驗(yàn)?zāi)康摹?、掌握算術(shù)表達(dá)式和賦值表達(dá)式的使用2、掌握基本輸出函數(shù)的使用3、能夠編寫簡單的數(shù)據(jù)處理程序【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例2-1】求正方形的面積和周長源程序:#include<stdio.h>main(){ inta=6,zhou,mian;/*用類型名int定義三個基本型整型變量*/ zhou=4*a;/*計算周長*/ mian=a*a;/*計算面積*/ printf("周長=%d,面積=%d\n",zhou,mian);/*用printf函數(shù)輸出整型數(shù)格式控制為:%d*/}運(yùn)行結(jié)果:周長=24,面積=36J舉一反三【實(shí)驗(yàn)1】求正方形的周長和面積,正方形的周長由鍵盤輸入?!纠?-2】任意輸入一個華氏溫度求對應(yīng)的攝氏溫度。計算公式如下:,式中:C表示攝氏溫度,f表示華氏溫度。源程序:#include<stdio.h>main(){ doublef,c;/*定義兩個雙精度的實(shí)型數(shù)*/printf(“Enterf:”);/*輸入提示*//*調(diào)用scanf函數(shù)給雙精度的實(shí)型變量賦值,格式控制為%lf,變量名前要加地址操作符&*/scanf("%lf",&f); c=5*(f-32)/9;/*根據(jù)公式求攝氏度*/ printf("\nf=%f,c=%f\n",f,c);}運(yùn)行結(jié)果:Enterf:80f=80.000000,c=26.666667Enterf:100f=100.000000,c=37.777778J舉一反三【實(shí)驗(yàn)2】任意輸入兩個基本型的整型數(shù),其中一個為正數(shù),另一個為負(fù)數(shù),輸出它們的余數(shù)。F提示:取余操作符:%實(shí)驗(yàn)三計算分段函數(shù)【實(shí)驗(yàn)?zāi)康摹?、使用if語句編寫簡單分支結(jié)構(gòu)程序。2、正確書寫關(guān)系表達(dá)式【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例3-1】輸出a=3,b=9中大的數(shù)。源程序:#include"stdio.h"main(){ inta=3,b=9,max;/*使用if-else分支結(jié)構(gòu)*/ if(a>b) max=a; else max=b; printf("max=%d\n",max);}J舉一反三【實(shí)驗(yàn)1】任意輸入一個三位數(shù),輸出這個三位數(shù)的百位、十位和個位,并且計算十位百位個位的和?!緦?shí)驗(yàn)2】求1到100的累加和【例3-2】計算分段函數(shù),(x≥0)3x3+1(x<0)源程序:#include"stdio.h"#include"math.h"/*程序中調(diào)用了數(shù)學(xué)庫函數(shù),需包含頭文件math.h*/main(){ doublex,y;printf(“Enterx:”); scanf("%lf",&x); if(x>=0) y=sqrt(x);/*調(diào)用開方函數(shù)sqrt()計算*/ else y=3*pow(x,3)+1;/*調(diào)用冪函數(shù)pow()計算*/ printf("\nx=%.2lf,y=%f\n",x,y);/*%.2lf保留兩位小數(shù)輸出*/}運(yùn)行結(jié)果:Enterx:3x=3.00,y=1.732051Enterx:-4x=-4.00,y=-191.000000J舉一反三【實(shí)驗(yàn)3】編寫程序,輸入x,利用分段函數(shù),計算并輸出y值。|x|(x≤0)y=ex(x>0)F提示:需要調(diào)用求實(shí)型數(shù)絕對值函數(shù)fabs和指數(shù)函數(shù)exp。實(shí)驗(yàn)四指定次數(shù)的循環(huán)【實(shí)驗(yàn)?zāi)康摹?、熟悉掌握for語句的使用。2、熟悉掌握指定次數(shù)的循環(huán)程序設(shè)計方法?!緦?shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例4-1】求源程序:#include"stdio.h"main(){/*變量sum用來放累加和,和值從0開始;i用來取1~5中的數(shù),同時也控制循環(huán)次數(shù)*/ inti,sum=0; for(i=1;i<=5;i++)/*循環(huán)體執(zhí)行5次*/ sum=sum+i;/*反復(fù)累加5次i的值*/ printf("sum=%d\n",sum);}運(yùn)行結(jié)果:sum=15【實(shí)驗(yàn)1】、求三個數(shù)里面的最大數(shù),三個數(shù)由鍵盤輸入J舉一反三【例4-2】求1-2+3-4+。。。。。。n的值源程序:#include<stdio.h>main(){ inti,f=1,n,sum=0;/*變量f用來存放正負(fù)號*/ printf("Entern:"); scanf("%d",&n); for(i=1;i<=n;i++) {sum=sum+i*f; f=-f;/*改變正負(fù)號*/ }printf("\nsum=%d\n",sum);}運(yùn)行結(jié)果:Entern:5sum=3J舉一反三【實(shí)驗(yàn)2】求的值【例4-3】求1×2×3×4×5的積。(即求5!)源程序:#include<stdio.h>main(){ inti,t=1;/*t用來放階乘值*/ for(i=1;i<=5;i++) t=t*i; printf("%d!=%d\n",5,t);}運(yùn)行結(jié)果:5!=120實(shí)驗(yàn)五分支結(jié)構(gòu)程序設(shè)計【實(shí)驗(yàn)?zāi)康摹?.掌握基本輸入輸出函數(shù)、賦值語句的使用方法。2.熟練掌握用嵌套的if語句和switch語句實(shí)現(xiàn)多分支結(jié)構(gòu)程序設(shè)計。3.熟練掌握switch語句中break語句的使用。【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序J舉一反三【實(shí)驗(yàn)1】、有一函數(shù):x(x<10)y=3x-2(10≤x<50)4x+1(50≤x<100)5x(x≥100)輸入x的值,求y的值。【例5-2】輸入十個字符,統(tǒng)計其中的空格、回車和其它字符個數(shù)。源程序:#include<stdio.h>main(){ charch; inti,num1=0,num2=0,num3=0; for(i=1;i<=10;i++) {ch=getchar();/*循環(huán)一次給變量ch賦值一次*/ if(ch=='') num1=num1+1;/*統(tǒng)計空格個數(shù)*/ elseif(ch=='\n') num2=num2+1;/*統(tǒng)計回車個數(shù)*/ else num3=num3+1;/*統(tǒng)計其它字符個數(shù)*/ } printf("空格=%d,回車=%d,其它=%d\n",num1,num2,num3);}J舉一反三【例5-3】輸入x,計算并輸出下列分段函數(shù)y的值。x3(0<x<5)y=lnx(5≤x<10)|x|(x<0)源程序:#include<stdio.h>#include<math.h>main(){ floatx,y;/*定義兩個單精度的實(shí)型變量*/ printf("Enterx:"); scanf("%f",&x);/*給單精度變量賦值,格式控制為:%f*/ if(x>0&&x<5)/*不能表示為:0<x<5*/ y=pow(x,3); elseif(x>=5&&x<10) y=log(x); elseif(x<0) y=fabs(x); printf("\nx=%f,y=%f\n",x,y);}J舉一反三【實(shí)驗(yàn)2】輸入x,計算并輸出下列分段函數(shù)y的值。0(x<0)y=(0≤x<10)4.5x-8.5x(x≥10)【例5-4】任意輸入year,判斷是否是閏年,判斷閏年的條件:能被4整除但不能被100整除,或者能被400整除。源程序:#include<stdio.h>main(){ intyear; printf("Enteryear:"); scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0) printf("yes"); else printf("no");}J舉一反三【實(shí)驗(yàn)3】任意輸入一個數(shù),判斷是否是偶數(shù),是,輸出“yes”;否則,輸出“no”。實(shí)驗(yàn)六循環(huán)結(jié)構(gòu)程序設(shè)計(一)【實(shí)驗(yàn)?zāi)康摹?.熟悉使用while循環(huán)語句的結(jié)構(gòu)、執(zhí)行過程。2.學(xué)會確定循環(huán)條件和循環(huán)體。3.理解死循環(huán)的概念?!緦?shí)驗(yàn)內(nèi)容】試著編寫下列程序1、輸出三位數(shù)中的所有水仙花數(shù)。水仙花數(shù)是指各位數(shù)字的立方和等于其自身的數(shù)。例如,153的各位數(shù)字的立方和是13+53+33=153源程序:#include"stdio.h"#include"math.h"main(){ inti,a,b,c;for(i=100;i<=999;i++) { a=i/100; b=i/10%10; c=i%10;if(pow(a,3)+pow(b,3)+pow(c,3)==i)/*或if(a*a*a+b*b*b+c*c*c==i)第二行命令行去掉*/ printf("%5d",i);}}2、輸入一個整數(shù),求它的位數(shù)以及各位數(shù)字之和。例如,345的位數(shù)是3,各位數(shù)字之和是12。#include"stdio.h"main(){ inti=0,n;printf("Entern:"); scanf("%d",&n); do { n=n/10; i++;/*i用來統(tǒng)計位數(shù)*/ }while(n);/*while(n)等價于while(n!=0)*/ printf("i=%d\n",i);【例6-1】求1+2+3+4+5的和。源程序:#include"stdio.h"main(){ inti=1,sum=0;/*變量賦初值*/ while(i<=5)/*循環(huán)的終止條件,每次進(jìn)入循環(huán)體先判斷*/ { sum+=i; i++;/*循環(huán)變量增量*/ } printf("i=%d,sum=%d\n",i,sum);}運(yùn)行結(jié)果:i=6,sum=15J舉一反三【實(shí)驗(yàn)1】求1-2+3-4+5的和?!纠?-2】輸入一個正實(shí)數(shù)eps,計算并輸出下式的值,直到最后一項(xiàng)的絕對值小于eps。(例如程序運(yùn)行后,eps被輸入0.0001)。源程序:#include"stdio.h"#include"math.h"main(){ doubleeps,sum=0,f=1,t=1; intn=1; printf("Entereps:"); scanf("%lf",&eps);/*輸入一個特別小的數(shù)*/ while(fabs(t)>=eps) { sum=sum+t; f=-f;/*正負(fù)號轉(zhuǎn)變*/ n=n+3;/*控制分母*/ t=f/n; } printf("\nsum=%f\n",sum);}運(yùn)行結(jié)果:Entereps:1e-4sum=0.835599【例6-3】從鍵盤輸入一批學(xué)生的成績(以負(fù)數(shù)為結(jié)束標(biāo)志),計算平均分,并統(tǒng)計不及格成績的個數(shù)。源程序:#include<stdio.h>main(){ floatgrade,ave=0;/*變量ave用來存放總成績和平均分*/ intn=0,m=0; printf("Entergrade:"); scanf("%f",&grade);/*輸入第一個成績*/ while(grade>=0)/*輸入數(shù)據(jù)大于等于0時,執(zhí)行循環(huán)*/ { ave=ave+grade; n++;/*統(tǒng)計學(xué)生人數(shù)*/ if(grade<60)m++;/*統(tǒng)計不及格人數(shù)*/ scanf("%f",&grade);/*輸入一個新數(shù)據(jù)為下一次循環(huán)做準(zhǔn)備*/ } ave=ave/n; printf("平均分=%f,不及格人數(shù)=%d\n",ave,m);}J舉一反三【6-3】讀入一批正整數(shù)(以零或負(fù)數(shù)為結(jié)束標(biāo)志),求其中的奇數(shù)和。實(shí)驗(yàn)七循環(huán)結(jié)構(gòu)程序設(shè)計(二)【實(shí)驗(yàn)?zāi)康摹?.熟練掌握do-while循環(huán)語句的使用。2.學(xué)會確定循環(huán)條件和循環(huán)體。3.掌握while循環(huán)語句和do-while循環(huán)語句的區(qū)別?!緦?shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例7-1】求1+3+5+7+。。。。。。+n的和。源程序:#include"stdio.h"main(){ inti=1,n,sum=0;printf("Entern:"); scanf("%d",&n); do { sum+=i; i++; }while(i<=n);/*先執(zhí)行一次循環(huán)體,在判斷循環(huán)終止條件*/ printf("sum=%d,i=%d\n",sum,i);}運(yùn)行結(jié)果:sum=15,i=6J舉一反三【7-1】求的值。F提示:n為任意的一個正整數(shù)。【例7-2】輸入一個整數(shù),求它的位數(shù)。例如,123的位數(shù)是3。源程序:#include"stdio.h"main(){ inti=0,n;printf("Entern:"); scanf("%d",&n); do { n=n/10; i++;/*i用來統(tǒng)計位數(shù)*/ }while(n);/*while(n)等價于while(n!=0)*/ printf("i=%d\n",i);}J舉一反三【7-2】輸入一個整數(shù),求它的位數(shù)以及各位數(shù)字之和。例如,345的位數(shù)是3,各位數(shù)字之和是12。JJ試著用do-while循環(huán)編寫實(shí)驗(yàn)六中的程序?qū)嶒?yàn)八循環(huán)結(jié)構(gòu)程序設(shè)計(三)【實(shí)驗(yàn)?zāi)康摹?.熟練使用for、while和do-while語句,理解它們的相同和不同之處。2.熟練掌握break和continue語句的使用?!緦?shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例8-1】輸出三位數(shù)中的所有水仙花數(shù)。水仙花數(shù)是指各位數(shù)字的立方和等于其自身的數(shù)。例如,153的各位數(shù)字的立方和是13+53+33=153源程序:#include"stdio.h"#include"math.h"main(){ inti,a,b,c;for(i=100;i<=999;i++) { a=i/100; b=i/10%10; c=i%10;if(pow(a,3)+pow(b,3)+pow(c,3)==i)/*或if(a*a*a+b*b*b+c*c*c==i)第二行命令行去掉*/ printf("%5d",i);}}J舉一反三【8-1】輸出三位數(shù)中能夠被5整除的數(shù)?!纠?-2】求Sn=a+aa+aaa+aaaa+…其中a是一個數(shù)字,n由鍵盤輸入。例,a為2,n為5時Sn=2+22+222+2222+22222。源程序:#include"stdio.h"main(){ longi,a,n,sum=0,t; scanf("%ld%ld",&a,&n); t=a;/*用t來取每一項(xiàng)*/ for(i=1;i<=n;i++) { sum+=t; t=t*10+a; } printf("sum=%ld\n",sum);}J舉一反三【8-2】求的和。F提示:n為任意的一個正整數(shù)?!?-3】輸入一個正整數(shù),判斷是否為素數(shù)。源程序:#include<stdio.h>#include<math.h>main(){intx,k;scanf("%d",&x);k=sqrt(x);for(i=2;i<=k;i++)if(x%i==0)break;if(i>k)printf("%d是素數(shù)",x);elseprintf("no");}F提示:能夠被1和它本身整除的數(shù)是素數(shù)。例:2、3、5、7、11······等。1不是素數(shù)。判斷一個數(shù)n是否為素數(shù),可以用2~(n-1)或2~或2~范圍的數(shù)一個一個去除n,n一旦被這范圍的某一個數(shù)除盡,則n就是非素數(shù)。J舉一反三【8-3】求1+2+3+4+5+·······和值大于10為止。用break語句編寫程序。實(shí)驗(yàn)九循環(huán)結(jié)構(gòu)程序設(shè)計(四)【實(shí)驗(yàn)?zāi)康摹?.進(jìn)一步掌握用三種循環(huán)編寫程序的方法。2.熟練掌握嵌套循環(huán)程序設(shè)計。【實(shí)驗(yàn)內(nèi)容】【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例9-1】運(yùn)行下列程序使之輸出圖形********************源程序:#include"stdio.h"main(){ inti,j,k; for(i=1;i<=4;i++)/*控制行*/ { for(j=1;j<=i-1;j++)/*控制空格*/ printf(""); for(k=1;k<=5;k++)/*控制*號*/ printf("*"); printf("\n");/*一行輸出完畢輸出回車來控制換行*/ }} J舉一反三【9-1】運(yùn)行下列程序使之輸出圖形****************【例9-2】輸出100~200之間的所有素數(shù)的平方和。源程序:#include"stdio.h"main(){ inti,j,sum=0; for(i=100;i<=200;i++) { for(j=2;j<i;j++) if(i%j==0)break; if(j==i)sum+=i*i; } printf("%d",sum);}J舉一反三【9-2】輸出100~200之間的所有非素數(shù)的開方和。實(shí)驗(yàn)十函數(shù)程序設(shè)計(4學(xué)時)【實(shí)驗(yàn)?zāi)康摹?.熟悉掌握函數(shù)的定義和調(diào)用。2.掌握函數(shù)的實(shí)參、形參和返回值的概念及使用。【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例10-1】輸出如下圖形**********hello**********源程序:#include"stdio.h"main(){ star(); fun(); star();}intstar()/*定義函數(shù)*/{ printf("**********\n");}intfun()/*定義函數(shù)*/{ printf("hello\n");}J舉一反三【實(shí)驗(yàn)一】輸出如下圖形********************hello********************【實(shí)驗(yàn)二】從鍵盤輸入一個正整數(shù)n,計算n!的值。要求定義和調(diào)用函數(shù)fac(n),計算n!。源程序:#include“stdio.h”intfac(intm){/***************begin****************//***************end******************/}intmain(){intn;doublef;printf(“inputn:”);scanf(“%d”,&n);f=fac(n);printf(“%d!=%f\n”,n,f);}【例10-3】輸入x,輸出相應(yīng)的y值。要求定義和調(diào)用函數(shù)fun,實(shí)現(xiàn)下面的分段函數(shù)。0(x=0)y=sin(x)(x>0)|x|(x<0)源程序:#include"stdio.h"#include"math.h"floatfun(floatx)/*在自定義函數(shù)體中可以有若干個return語句,但只有一個起作用*/{ if(x==0) return0; elseif(x<0) returnfabs(x); else returnsin(x);}main(){ floatx,y; printf("Enterx:"); scanf("%f",&x); printf("\n"); y=fun(x); printf("y=%f\n",y);}J舉一反三【試驗(yàn)三】輸入x,輸出相應(yīng)的y值。要求定義和調(diào)用函數(shù)fun,實(shí)現(xiàn)下面的分段函數(shù)。2x-1(x=0)y=(x>0)cos(x)(x<0)實(shí)驗(yàn)十一一維數(shù)組程序設(shè)計【實(shí)驗(yàn)?zāi)康摹?.掌握一維數(shù)組的定義及初始化2.掌握一維數(shù)組的賦值及引用3.掌握一維數(shù)組的輸入及輸出方法4.掌握與一維數(shù)組有關(guān)的算法【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例11-1】輸出Fibonacci數(shù)列前20項(xiàng)中的偶數(shù)之和。已知前兩項(xiàng)的值分別為1,1。從第三項(xiàng)開始后一項(xiàng)是前兩項(xiàng)之和。源程序:#include"stdio.h"main(){ longf[20]={1,1},i,sum=0;/*定義一個一維數(shù)組*/ for(i=2;i<=19;i++) f[i]=f[i-1]+f[i-2];printf("輸出Fibonacci數(shù)列前20項(xiàng):");for(i=0;i<=19;i++)printf("%5d",f[i]); for(i=0;i<=19;i++) if(f[i]%2==0) sum+=f[i]; printf("\nsum=%ld\n",sum);}J舉一反三【實(shí)驗(yàn)一】輸出Fibonacci數(shù)列前20項(xiàng)中,下標(biāo)為奇數(shù)的元素之和。已知前兩項(xiàng)的值分別為1,1。從第三項(xiàng)開始后一項(xiàng)是前兩項(xiàng)之和(和值為10945)?!纠?1-2】任意輸入10個數(shù),輸出其中的最大數(shù);最大數(shù)與第1位置上的數(shù)互換后,輸出10個數(shù)。源程序:#include"stdio.h"main(){ inta[10],max,i,t,p;/*p用來存放最大數(shù)的位置*/ printf("輸入10個數(shù):\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); max=a[0];p=0;/*10個數(shù)中的任意一個數(shù)都可以假設(shè)是最大數(shù),記下最大數(shù)的下標(biāo)*/ for(i=1;i<10;i++) if(max<a[i]) {max=a[i];p=i;} t=a[0];a[0]=a[p];a[p]=t;/*最大數(shù)與第1位置上的數(shù)互換*/ printf("max=%d\n",max); printf("輸出調(diào)換之后的數(shù)組:"); for(i=0;i<10;i++) printf("%d",a[i]);}J舉一反三【實(shí)驗(yàn)二】任意輸入10個數(shù),輸出其中的最小數(shù);最小數(shù)與最后面的數(shù)互換后,輸出10個數(shù)。。實(shí)驗(yàn)十二二維數(shù)組程序設(shè)計(4學(xué)時)【實(shí)驗(yàn)?zāi)康摹?.熟練掌握二維數(shù)組的定義、賦值和輸入輸出方法。2.掌握有關(guān)二維數(shù)組的一些常用算法。【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例13-1】定義一個4×3的二維數(shù)組a,數(shù)組元素的值由鍵盤輸入,輸出其中的最大值及所在的行下標(biāo)。源程序:#include"stdio.h"main(){ inta[4][3],i,j,max,hang; printf("給數(shù)組元素賦值:\n"); for(i=0;i<4;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("輸出4×3的矩陣:\n"); for(i=0;i<4;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } max=a[0][0];hang=0; for(i=0;i<4;i++) for(j=0;j<3;j++) if(max<a[i][j]) { max=a[i][j]; hang=i; } printf("max=%d,hang=%d\n",max,hang);}J舉一反三【13-1】定義一個4×4的二維數(shù)組b,數(shù)組元素的值由鍵盤輸入,輸出其中的最小值及所在的列下標(biāo)?!纠?3-2】從鍵盤上輸入一個3行3列的矩陣的各個元素的值,然后分別輸出主對角線元素和輔對角線元素之和。源程序:#include"stdio.h"main(){ inta[3][3],i,j,sum1=0,sum2=0; printf("給數(shù)組元素賦值:\n"); for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("輸出3×3的矩陣:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%4d",a[i][j]); printf("\n"); } for(i=0;i<3;i++) { sum1=sum1+a[i][i];/*主對角線上元素行、列下標(biāo)相等*/ sum2=sum2+a[i][2-i];/*輔對角線上元素行、列下標(biāo)相加相等*/ } printf("sum1=%d,sum2=%d\n",sum1,sum2);}J舉一反三【13-2】從鍵盤上輸入一個4行4列的矩陣的各個元素的值,然后分別輸出主對角線元素的最大值和輔對角線元素的最小值。【例13-3】定義一個5行4列的矩陣,從鍵盤上給各個元素的值,要求四周元素值為1,其它元素值為0。源程序:#include"stdio.h"main(){ inta[5][4],i,j; printf("給數(shù)組元素賦值:\n"); for(i=0;i<5;i++) for(j=0;j<4;j++) if(i==0||i==4||j==0||j==3)/*四周元素下標(biāo)的特點(diǎn)*/ a[i][j]=1; else a[i][j]=0; printf("輸出5×4的矩陣:\n"); for(i=0;i<5;i++) { for(j=0;j<4;j++) printf("%4d",a[i][j]); printf("\n"); }}J舉一反三【13-3】定義一個5行5列的矩陣,從鍵盤上給各個元素的值,要求主對角線和輔對角線元素值為1,其它元素值為0?!纠?3-4】定義一個N×N的二維數(shù)組,并在鍵盤給數(shù)組元素賦值。請編寫程序使數(shù)組左下半三角元素中的值全部置成0。并以矩陣形式輸出該數(shù)組,例如,如果a數(shù)組中的值為則重新賦值后a數(shù)組中的值應(yīng)為源程序:#include<stdio.h>#include"stdlib.h"#defineN5voidmain(){inta[N][N],i,j;printf("產(chǎn)生一個隨機(jī)的5*5矩陣");for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=rand()%10;printf("輸出原數(shù)組:\n");for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%5d",a[i][j]);printf("\n");}for(i=0;i<N;i++) for(j=0;j<=i;j++) a[i][j]=0;printf("輸出變化后的數(shù)組:\n");for(i=0;i<N;i++){for(j=0;j<N;j++) printf("%5d",a[i][j]);printf("\n");}}J舉一反三【13-4】定義一個N×N的二維數(shù)組,并在鍵盤給數(shù)組元素賦值。請編寫程序使數(shù)組右上半三角元素中的值全部置成0。二、程序改錯注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1、定義一個4行5列的矩陣,從鍵盤上給各個元素賦值,求四周元素的和。源程序:#include"stdio.h"main(){ inta[4][5],i,j,sum=0; printf("給數(shù)組元素賦值:\n"); for(i=0;i<4;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); printf("\n"); for(i=0;i<4;i++) { for(j=0;j<5;j++)printf("%d",a[i][j]); printf("\n"); }for(i=0;i<4;i=i+3)/********found********/for(j=0;j<5;j++) sum+=a[i][j]; for(i=0;i<5;i=i+4)/*求第0列和第4列元素的和*/ for(j=1;j<3;j=j+1)/********found********/ sum+=a[i][j]; printf("sum=%d",sum);}2、打印出以下的楊輝三角形(要求打印出10行),請改正程序中的錯誤,使它能得出正確的結(jié)果。11112113311464115101051161520156117213535217118285670562881193684126126843691源程序:#defineN10main(){inta[N][N];inti,j;for(i=0;i<10;i++)/********found********/{a[0][i]=1;a[i][i]=1;}for(i=2;i<10;i++)/********found********/for(j=1;j<10;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++)/*打印楊輝三角形*//********found********/{for(j=0;j<=10;j++)printf("%6d",a[i][j]);printf("\n");}}實(shí)驗(yàn)十四字符數(shù)組程序設(shè)計【實(shí)驗(yàn)?zāi)康摹?.熟練掌握字符數(shù)組和字符串的定義。2.利用數(shù)組解決一些常見問題.【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例14-1】任意輸入一串字符以#號結(jié)束,輸出字符串的長度。源程序:#include"stdio.h"main(){chara[80];inti;printf("給字符串賦值:\n");gets(a);printf("輸出原字符串:\n");puts(a);for(i=0;a[i]!='#';i++);printf("字符串長度=%d\n",i);}J舉一反三【14-1】比較兩個字符串的長度,輸出長度大的字符串。例如,輸入:12345<回車>ab<回車>則輸出:12345【例14-2】將一個字符串這正序和反序連接。例如,字符串1234,連接后12344321。源程序:#include"stdio.h"main(){chara[80];inti=0,j;printf("給字符串賦值:\n");gets(a);printf("輸出原字符串:\n");puts(a);while(a[i]!='\0')i++;for(j=i-1;j>=0;j--) a[i++]=a[j];a[i]=0;printf("輸出新的字符串\n");puts(a);}J舉一反三【14-2】任意輸入兩個字符串,將第二個字符串連接在第一個字符串的后面。【例14-3】假定輸入的字符串中只包含字母和*號。編寫程序只刪除字符串的前導(dǎo)*號。例如,*******ACF*F*G****,刪除后,字符串中的字符為ACF*F*G****。源程序:#include"stdio.h"main(){inti=0,j=0;chara[80];printf("給字符串賦值:\n");gets(a);printf("輸出原字符串:\n");puts(a);while(a[i]=='*')i++;while(a[i])a[j++]=a[i++];a[j]=0;printf("輸出新的字符串\n");puts(a);}J舉一反三【14-3】假定輸入的字符串中只包含字母和*號。編寫程序只刪除字符串的后面*號。例如,*******ACF*F*G****,刪除后,字符串中的字符為*******ACF*F*G。實(shí)驗(yàn)十五指針程序設(shè)計【實(shí)驗(yàn)?zāi)康摹?.理解指針、地址和數(shù)組間的關(guān)系。2.掌握通過指針操作數(shù)組元素的方法。3、掌握數(shù)組名作為函數(shù)參數(shù)的編程方式。4、熟練掌握字符串處理函數(shù)。【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例15-1】定義函數(shù)fun實(shí)現(xiàn)交換兩個變量內(nèi)容。源程序:#include"stdio.h"intfun(int*a,int*b);/*函數(shù)說明*/main(){ inta,b; printf("輸入兩個數(shù):\n"); scanf("%d%d",&a,&b); printf("輸出原數(shù)據(jù)\n");printf("a=%d,b=%d\n",a,b); fun(&a,&b); printf("輸出改變后的數(shù)據(jù)\n"); printf("a=%d,b=%d\n",a,b);}fun(int*a,int*b)/*形參是指針變量*/{ intt; t=*a; *a=*b; *b=t;}J舉一反三【15-1】在【例15-1】函數(shù)fun中,交換指針變量的值。源程序:#include"stdio.h"intfun(int*a,int*b);/*函數(shù)說明*/main(){ inta,b; printf("輸入兩個數(shù):\n"); scanf("%d%d",&a,&b); printf("輸出原數(shù)據(jù)\n");printf("a=%d,b=%d\n",a,b); fun(&a,&b); printf("輸出改變后的數(shù)據(jù)\n"); printf("a=%d,b=%d\n",a,b);}fun(int*a,int*b)/*形參是指針變量*/{/***************begin****************//***************end******************/}【例15-2】已知數(shù)組a[10]={3,8,6,5,4,4,2,9,9,7},計算數(shù)組下標(biāo)為奇數(shù)且數(shù)組元素是偶數(shù)的元素之和并作為返回值返回主函數(shù),并統(tǒng)計滿足條件的元素的個數(shù)。源程序:#defineN10#include"stdio.h"intfun(inta[],int*n){ inti,sum=0; for(i=0;i<N;i++) if(i%2&&a[i]%2==0) { sum+=a[i]; *n+=1; } returnsum;}main(){ inta[N]={3,8,6,5,4,4,2,9,9,7},i,n=0,sum; printf("輸出數(shù)組元素:"); for(i=0;i<N;i++) printf("%5d",a[i]);printf("\n"); sum=fun(a,&n);printf("sumis%d",sum);printf("countis%d",n);}J舉一反三【15-2】fun函數(shù)的功能是給定n個數(shù),統(tǒng)計平均值以上(含平均值)的實(shí)數(shù)個數(shù),實(shí)數(shù)個數(shù)作為函數(shù)返回值。源程序:#include<stdio.h>intfun(floatx[],int*n){/***************begin****************//***************end******************/}voidmain(){floatx[100];intn,i,num=0;printf(“給n賦值:\n”);scanf(“%d”,&n);for(i=0;i<n;i++)scanf(“%f”,&x[i]);fun(x,&num);printf(“\n高于平均值的實(shí)數(shù)個數(shù)是%d\n”,num);}【例15-3】青年歌手參加歌曲大獎賽,有10個評委進(jìn)行打分,試編程求這位選手的平均得分(去掉一個最高分和一個最低分)。說明:n 將10位評委的打分放入一個含有10個元素的一維數(shù)組中n 程序設(shè)計重點(diǎn)是排序,n 排序的算法選擇冒泡法。n 排序后只要用中間的8個元素即可n 輸出格式為: Theaverageis*!源程序:#include"stdio.h"floataver(floata[],intn){/***************begin****************/inti,j;floatave=0,t;for(i=0;i<n-1;i++) for(j=0;j<=n-2-i;j++) if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("輸出排好序的數(shù)組:\n"); for(i=0;i<n;i++) printf("%.0f",a[i]); printf("\n");for(i=1;i<=n-2;i++) ave+=a[i];returnave/(n-2);/***************end******************/}main(){inti;floatscore[10],average;printf("pleaseinputscore:");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("輸出原數(shù)組元素:\n");for(i=0;i<10;i++) printf("%.0f",score[i]);printf("\n");average=aver(score,10);printf("Theaverageis%f!",average);}J舉一反三【15-3】任意輸入一個長度為8的字符串,使用冒泡法除首尾字符外,將其余6個字符按字符ASCII碼值從小到大排序。部分源程序:#include"stdio.h"intfun(chara[]){/***************begin****************//***************end******************/}main(){chara[80];printf("pleaseinputa:");gets(a);printf("輸出原數(shù)組元素:\n");puts(a);fun(a);printf("輸出排好序的數(shù)組元素:\n");puts(a);}【例15-4】任意輸入兩個字符串,比較它們的長度,輸出長度大的字符串。(用字符串處理函數(shù)完成)源程序:#include<stdio.h>#include<ctype.h>#include<string.h>char*fun(char*str1,char*str2){inti,j;i=strlen(str1);j=strlen(str2);if(i>j) returnstr1;else returnstr2;}main(){charstr1[81],str2[81];printf("Inputtwostring:");gets(str1); gets(str2);printf("輸出兩個字符串:\n"); puts(str1); puts(str2);printf("輸出長度大的字符串:%s\n",fun(str1,str2));}J舉一反三【15-4】任意輸入兩個字符串,比較它們的大小,輸出大的字符串。(用字符串處理函數(shù)完成)部分源程序:#include<stdio.h>#include<ctype.h>#include<string.h>char*fun(char*str1,char*str2){/***************begin****************//***************end******************/}main(){charstr1[81],str2[81];printf("Inputtwostring:");gets(str1); gets(str2);printf("輸出兩個字符串:\n"); puts(str1); puts(str2);printf("輸出大的字符串:%s\n",fun(str1,str2));}實(shí)驗(yàn)十六結(jié)構(gòu)程序設(shè)計【實(shí)驗(yàn)?zāi)康摹?.掌握結(jié)構(gòu)體變量的基本使用方法。2.掌握結(jié)構(gòu)體數(shù)組的基本使用方法。【實(shí)驗(yàn)內(nèi)容】一、試著編寫下列程序【例16-1】輸出成績單。輸入一個學(xué)生的信息,再輸出這些信息。假設(shè)學(xué)生的信息包括:學(xué)號、姓名和成績。源程序:#include"stdio.h"main(){ structstudent { charnum[10]; charname[10]; floatscore; }a; printf("輸入學(xué)生信息:\n"); scanf("%s%s%f",a.num,,&a.score); printf("%s學(xué)生成績單:\n",); if(a.score>60) { printf("%s%s%f\n",a.num,,a.score); printf("成績不錯祝賀你!!\n"); } else { printf("%s%s%f\n",a.num,,a.score); printf("需要繼續(xù)努力!!\n"); }}J舉一反三【16-1】根據(jù)例16-1,填寫下列程序。源程序:#include"stdio.h"structstudent{ charnum[10]; charname[10]; floatscore;};intfun(structstudenta){ /************begin**********//************end************/}main(){ structstudenta; printf("輸入學(xué)生信息:\n"); scanf("%s%s%f",a.num,,&a.score); printf("%s學(xué)生成績單:\n",); if(fun(a)) { printf("%s%s%f\n",a.num,,a.score); printf("成績不錯祝賀你!!\n"); } else { printf("%s%s%f\n",a.num,,a.score); printf("需要繼續(xù)努力!!\n"); }}【例16-2】輸出成績單。輸入三個學(xué)生的信息,再輸出這些信息。假設(shè)學(xué)生的信息包括:學(xué)號、姓名和成績,每個學(xué)生有三門成績。源程序:#include"stdio.h"structstudent{ charnum[10]; charname[10]; floatscore[3];};main(){ structstudenta[3]; inti,j; printf("輸入學(xué)生信息:\n"); for(i=0;i<3;i++) {scanf("%s%s",a[i].num,a[i].name);for(j=0;j<3;j++) scanf("%f",&a[i].score[j]); } printf("全部學(xué)生成績單:\n"); printf("學(xué)號 姓名 高數(shù) 外語 計算機(jī)\n"); printf("----------------------------------------\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) if(a[i].score[j]<60) break; if(j==3) { printf("%s %s ",a[i].num,a[i].name); for(j=0;j<3;j++) printf("%.0f ",a[i].score[j]); printf("\n成績?nèi)考案?,祝賀你!!\n"); } else { printf("%s %s ",a[i].num,a[i].name);for(j=0;j<3;j++) printf("%.0f ",a[i].score[j]); printf("\n有不及格成績,需要繼續(xù)努力!!\n"); } printf("----------------------------------------\n"); }}輸入數(shù)據(jù)及運(yùn)行結(jié)果如下:J舉一反三【16-2】試著建一個有5人的通訊錄,輸出通訊錄的內(nèi)容。二、程序改錯不允許增加行也不允許刪除行,也不得更改程序的結(jié)構(gòu)。1、定義一個結(jié)構(gòu)體變量a,輸出a變量中每一個成員的值。源程序:#include“stdio.h”main(){/********found********/studentstruct{charflag;floatt;};/********found********/structa={‘a(chǎn)’,46};printf(“%c,%f\n”,a.flag,a.t);}2、輸入一個正整數(shù)n(2<n<10),再輸入n個雇員的信息(如表所示),輸出每人的姓名和實(shí)發(fā)工資(基本工資+浮動工資-支出)。工資表姓名基本工資浮動工資支出zhao240.00400.0075.00qian360.00120.0050.00sun560.000.0080.00源程序#include“stdio.h”intmain(){inti,n;structemp{charname[10];floatjbg;floatfdg;floatzc;}s[10];printf(“n=”);scanf(“%d”,&n);for(i=0;i<n;i++)scanf(“%s%f%f%f”,s[i].name,&s[i].jbg,&s[i].fdg,&s[i].zc);for(i=0;i<n;i++)/********found********/printf(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國陶瓷結(jié)合劑CBN砂輪行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國無機(jī)助焊劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 《Java程序設(shè)計教程 (任務(wù)驅(qū)動式)》全套教學(xué)課件
- 2025-2030全球絲束浸漬機(jī)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國航空自動駕駛儀行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 中藥炮制技術(shù)東盟特色藥材加工與炮制講解
- 平行四邊形慣性矩的等效算法
- 2025購銷合同常用范本
- 2025圖書自費(fèi)出版合同2
- 2025年招標(biāo)師考試《合同管理》重點(diǎn)練習(xí)
- 2025年度高端商務(wù)車輛聘用司機(jī)勞動合同模板(專業(yè)版)4篇
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長江航道工程局招聘101人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會招聘社區(qū)工作者1598人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《妊娠期惡心嘔吐及妊娠劇吐管理指南(2024年)》解讀
- 《黑神話:悟空》跨文化傳播策略與路徑研究
- 《古希臘文明》課件
- 居家養(yǎng)老上門服務(wù)投標(biāo)文件
- 長沙市公安局交通警察支隊招聘普通雇員筆試真題2023
- 2025年高考語文作文滿分范文6篇
- 零售業(yè)連鎖加盟合同
評論
0/150
提交評論