




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計上機安排C語言上機實驗:32學時序號實驗項目名稱內容提要學時數1上機操作初步熟悉VC++語言上機環境;了解如何編輯、編譯、連接和運行一個C程序。22簡單的C程序設計掌握C語言的數據類型;學會使用C語言的運算符及表達式;掌握不同數據類型的輸入輸出方法。掌握復制語句的使用、各種數據類型數據輸入輸出方法、格式轉換符。43選擇結構程序設計正確使用邏輯運算符和邏輯表達式、if語句、switch語句24循環結構程序設計熟悉while語句、do-while語句、for語句實現一些算法45綜合實驗1:結構化程序設計26函數程序設計掌握函數定義的方法、實參與形參對應關系、全局變量和局部變量的使用47數組程序設計掌握一維二維數組的定義賦值和輸入輸出、字符數組和字符串數組使用、數組的算法-排序48指針程序設計掌握定義和使用指針、使用數組指針、字符串指針、函數指針29綜合實驗2:函數、數組、指針的綜合應用210綜合實驗3:結構體、文件程序設計小型綜合應用實例設計411考試模擬練習掌握C語言考試系統的使用2實驗一上機操作初步(2學時)一、實驗方式:一人一機二、實驗目的:1、熟悉VC++語言的上機環境及上機操作過程。2、了解如何編輯、編譯、連接和運行一個C程序。3、初步了解C程序的特點。三、實驗內容:說明:前三題為必做題目,后兩題為選做題目。1、輸出入下信息:(實驗指導書P79)*************************VeryGood*************************2、計算兩個整數的和與積。(實驗指導書P81)3、從鍵盤輸入一個角度的弧度值x,計算該角度的余弦值,將計算結果輸出到屏幕。(書P3)4、在屏幕上顯示一個文字菜單模樣的圖案:=================================1輸入數據2修改數據3查詢數據4打印數據=================================5、從鍵盤上輸入兩個整數,交換這兩個整數。四、實驗步驟與過程:1、試驗指導書P79#include<stdio.h>main(){ printf("*****************\n");printf("verygood\n"); printf("*****************\n");}2、計算兩個整數的和與積。(實驗指導書P81)#include<stdio.h>main(){ inta,b,c,d; printf("pleaseentera,b:"); scanf("%d,%d",&a,&b); c=a+b; d=a*b; printf("cis%d",c); printf("dis%d",d);}2、實驗指導書P81計算兩個整數的和與積。#include"stdio.h"voidmain(){intx,y;printf("pleaseinputx,y:\n");scanf("%d,%d",&x,&y);printf("x+y=%d\n",x+y);printf("x*y=%d\n",x*y);}3、課本P3,從鍵盤輸入一個角度的弧度值x,計算該角度的余弦值,將計算結果輸出到屏幕。#include"stdio.h"#include"math.h"voidmain(){doublex,s;printf("pleaseinputvalueofx:");scanf("%lf",&x);s=cos(x);printf("cos(%lf)=%lf\n",x,s);}注意:lf是長整型變量或函數,另外由于在編寫過程中用到了數學問題,所以要加#include"math.h"4、在屏幕上顯示一個文字菜單模樣的圖案:=================================1輸入數據2修改數據3查詢數據4打印數據=================================#include"stdio.h"voidmain(){printf("============================\n"); printf("1輸入數據2修改數據\n"); printf("3查詢數據4打印數據\n"); printf("============================\n");}5、從鍵盤上輸入兩個整數,交換這兩個整數。#include<stdio.h>main(){ inta,b,t; printf("pleaseentera,b:\n"); scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("ais%d,bis%d",a,b);}五、實驗調試記錄:1、輸出字符,要多個printf2、注意:scanf的意思是:輸入兩個數。3、lf中l,不是I,是l。5、 scanf("%d%d",&a,&b);是關鍵,切勿錯。六、參考答案:(省略)實驗二簡單的C程序設計(4學時)一、實驗方式:一人一機二、實驗目的:1、掌握C語言的數據類型。2、學會使用C語言的運算符及表達式。3、掌握不同數據類型的輸入輸出方法。三、實驗內容:說明:前四題為必做題目,后兩題為選做題目。1、輸入r1、r2,求出圓形墊片面積。(實驗指導書P84)2、輸入華氏溫度h,輸出攝氏溫度c。(實驗指導書P85)3、從鍵盤輸入一個3位整數,將輸出該數的逆序數。(實驗指導書P89)4、輸入并運行以下程序,分析運行結果。#include<stdio.h>voidmain(){inti,j;i=8;j=10;printf(“%d,%d\n”,++i,++j);i=8;j=10;printf(“%d,%d\n”,i++,j++);i=8;j=10;printf(“%d,%d\n”,++i,i);i=8;j=10;printf(“%d,%d\n”,i++,i);}5、輸入三角形三條邊的邊長,求三角形的面積。(書P55)6、輸入3個字符型數據,將其轉換成相應的整數后,求它們的平均值并輸出。(書P55)四、實驗步驟與過程:1、輸入r1、r2,求出圓形墊片面積。(實驗指導書P84)#include<stdio.h>#definep3.14voidmain(){ floatr1,r2; doubles1,s2,s; printf("pleaseenterr1,r2:\n"); scanf("%f%f",&r1,&r2); s2=r2*r2*p; s1=r1*r1*p; s=s2-s1; printf("s=%lf\n",s);}2、輸入華氏溫度h,輸出攝氏溫度c。(實驗指導書P85)#include<stdio.h>main(){ floath,c; printf("請輸入華氏溫度:\n"); scanf("%f",&h); c=5.0/9*(h-32); printf("\n攝氏溫度:%f\n",c);}3、從鍵盤輸入一個3位整數,將輸出該數的逆序數。(實驗指導書P89)#include<stdio.h>voidmain(){ inta,b,c,x,y; printf("請輸入一個3位的正整數:\n"); scanf("%d",&x); a=x/100; b=x/10-a*10; c=x/1-a*100-b*10; y=c*100+b*10+a; printf("原始數是%d,交換后得數是%d\n",x,y);}4、輸入并運行以下程序,分析運行結果。#include<stdio.h>voidmain(){inti,j;i=8;j=10;printf(“%d,%d\n”,++i,++j);i=8;j=10;printf(“%d,%d\n”,i++,j++);i=8;j=10;printf(“%d,%d\n”,++i,i);i=8;j=10;printf(“%d,%d\n”,i++,i);}結果9,118,109,88,85、輸入三角形三條邊的邊長,求三角形的面積。(書P55)#include"stdio.h"#include"math.h"voidmain(){inta,b,c; doublearea,s; scanf("%d,%d,%d",&a,&b,&c); s=(double)(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%.2lf",area);}6、輸入3個字符型數據,將其轉換成相應的整數后,求它們的平均值并輸出。(書P55)#include"stdio.h"voidmain(){chara,b,c; floatx; printf("pleaseenter:\n"); scanf("%c%c%c",&a,&b,&c); x=(a+b+c)/3.0; printf("(a+b+c)/3=%.2f\n",x);}五、實驗調試記錄:1、“p3.14”2、float為單精度,不是int\double\型!3、a=x/100; b=x/10-a*10; c=x/1-a*100-b*10; y=c*100+b*10+a;數字的交換!是整型,int。4、i=8;j=10;printf(“%d,%d\n”,++i,++j);中++i,++j為先增加1,再相應的使用i,j.故結果i=9,j=11.i=8;j=10;printf(“%d,%d\n”,i++,j++);中i++,j++為先使用i,j;再增加1,故結果為i=8;j=10.5、sqrt中是q,不是p.六、參考答案:(省略)實驗三選擇結構程序設計(2學時)一、實驗方式:一人一機二、實驗目的:1、熟練掌握if語句和switch語句。2、練習并掌握多分支選擇結構的編程方法。3、學習調試和修改程序的步驟。三、實驗內容:說明:前三題為必做題目,后兩題為選做題目。1、讀入3個分別表示箱子長、寬、高的整數值,判斷并輸出該箱子是立方體還是長方體。(實驗指導書P104)2、輸入某一年月,輸出該月的天數。(實驗指導書P105)3、有一函數:x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)編寫程序,輸入x值,輸出y值。4、從鍵盤輸入一個字符,如果該字符為小寫字母,則轉換為大寫字母輸出;如果該字符為大寫字母,則轉換為小寫字母輸出;如果為其他字符,原樣輸出。(書P94)5、輸入4個整數,要求按由小到大的順序輸出。四、實驗步驟與過程:1、讀入3個分別表示箱子長、寬、高的整數值,判斷并輸出該箱子是立方體還是長方體。(實驗指導書P104)#include"stdio.h"voidmain(){intl,w,h; printf("請輸入箱子的長、寬、高:\n"); scanf("%d%d%d",&l,&w,&h); if(l==w&&w==h&&h==l) printf("該箱子是立方體。"); else printf("該箱子是長方體。");}2、輸入某一年月,輸出該月的天數。(實驗指導書P105)#include"stdio.h"voidmain(){intyear,month,days; printf("pleaseenteryearandmonth:\n"); scanf("%d%d",&year,&month); switch(month) { case2:if(year%400==0||(year%4==0&&year%100!=0)) days=29; else days=28; break; case1: case3: case5: case7: case8: case10: case12:days=31; break; case4: case6: case9: case11:days=30; break; } printf("該月的天數為:%d\n",days);}3、有一函數:x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)編寫程序,輸入x值,輸出y值。#include"stdio.h"voidmain(){ intx,y; scanf("%d",&x); if(x<1) y=x; if(1<=x&&x<10) y=2*x-1; if(x>=10) y=3*x-11; printf("y=%d\n",y);}4、從鍵盤輸入一個字符,如果該字符為小寫字母,則轉換為大寫字母輸出;如果該字符為大寫字母,則轉換為小寫字母輸出;如果為其他字符,原樣輸出。(書P94)#include"stdio.h"voidmain(){charx;printf("Enterachar:\n"); x=getchar(); if((x>='a')&&(x<='z')) x-='a'-'A'; elseif((x>='A')&&(x<='Z')) x+='a'-'A'; putchar(x);}5、輸入4個整數,要求按由小到大的順序輸出#include"stdio.h"voidmain(){ inta,b,c,d,t; printf("請輸入四個整數:\n"); scanf("%d%d%d%d",&a,&b,&c,&d); if(a>b){t=a,a=b,b=t;} if(a>c){t=a,a=c,c=t;} if(a>d){t=a,a=d,d=t;} if(b>c){t=b,b=c,c=t;} if(b>d){t=b,b=d,d=t;} if(c>d){t=c,c=d,d=t;} printf("%d,%d,%d,%d\n",a,b,c,d);}五、實驗調試記錄:1\if(l==w&&w==h&&h==l)判斷該箱子是否為正方體。2、switch(month)為一典型的嵌套結構,再該嵌套結構的結束時要記得加上break,否則無法跳出該嵌套!!if(year%400==0||(year%4==0&&year%100!=0))該語句為判斷該年是否為閏年。3\ifd的循環結構,判斷清楚當滿足什么條件時執行該語句,ifd嵌套的前提是再滿足上個if條件的情況下執行該個if。4、char為字符型,獲取一字符用char類型。5、if(a>b){t=a,a=b,b=t;} if(b>c){t=b,b=c,c=t;} if(c>d){t=c,c=d,d=c;}并列if判斷句,從上到下依次執行。六、參考答案:(省略)實驗四循環結構程序設計(4學時)一、實驗方式:一人一機二、實驗目的:1、熟練掌握while語句、do-while語句和for語句。2、練習并掌握循環結構的嵌套形式。3、掌握循環結構的程序設計方法。三、實驗內容:說明:前四題為必做題目,后兩題為選做題目。1、從鍵盤上輸入若干個學生的成績,統計并輸出最高成績和最低成績,當輸入負數時結束輸入。(實驗指導書P117)2、求所有的水仙花數。水仙花數是一個3位數的自然數,該數各位數的立方和等于該數本身。(實驗指導書P118)3、判斷輸入的某個數是否為素數。若是,輸出YES,否則輸出NO。(書P123)4、計算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一項的絕對值小于10-6為止。(書P123)5、計算s=1!+2!+……+20!的值并輸出。6、輸入10個整數,統計并輸出其中正數、負數和零的個數。四、實驗步驟與過程:1、從鍵盤上輸入若干個學生的成績,統計并輸出最高成績和最低成績,當輸入負數時結束輸入。(實驗指導書P117)#include"stdio.h"voidmain(){ floatx,max,min; printf("pleaseinputscores:\n"); scanf("%f",&x); max=min=x; while(x>=0) { if(x>max)max=x; if(x<min)min=x; scanf("%f",&x); } printf("\nmax=%f\nmin=%f\n",max,min);}2、求所有的水仙花數。水仙花數是一個3位數的自然數,該數各位數的立方和等于該數本身。(實驗指導書P118)#include"stdio.h"voidmain(){ intx,y,z; intk=100; while(k<=999) { x=k/100; y=(k-x*100)/10; z=(k-x*100-y*10); if(k==x*x*x+y*y*y+z*z*z) printf("%d\n",k); k++; }3、判斷輸入的某個數是否為素數。若是,輸出YES,否則輸出NO。(書P123)#include"math.h"voidmain(){ inti,x,yes,a; printf("Enterintegernumber:"); scanf("%d",&x); yes=1; i=2; a=sqrt(x); while(yes&&i<=a) { if(x%i==0)yes=0; i=i+1; } printf("%d\n",x); if(yes) printf("YES\n"); else printf("NO\n");}}4、計算π的近似值。公式如下:π/4=1-1/3+1/5-1/7+……,直到最后一項的絕對值小于10-6為止。(書P123)#include"math.h"voidmain(){ floatpi,t,n; intsign=1; pi=0.0;n=1.0;t=1.0; while(fabs(t)>=1e-6) {t=sign/n; pi+=t; n+=2; sign=-sign; } pi=pi*4; printf("pi=%f\n",pi);}5、計算s=1!+2!+……+20!的值并輸出。#include"stdio.h"#include"stdio.h"voidmain(){ inti,j; doublem,sum=0; for(i=1;i<=20;i++) { for(j=1,m=1;j<=i;j++) m*=j; sum+=m; } printf("%.0lf\n",sum);6、輸入10個整數,統計并輸出其中正數、負數和零的個數。#include"stdio.h"voidmain(){ inta,b,c,x,i; a=0; b=0; c=0; printf("請輸入十個整數:\n"); scanf("%d",&x); for(i=1;i<=10;i++) { if(x==0) a++; if(x>0) b++; if(x<0) c++; scanf("%d",&x); } printf("零:%d,正數:%d,負數:%d\n",a,b,c);}}五、實驗調試記錄:1\while(x>=0)后無‘;’!floatx,max,min;float單精度。2、x=k/100; y=(k-x*100)/10; z=(k-x*100-y*10);依次求出該數的百、十、個位:x,y,z.if(k==x*x*x+y*y*y+z*z*z)判斷該數是否為水仙花數。3、a=sqrt(x)為開平方語句、sqrt。該語句在int(整型)語句中執行。4、fabs(t)為求實數t的絕對值。1e-6為1乘以1的0(-6)次方。sign=-sign分子交換正負值。5、for(i=1;i<=20;i++) { for(j=1,m=1;j<=i;j++)為循環的嵌套for(j=1,m=1;j<=i;j++)語句為在滿足for(i=1;i<=20;i++)語句的前提下執行。6、for(i=1;i<=10;i++) { if(x==0) a++; if(x>0) b++; if(x<0) c++;循環判斷語句,i限制循環的次數為10.六、參考答案:(省略)實驗五綜合實驗1:結構化程序設計(2學時)一、實驗方式:一人一機二、實驗目的:1、進一步掌握選擇結構、循環結構的編程特點。2、掌握C語言的結構化程序設計思想。3、學習利用循環結構實現的一些常用算法(如窮舉、迭代、遞推等)。三、實驗內容:說明:前兩題為必做題目,后兩題為選做題目。1、編一程序,對于給定的一個百分制成績,輸出對應A,B,C,D,E表示的的等級成績。設:90分以上為A,80-89分為B,70-79分為C,60-69分為D,60分以下為E。(書P93)2、百馬百擔問題。(實驗指導書P121)3、輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。4、輸出如下圖案:*************************四、實驗步驟與過程:1、編一程序,對于給定的一個百分制成績,輸出對應A,B,C,D,E表示的的等級成績。設:90分以上為A,80-89分為B,70-79分為C,60-69分為D,60分以下為E。(書P93)intscore,temp,logic; chargrade; logic=1; while(logic) {printf("InputScore:"); scanf("%d",&score); if((score>=100)||(score==0)) printf("\nError,Inputagain!\n"); else logic=0; printf("\n"); } if(score==100) temp=9; else temp=(score-score%10)/10; switch(temp) {case9:grade='A';break; case8:grade='B';break; case7:grade='C';break; case6:grade='D';break; case5: case4: case3: case2: case1: case0:grade='E'; } printf("Scoreis:%d,thegradeis:%c\n",score,grade);}2、百馬百擔問題。(實驗指導書P121)#include"stdio.h"voidmain(){ intm,n,k; intsum=0; printf("各種駝法如下:\n"); for(m=1;m<=100;m++) for(n=1;n<=100-m;n++) {k=100-m-n; if(m*3+n*2+k/2==100&&k%2==0) { printf("大馬%3d匹;中馬%3d匹;小馬%3d匹.\n",m,n,k); sum++; } }printf("共有%d種馱法.\n",sum);}3、輸入一行字符,分別統計出其中英文字母、空格、數字和其他字符的個數。#include"stdio.h"voidmain(){ charc; intletter=0,space=0,digit=0,other=0; printf("請輸入一行字符:\n"); while((c=getchar())!='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; elseif(c='') space++; elseif(c>='0'&&c<='9') digit++; else other++; } printf("letter:%d,space:%d,digit:%d,other:%d\n",letter,space,digit,other);}4、輸出如下圖案:************************* #include"stdio.h"voidmain(){ intk,k1,k2; for(k=1;k<=4;k++) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=k*2-1;k2++)printf("*"); printf("\n"); } for(k=3;k>0;k--) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=2*k-1;k2++)printf("*"); printf("\n"); }}五、實驗調試記錄:1、switch(temp)嵌套,正確運用。3、while((c=getchar())!='\n')關鍵語句。獲取字符。4、for(k=1;k<=4;k++) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=k*2-1;k2++)printf("*"); printf("\n"); } for(k=3;k>0;k--) { for(k1=1;k1<=20-k;k1++)printf(""); for(k2=1;k2<=2*k-1;k2++)printf("*");循環的嵌套,打印出預定*。六、參考答案:(實驗六函數程序設計(4學時)一、實驗方式:一人一機二、實驗目的:1、掌握C語言中函數的三要素:函數定義、函數調用和函數說明。2、掌握通過參數在函數間傳遞數據的方法。3、掌握全局變量、局部變量、動態變量、靜態變量的概念和使用方法。三、實驗內容:說明:前四題為必做題目,后兩題為選做題目。1、從鍵盤輸入三角形的3條邊,調用三角形面積函數求出其面積,并輸出結果。(實驗指導書P130)2、輸入整數n,輸出高度為n的等邊三角形。當n=5時的等邊三角形如下:(實驗指導書P134)*************************3、輸入并運行以下程序,分析運行結果。#include<stdio.h>inta=5;intb=7;voidmain(){inta=4,b=5,c;c=plus(a,b);printf(“a+b=%d\n”,c);}plus(intx,inty){intz;z=x+y;return(z);}4、求500以內的所有親密數對。若正整數A的所有因子(包括1但不包括自身,下同)之和為B,而B的因子之和為A,則稱A和B為一對親密數對。(實驗指導書P136)5、輸入并運行以下程序,分析運行結果。#include<stdio.h>intd=1;fun(intp){staticintd=5;d+=p;printf(“%d”,d);return(d);}voidmain(){inta=3;printf(“%d”,fun(a+fun(d)));}6、設計一個函數,輸出整數n的所有素數因子。(書P157)四、實驗步驟與過程:1、從鍵盤輸入三角形的3條邊,調用三角形面積函數求出其面積,并輸出結果。(實驗指導書P130)#include"math.h"#include"stdio.h"floatarea(floata,floatb,floatc){floats,p,area; p=(a+b+c)/2; s=p*(p-a)*(p-b)*(p-c); area=sqrt(s); return(area); } main() {floatx,y,t,ts; scanf("%f%f%f",&x,&y,&t); if(x>0&&y>0&&t>0&&x+y>t&&x+t>y&&t+y>x) {ts=area(x,y,t); printf("area=%f\n",ts); } else printf("dataerror!\n"); }2、輸入整數n,輸出高度為n的等邊三角形。當n=5時的等邊三角形如下:(實驗指導書P134)*************************#include"stdio.h"voidtrangle(intn){ inti,j; for(i=0;i<n;i++) { for(j=0;j<=n-i;j++) putchar(''); for(j=0;j<=2*i;j++) putchar('*'); putchar('\n'); }}main() { intn; printf("Pleaseentern:\n"); scanf("%d",&n); printf("\n"); trangle(n); }3、輸入并運行以下程序,分析運行結果。#include<stdio.h>inta=5;intb=7;voidmain(){inta=4,b=5,c;c=plus(a,b);printf(“a+b=%d\n”,c);}plus(intx,inty){intz;z=x+y;return(z);}結果a+b=9;inta=5;intb=7;為全局變量,inta=4,b=5,c;為局部變量,而局部變量的優先級比全局變量的優先級高,故只算a=4,b=5,時的a,b值,所以結果a+b=9。4、求500以內的所有親密數對。若正整數A的所有因子(包括1但不包括自身,下同)之和為B,而B的因子之和為A,則稱A和B為一對親密數對。(實驗指導書P136)#include"stdio.h"intfacsum(intm){ intsum=1,f=2; while(f<=m/2) { if(m%f==0)sum+=f; f++; } returnsum;}main(){ intm=3,n,k; while(m<=500) { n=facsum(m); k=facsum(n); if(m==k&&m<=k) printf("%d,%d\n",m,n); m++; }}5、輸入并運行以下程序,分析運行結果。#include<stdio.h>intd=1;fun(intp){staticintd=5;d+=p;printf(“%d”,d);return(d);}voidmain(){inta=3;printf(“%d”,fun(a+fun(d)));}6、設計一個函數,輸出整數n的所有素數因子。(書P157)#include"stdio.h"intprime(intn){ inti,flag=1;for(i=2;i<=n/2;i++) if(n%i==0) { flag=0; returnflag; } returnflag;}voidfactor(intn){inti;i=2; while(i<=n) {if((n%i==0)&&prime(i)) {printf("%d\n",i); n=n/i; continue; } i++; }}main(){ intnum; printf("Enternum:"); scanf("%d",&num); printf("primrfactoris:\n"); factor(num);}五、實驗調試記錄:5、結果61515.局部變量掩蓋整體變量。6、d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\6-06.c(13):errorC2449:found'{'atfilescope(missingfunctionheader?)d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\6-06.c(24):errorC2059:syntaxerror:'}'Errorexecutingcl.exe.6-06.obj-2error(s),0warning(s)六、參考答案:(省略)實驗七數組程序設計(4學時)一、實驗方式:一人一機二、實驗目的:1、掌握數組的定義、賦值和輸入輸出的方法。2、學習用數組實現相關的算法(特別是排序算法)。3、掌握C語言中字符數組和字符串處理函數的使用。三、實驗內容:說明:前四題為必做題目,后兩題為選做題目。1、下列程序的功能是:輸入10個整數,按每行3個數輸出這些整數,最后輸出10個整數的平均值。程序中有幾處錯誤,試找出它們后加以修改,并上機驗證修改結果。#include<stdio.h>voidmain(){inti,n=10,a[10];floatavg=0;for(i=0;i<n;i++)scanf(“%d”,&a[i]);for(if(i%3==0)printf(“\n”);printf(“%d=0;i<n;i++){i”,a[i]);}for(i=0;i<n;i++)avg+=a[i];avg=avg/n;printf(“\navg=%f\n”,avg);}2、寫一個函數,對輸入的10個整數按從小到大的順序排序(升序,用冒泡排序實現)。(實驗指導書P147)3、編寫程序,判斷某一字符串是不是“回文數”,回文數是從左至右或從右至左讀起來都是一樣的字符串。(實驗指導書P153)4、輸入一個3行3列矩陣的所有元素,然后求出主對角線元素之和。5、給定某年某月某日,將其轉換成這一年的第幾天并輸出。(實驗指導書P152)6、編寫程序,在有序的數列中查找某數,若該數在此數列中,則輸出它所在的位置,否則輸出nofound。(書P191)四、實驗步驟與過程:1、下列程序的功能是:輸入10個整數,按每行3個數輸出這些整數,最后輸出10個整數的平均值。程序中有幾處錯誤,試找出它們后加以修改,并上機驗證修改結果。#include<stdio.h>voidmain(){inti,n,a[10],avg;n=10;for(i=0;i<n;i++)scanf(“%d”,&a[i]);for(i=0;i<n;i++){if(i%3==0)printf(“\n”);printf(“%d”,a[i]);}for(i=0;i<n;i++)avg+=a[i];avg=avg/n;printf(“\navg=%f\n”,avg);}2、(2)寫一個函數,對輸入的10個整數按從小到大的順序排序(升序,用冒泡排序實現)。(實驗指導書P147)#include<stdio.h>voidsortl(ints[],intn){ inti,j; inttemp; for(i=0;i<n-1;i++) for(j=9;j>=i+1;j--) if(s[j]>s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; }}voidmain(){ inti,a[10]; printf("請輸入十個整數:"); for(i=0;i<10;i++) scanf("%d",&a[i]); sortl(a,10); printf("排序后的輸出為:\n");for(i=0;i<10;i++)printf("%d\n",a[i]);}(1)題7.37編寫程序,用冒泡法對20個整數排序(按升序排序)。#include"stdio.h"#defineN20voidmain(){intdata[N];inti,j,t; printf("請輸入%d個整數:\n",N); for(i=0;i<N;i++) scanf("%d",&data[i]); printf("\n"); for(i=0;i<N;i++) for(j=0;j<N-1;j++) if(data[j]>data[j+1]) {t=data[j];data[j]=data[j+1];data[j+1]=t;}printf("排序后的輸出為:\n"); for(i=0;i<N;i++) printf("%d\n",data[i]);}3、編寫程序,判斷某一字符串是不是“回文數”,回文數是從左至右或從右至左讀起來都是一樣的字符串。(實驗指導書P153)#include"stdio.h"#include"string.h"#defineN40voidmain(){charstr[N],ch='Y';inti; intlen; printf("Inputastring:\n"); scanf("%s",str); len=strlen(str); for(i=0;i<len/2;i++) if(str[i]=str[len-1-i]) { ch='N'; break; } if(ch=='Y') printf("%s是一個回文數\n",str); else printf("%s不是一個回文數\n",str);}4、輸入一個3行3列矩陣的所有元素,然后求出主對角線元素之和。#include"stdio.h"voidmain(){ inta[3][3],sum; inti,j; sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) sum+=a[i][j]; printf("sum=%d\n",sum);}5、給定某年某月某日,將其轉換成這一年的第幾天并輸出。(實驗指導書P152)#include"stdio.h"intday_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; intday_year(intyear,intmonth,intday) {inti,j,s=0; if(year%4==0&&year%100!=0||year%400==0)i=1;elsei=0; for(j=1;j<month;j++) s=s+day_tab[i][j]; return(s+day); } voidmain() {inty,m,d; printf("Inputyear,monthandday:\n"); scanf("%d%d%d",&y,&m,&d); printf("是這年的第%d天\n",day_year(y,m,d)); }6、編寫程序,在有序的數列中查找某數,若該數在此數列中,則輸出它所在的位置,否則輸出nofound。(書P191)#include"stdio.h"#defineN10voidmain(){inta[N];intnum,i; charch='n'; printf("請輸入一個數組:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); printf("輸出數組:\n"); for(i=0;i<N;i++) printf("%d",a[i]); printf("\n"); printf("請輸入一個數\n"); scanf("%d",&num); printf("開始查找\n"); for(i=0;i<N;i++) if(num==a[i]) {ch='y'; printf("%d在數組的第%d位\n",num,i+1); } if(ch=='n') printf("nofound\n");}五、實驗調試記錄:1、scanf(“%d”,&a[i]);&a[i]中‘&’連接符。2、7-02(1).cd:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-02(1).c(10):errorC2143:syntaxerror:missing';'before')'d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-02(1).c(11):errorC2143:syntaxerror:missing';'before')'d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-02(1).c(11):errorC2143:syntaxerror:missing';'before')'d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-02(1).c(13):errorC2065:'dataa':undeclaredidentifierd:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-02(1).c(13):errorC2109:subscriptrequiresarrayorpointertypeErrorexecutingcl.exe.7-02(1).obj-5error(s),0warning(s)3、7-03.cd:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-03.c(11):errorC2143:syntaxerror:missing';'before'for'Errorexecutingcl.exe.7-03.obj-1error(s),0warning(s)5\7-05.cd:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-05.c(6):errorC2449:found'{'atfilescope(missingfunctionheader?)d:\1002010806寧加彬實驗.doc\1002010806--應化-108.do\7-05.c(11):errorC2059:syntaxerror:'}'六、參考答案:(省略)實驗八指針程序設計(2學時)一、實驗方式:一人一機二、實驗目的:1、通過實驗進一步掌握指針的概念,會定義和使用指針變量。2、能正確使用指向數組和字符串的指針變量。3、熟悉指針作為函數參數的編程特點。三、實驗內容:說明:前兩題為必做題目,后兩題為選做題目。要求用指針方法實現。1指針基礎及指針運算。(實驗指導書P168)2、輸入3個整數,按從小到大的次序輸出。(書P234)3、數據交換。實驗要求:1)定義兩個函數,分別為voidswap1(inta,intb)和voidswap2(int*a,int*b),用于交換a,b的值。2)從主函數中分別輸入兩個整型變量a、b。3)從主函數中分別調用上述兩個交換函數,并打印輸出交換后a、b的結果。(實驗指導書P169)4、編步驟與過程:寫一個程序計算字符串長度的函數,模擬C的<string.h>函數庫內的計算字符串長度的函數strlen()。四、實驗1指針基礎及指針運算。(實驗指導書P168)#defineN5#include<stdio.h>#include<malloc.h>intmain(){ int*p,*q,a[N]; inti,tmp; p=a; q=(int*)malloc(N*sizeof(int)); printf("pleaseinputthefirstgroup:"); for(i=0;i<N;i++)scanf("%d",&p[i]); printf("pleaseinputthesecondgroup:"); for(i=0;i<N;i++) scanf("%d",&q[i]);for(i=0;i<N;i++) if(*(p+i)>*(q+i)) {tmp=*(p+i);*(p+i)=*(q+i);*(q+i)=tmp; } printf("result:\n"); for(i=0;i<N;i++)printf("%d",p[i]); printf("\n"); for(i=0;i<N;i++)printf("%d",q[i]); printf("thememoryadressofp,a,qare:%x,%x,%x\n",p,a,q); free(q); return(0);}2、輸入3個整數,按從小到大的次序輸出。(書P234)#include"stdio.h"voidswap(int*p1,int*p2){ intp; p=*p1;*p1=*p2;*p2=p;}voidmain(){ intn1,n2,n3; int*p1,*p2,*p3; printf("Pleaseinputthereintegerdatas:"); scanf("%d%d%d",&n1,&n2,&n3); p1=&n1;p2=&n2;p3=&n3; if(n1<n2)swap(p1,p2); if(n1<n3)swap(p1,p3); if(n2<n3)swap(p2,p3); printf("Afterswap:"); printf("%d%d%d\n",n1,n2,n3);}3、數據交換。實驗要求:1)定義兩個函數,分別為voidswap1(inta,intb)和voidswap2(int*a,int*b),用于交換a,b的值。2)從主函數中分別輸入兩個整型變量a、b。3)從主函數中分別調用上述兩個交換函數,并打印輸出交換后a、b的結果。(實驗指導書P169)#include"stdio.h"voidswap1(intx,inty);voidswap2(int*x,int*y);intmain(){ inta,b; printf("PleaseInputa=:"); scanf("%d",&a); printf("\nb=:"); scanf("%d",&b); swap1(a,b); printf("\nAfterCallswap1:a=%db=%d\n",a,b); swap2(&a,&b); printf("\nAfterCallswap2:a=%db=%d\n",a,b); return0;}voidswap1(intx,inty){ inttemp; temp=x; x=y; y=temp;}voidswap2(int*x,int*y){ inttemp; temp=*x;*x=*y;*y=temp;}4、編步驟與過程:寫一個程序計算字符串長度的函數,模擬C的<string.h>函數庫內的計算字符串長度的函數strlen()。#include<stdio.h>#include<conio.h>voidmain(){charstr[256]={'\0'};printf("請輸入一個字符串:\n");gets(str);intstrlenOwn(constchar*);intlength=strlenOwn(str);printf("輸入字符串的長度為:%d",length);getch();}intstrlenOwn(constchar*psz){intlen=0;while(*(psz++))len++;returnlen;}五、實驗調試記錄:2、p1=&n1;p2=&n2;p3=&n3; if(n1<n2)swap(p1,p2); if(n1<n3)swap(p1,p3); if(n2<n3)swap(p2,p3); printf("Afterswap:");排序,按從大到小順序。3、temp=*x;*x=*y;*y=temp交換指針。六、參考答案:(省略)實驗九綜合實驗2:函數、數組、指針的綜合應用(2學時)一、實驗方式:一人一機二、實驗目的:1、進一步掌握通過指針引用數組元素的方法。2、綜合運用函數、數組、指針的知識,實現復雜程序的編程。3、掌握調試復雜程序的技巧。三、實驗內容:說明:前兩題為必做題目,后兩題為選做題目。要求用指針方法實現。1、數組元素奇偶排列。實驗要求:1)定義一個整型一維數組,任意輸入數組的元素,其中包含奇數和偶數。2)定義一個函數,實現將數組元素奇數排列在左,偶數排列在右的排列。3)在上述定義的函數中,不允許再增加新的數組。4)從主函數中分別調用上述函數,打印輸出結果。(實驗指導書P172)2、編寫函數lower()模擬標準函數strlwr(),調用形式為lower(char*st),其作用是將字符串st中的大寫字母轉換成小寫。(書P192)3、編寫函數,比較兩個字符串是否相等。(書P234)4、編寫函數reverse()模擬標準函數strrev(),調用形式為reverse(char*st),其作用是顛倒字符串st的順序,即按與原來相反的順序排列。(書P192)四、實驗步驟與過程:1、數組元素奇偶排列。實驗要求:1)定義一個整型一維數組,任意輸入數組的元素,其中包含奇數和偶數。2)定義一個函數,實現將數組元素奇數排列在左,偶數排列在右的排列。3)在上述定義的函數中,不允許再增加新的數組。4)從主函數中分別調用上述函數,打印輸出結果。(實驗指導書P172)#include<stdio.h>#defineN10voidarrsort(inta[],intn);intmain(){ inta[N],i; for(i=0;i<N;i++) scanf("%d",&a[i]); arrsort(a,N); for(i=0;i<N;i++) printf("%d",a[i]);}voidarrsort(inta[],intn){ int*p,*q,temp; p=a; q=a+n-1; while(p<q) { while(*p%2!=0) p++; while(*q%2==0) q--; if(p<q) { temp=*p; *p=*q; *q=temp; } p++; q--; }}2、編寫函數lower()模擬標準函數strlwr(),調用形式為lower(char*st),其作用是將字符串st中的大寫字母轉換成小寫。(書P192)#include<stdio.h>#defineN20voidlower(char*st){ inti=0; while(st[i]!='\0') { if(st[i]>='A'&&st[i]<='Z') st[i]+=32; i++; }}voidmain(){ chars[N]; printf("Inputastring:\n"); scanf("%s",s); lower(s); printf("Output:%s\n",s);}3、編寫函數,比較兩個字符串是否相等。(書P234)#include<stdio.h>#include<string.h>intcompare(char*p,char*q){ inti,l=strlen(q); if(strlen(p)!=strlen(q)) return0; for(i=0;i<1;i++) if(p[i]!=q[i]) return0; return1;}voidmain(){ charstr1[80],str2[80]; printf("輸入第一個字符串:\n"); scanf("%s",&str1);printf("輸入第二個字符串:\n"); scanf("%s",&str2); if(compare(str1,str2)) printf("兩個字符串相等!\n"); else printf("兩個字符串不相等!\n");}4、編寫函數reverse()模擬標準函數strrev(),調用形式為reverse(char*st),其作用是顛倒字符串st的順序,即按與原來相反的順序排列。(書P192)#include"stdio.h"#include"string.h"voidreverse(char*st){ inti=0,n; chart; n=strlen(st); for(;i<n/2;i++) { t=st[i]; st[i]=st[n-i-1]; st[n-i-1]=t; }}voidmain(){ chars[80]; printf("inputastring\n",s); scanf("%s",s); reverse(s); printf("output:%s\n",s);}五、實驗調試記錄:1、while(*p%2!=0) p++; while(*q%2==0) q--;將原先的if全部換成while,而且第一個判斷十奇數,第二個判斷為偶數。2.將大寫字母改寫成小寫字母即在大寫的字母的基礎上加32位使之等于ASCII碼中的小寫字母。六、參考答案:(省略)實驗十綜合實驗3:結構體、文件程序設計(6學時)一、實驗方式:一人一機二、實驗目的:1、掌握結構體類型變量的定義和使用。2、掌握結構體類型數組的概念和使用。3、學會使用文件打開、關閉、讀、寫等文件操作的函數。三、實驗內容:說明:前三題為必做題目,后一題為選做題目。1、在選舉中進行投票,包含候選人姓名、得票數,假設有多位候選人,用結構體數組統計各候選人的得票數。(實驗指導書P180)2、編寫一個學生信息排序程序。要求:1)程序運行時可輸入n個學生的信息和成績(n預先定義)。2)學生信息包括:學號、姓名;學生成績包括:高等數學、物理、計算機。3)給出一個排序選擇列表,能夠按照上述所列信息(學號、姓名、高等數學、物理、計算機)中的至少一個字段進行排序,并顯示其結果。4)使用函數方法定義各個模塊。3、將磁盤上一個文本文件的內容復制到另一個文件中。(實驗指導書P199)4、從鍵盤輸入一行字符串,將其中的小寫字母全部轉換成大寫字母,輸出到一個磁盤文件“test.dat”中保存,然后讀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深圳協議合同咨詢費用
- 房產分銷協議合同
- 財產買賣合同協議
- 代理記賬合同協議紙質
- 賽事活動協議合同
- 房屋合同追加協議
- 提前中止合同協議
- 標準景觀設計合同范本
- 鋼網架安裝分包合同
- 租房合同范本房東版
- 新音樂初放 學堂樂歌說課課件
- 對外漢語教學法智慧樹知到答案章節測試2023年西北師范大學
- 樂泰膠用戶手冊
- 社會工作行政教案
- 通力電梯ctp-10.65s2a kce控制系統
- 課件:國產C919大飛機
- 反應釜泄漏事故應急處置卡
- GB/T 701-2008低碳鋼熱軋圓盤條
- GB 9706.19-2000醫用電氣設備第2部分:內窺鏡設備安全專用要求
- 遵義會議介紹及歷史意義模板課件
- 中圖版八年級下冊地理《第三節-歐洲西部》(一等獎課件)-
評論
0/150
提交評論