第一篇:安徽大學C語言實驗平臺作業(yè)答案
實驗三 C基本數(shù)據(jù)類型及運算
1.編程:根據(jù)需要定義相關變量,鍵盤輸入10.0、20.6、5.0三個實數(shù)分別賦給相關三個變量,輸出該3個變量的和s、乘積p和平均值a。
2.編程:輸入球的半徑,計算球體表面積和球體積。
3.編程:定義6個變量,通過鍵盤將“10,-10,40000,a,3.14,hello”這六個值分別賦給相應變量,然后在屏幕上輸出變量的值(每行輸出一個變量)。
4.編程:從鍵盤接收1個字符給變量s1,1個字符串(允許帶有空格)給字符數(shù)組s2,輸出字符變量s1的ASCII碼值及字符數(shù)組s2中的字符串。
5.編程:從鍵盤輸入二個整數(shù)分別賦給整型變量a、b,將它們按由小到大的順序輸出。6.編程:調用標準庫函數(shù)sin(x)計算6800的正弦值(此題為選做)。
7.編程:鍵盤輸入一個實數(shù)賦給變量x,計算 y=x*x*x+x*x+x 的值,分別輸出y值、y值的整數(shù)部分和小數(shù)部分(此題為選做)。
8.編程:鍵盤輸入四個整數(shù)分別賦給整型變量a、b、c、d,用三目運算方法將它們按由大到小的順序輸出(此題為選做)。
1.#include
2.#include
main(){float r,s,v;printf(“input r”);scanf(“%f”,&r);s=4*3.14*r*r;v=4/3*3.14*r*r*r;printf(“s=%f,v=%f”,s,v);}
3.#include
4.#include
5.#include printf(“b=%da=%d”,b,a);} 6.#include 7.#include {float x,y,b;int a;scanf(“%f”,&x);y=x*x*x+x*x+x;a=(int)y;b=y-a;printf(“%fn%dn%fn”,y,a,b);} 實驗四 C分支結構程序設計 1.編程:從鍵盤輸入一個字符,如是大寫字母,則輸出相應小寫字母;如是小寫字母,則原樣輸出;其它字符輸出“Not letter!”。 2.編程:判斷輸入的正整數(shù)是否既是3又是5的整數(shù)倍。若是,輸出Yes,否則輸出No。3.編程:從鍵盤輸入三個整數(shù),分別賦給變量a,b,c,輸出其中的最大值(要求不改變a、b、c的值)。 4.編程:用scanf輸入任意兩個數(shù)分別賦給變量a、b,若a大于等于b,則直接輸出a、b,否則將a、b的值交換(即a的原值放入b中,b的原值放入a中)后再輸出。 5.編程:輸入整數(shù)a和b,若a+ b大于100,則輸出a+ b百位以上的數(shù)字,否則輸出兩數(shù)之和。6.編程:從鍵盤輸入三個整數(shù),分別賦給變量a,b,c,請按從小到大的順序依次輸出a、b、c(要求不改變a、b、c的值)。 7.編程:從鍵盤輸入三個整數(shù),分別賦給變量a,b,c,請按從小到大的順序依次將這三個數(shù)存放于a、b、c中,最后輸出a、b、c。 8.編程:由系統(tǒng)生成一個10以內的隨機整數(shù),用戶從鍵盤上輸入一個10以內的整數(shù),如果兩者相等輸出“OK”,否則輸出“ERROR”。 注:隨機數(shù)的生成必須包含頭文件#include {char x;scanf(“%c”,&x);if(x>='a'&&x<='z') printf(“%c”,x);else if(x>='A'&&x<='Z') printf(“%c”,x+32); else printf(“Not letter!”);} 2.#include printf(“Yesn”); else printf(“Non”);} else printf(“Error!”);} 3.#include 4.#include b=a-b; a=a-b;};printf(“a=%f,b=%fn”,a,b);} 5.#include s=a+b;r=a*a+b*b;t=r/100;if(r>100)printf(“%d”,t);else printf(“%d”,s);} 6.#include else {max=b;min=a;} if(c>=max)max=c;if(c<=min) min=c;d=a+b+c-min-max;printf(“%d %d %dn”,min,d,max);} 7.#include if(a>=b){d = a; a = b; b = d;} else if(b>=c){ d = b; b = c; c = d;} printf(“a=%d b=%d c=%d”,a,b,c);} 8.#include main(){int a,b;srand((unsigned)time(NULL));b=rand()%10+1;scanf(“%d”,&a);printf(“a=%d,隨機數(shù)b=%dn”,a,b);if(a==b)printf(“OK!n”);else printf(“ERROR!n”);} 實驗五 C多分支結構程序設計* 1.編程:計算獎學金ss的值,已知獎學金ss與成績s的關系為: 具體要求: (1)用 if 語句實現(xiàn)分支結構的編程。 (2)s為整型,ss要求精確到小數(shù)點后二位。 (3)用scanf函數(shù)給s賦值,且輸入前有相應提示。 (4)結果輸出時采用以下形式: 成績s=具體值,獎學金ss=具體值 2.設函數(shù)f(x)如下,求函數(shù)函數(shù)法f(x)的值。 具體要求: (1)用條件表達式編程。 (2)用if語句編程。 (3)用scanf函數(shù)給自變量賦值,且輸入前有相應提示。 (4)結果輸出時采用以下形式: x=具體值,f(x)=具體值 (5)給出你所使用的測試用例。 提示: 按C的語法規(guī)則,標識符由字母、數(shù)字、下劃線組成,不能將f(x)作為變量名,本題中,函數(shù)名可起為 f 或 y 等。但作為非格式控制字符,f(x)完全可以出現(xiàn)在printf函數(shù)的雙引號內。 3.編程:輸入一個整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一: (1)能同時被3,5,7整除。 (2)能被其中兩數(shù)整除(指出是哪兩個數(shù))。 (3)能被其中一個數(shù)(指出是哪一個數(shù))整除。 (4)不能被3,5,7任一個數(shù)整除。 4.編程:用switch 語句編寫一個簡單的計算器程序,輸入格式為:data1 op data2。其中data1和data2為參加運算的兩個數(shù);op為運算符,取值只能是+、-、*、/。5.編程:計算你的出生日期是星期幾。 (1)通過鍵盤輸入你出生那一年的元旦是星期幾 (2)通過鍵盤輸入你的出生日期 (3)輸出結果 1.#include ss=0; else if(s>=80&&s<90) ss=100+s; else if(s>=90&&s<=100) ss=200+s*3/2;printf(“成績s=%d,獎學金ss=%0.2fn”,s,ss); } } 2.#include f=0;else f=(x>0)?1:-1;printf(“x=%f,f(x)=%dn”,x,f);} 3.#include if(a==0&&b==0&&c==0) printf(“%d能同時被3,5,7整除n”,x);else if(a==0 && b==0)printf(“%d能被3,5整除n”,x); else if(a==0 && c==0)printf(“%d能被3,7整除n”,x); } 4.#include {case '+': printf(“%g+%g=%gn”,d1,d2,d1+d2);break; case '-': printf(“%g-%g=%gn”,d1,d2,d1-d2);break; case '*': printf(“%g*%g=%gn”,d1,d2,d1*d2);break; case '/': printf(“%g/%g=%gn”,d1,d2,d1/d2);break; else if(b==0 && c==0)printf(“%d能被5,7整除n”,x); else if(a==0)printf(“%d能被3整除n”,x); else if(b==0)printf(“%d能被5整除n”,x); else if(c==0)printf(“%d能被7整除n”,x); else printf(“%d不能被3,5,7任意一個數(shù)整除n”,x); } } 5.#include 實驗六 C循環(huán)結構程序設計 1.編程:輸出200以內所有能被7整除的數(shù)。 2.編程:求出1 ~ 1000之間能被13整除的最大的那個數(shù)。3.編程:找出若干個非零數(shù)中的最小值m以及它們的平均值a。 要求:若干個數(shù)由鍵盤輸入,每次輸入一個賦給變量x,x為零時,結束輸入。4.編程:求兩個正整數(shù)m、n之間所有奇數(shù)之和x與偶數(shù)之和y。 要求: (1)m、n的值由鍵盤輸入。 (2)輸入時,允許用戶隨意先輸入大的或小的整數(shù)。 5.編程:計算函數(shù)y的值。要求鍵盤接收自變量x的值,若x的值不為零,計算函數(shù)y的值并輸出,再從鍵盤接收下一個x的值,??,直到x的值為零,顯示“Thank You,Bye!”,爾后結束程序,已知函數(shù)y與自變量x的關系為: 6.編程:計算π的近似值,π的計算公式為: 要求: (1)n值由鍵盤輸入。 (2)分別輸出當n 為10、100、1000時的計算結果。 (3)輸出時要求每行顯示一組n、π的值,每行形式如下: n=具體值,π = 具體值 7.我國現(xiàn)有人口13億,設年增長率為1%,編寫程序,計算多少年后增加到20億。 8.求解愛因斯坦數(shù)學題。有一條長階梯,若每步跨2階,則最后剩余1階;若每步跨3階,則最后剩2階;若每步跨5階,則最后剩4階;若每步跨6階,則最后剩5階;若每步跨7階,最后才正好一階不剩。請問,這條階梯最少共有多少階? 9.每個蘋果0.8 元,第一天買2 個蘋果,第二天開始,每天買前一天的2 倍,直至購買的蘋果個數(shù)達到不超過100 的最大值。編程:求每天平均花多少錢?(此題為選做) 1.#include {int i;for(i=1;i<=200;i++){if(i%7!=0)continue;printf(“%d ”,i);} } 2.#include max=i;} printf(“max=%dn”,max);} 3.#include if(x!=0){m=x;s=x;} for(i=1;;i++){scanf(“%f”,&x);if(x==0)break;s=s+x;if(m>x)m=x;} a=s/i;printf(“最小值m=%f,平均值a=%f”,m,a);} 4.#include x+=i;else y+=i; printf(“x=%dn”,x);printf(“y=%dn”,y);} 5.#include else {printf(“thank you bey!”);break;} scanf(“%f”,&x);} } 6.#include t=t*(2*i)*(2*i)/(2*i-1)/(2*i+1); i=i+1; } printf(“n=%d,π=%fn”,n,t); } 7.#include printf(“%dn”,x);} 9.#include { d++; n=n*2; p=p+n; } while(p+n*2<=100);s=p*0.8/d;printf(“每天平均花%g元錢!n”,s);} 實驗七 C多重循環(huán)結構程序設計 1.編程:輸出100以內個位數(shù)為6且能被3整除的所有數(shù)。 2.編程:鍵盤輸入6 位學生的5門課成績,分別統(tǒng)計出每個學生的平均成績。 3.編程:輸入一個正整數(shù),統(tǒng)計該數(shù)的各位數(shù)字中零的個數(shù),并求各位數(shù)字中的最大者。4.編程:分別用do while、while、for三種循環(huán)結構求: 1!+2!+3!+...+n!,要求n的值由鍵盤輸入。 5.編程:計算100至1000之間有多少個數(shù)其各位數(shù)字之和是5。 6.編程:從鍵盤輸入的10個整數(shù)中,找出第一個能被7整除的數(shù)。若找到,輸出此數(shù)后退出;若未找到,輸出“not exist”。 7.編程:輸出1至100之間滿足如下條件的數(shù):各位數(shù)的乘積大于各位數(shù)的和。8.編程:將整數(shù)316表示為兩個加數(shù)的和,使這兩個加數(shù)分別能被13和11整除。 9.編程:打印出所有的“水仙花數(shù)”。所謂的“水仙花數(shù)”是指一個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個“水仙花數(shù)”,因為有153=1*1*1+5*5*5+3*3*3。10.編程:一條有10個車站的鐵路線,共需要準備多少種車票? 1.#include {printf(“請輸入第%d個學生的第%d門成績”,i+1,j+1);scanf(“%d”,&a[i][j]);s=s+a[i][j];} s=s/5;printf(“第%d個學生平均成績?yōu)?fn”,i+1,s);} } 3.#include printf(“i=%d,max=%d”,i,max);} 4.#include s=s+a;i++;} print(“s=%d”,s);} #include for(i=100;i<1000;i++){ s=0;k=i;while(k){ s=s+k%10;k=k/10;} if(s!=5)continue;else count++;} printf(“%dn”,count);} 6.#include {scanf(“%d”,&x);if(x%7==0) {printf(“first number is %d”,x);break;} } if(i>10)printf(“not exist!”);} 7.#include for(n=1;n<=100;n++){k=1;s=0;m=n; while(m>=1){k*=m%10;s+=m%10; m=m/10;} if(k>s) } printf(“%dn”,n); } 8.#include for(n=100;n<1000;n++){ i=n/100;j=(n-i*100)/10; k=n%10; if(i*i*i+j*j*j+k*k*k==n) printf(“%dn”,n); } } 實驗八 C程序控制結構綜合應用 1.編程計算: s=1+12+123+1234+12345+123456+1234567。 2.編程: 找出1至99之間的全部同構數(shù)。所謂同構數(shù)是這樣一組數(shù):它出現(xiàn)在其平方數(shù)的右邊。例如:5是25右邊的數(shù),25是625右邊的數(shù),5和25都是同構數(shù)。 3.若用0至9之間不同的三個數(shù)構成一個三位數(shù),編程統(tǒng)計共有多少種方法。4.編程:鍵盤輸入一個不多于5位的正整數(shù),要求:(此題為選做)(1)求它是幾位數(shù) (2)逆序打印出各位數(shù)字。如原數(shù)為123,輸出則為321。5.編程:找出以下疑案的作案人(此題為選做)已知該案涉及6個嫌疑人A、B、C、D、E、F,并且:(1)A、B至少有一人作案。 (2)A、E、F這3人中至少有2人參與作案。(3)A、D不可能是同案犯。 (4)B、C或同時作案,或與本案無關。(5)C、D中有且僅有一人作案。 (6)如果D沒有作案,則E也不可能參與作案。 6.編程:輸出下列形式的楊輝三角形的前10行(此題為選做)1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ?? 1.#include while(i<10){t=t*10+i;s+=t;i++;} printf(“s=%dn”,s);} 2.#include if(i*i%10==i||i*i%100==i) printf(“%dn”,i);} 3.#include for(i=1;i<=9;i++)for(j=0;j<=9;j++) if(i==j)continue;else for(k=0;k<=9;k++)if(k!=i&&k!=j)count++; } printf(“%dn”,count); 實驗九 C的數(shù)組 1.編程實現(xiàn):輸入一個正整數(shù)n(1 例如:輸入5,再輸入三個數(shù)8、23、1、7、19,則輸出為:19、7、1、23、8。 2.編程實現(xiàn):輸入10個正整數(shù),將它們中的最小值與第一個數(shù)交換,最大值與最后一個數(shù)交換,然后輸出交換后的10個數(shù)。 3.編程實現(xiàn):已知二次等差數(shù)列的前4項為2,5,10,17,請定義一維整型數(shù)組存儲該數(shù)列的前20項,并每5個數(shù)為一行輸出該數(shù)列的前20項。 4.已知一組整型數(shù)據(jù)已按從小到大排列好,現(xiàn)任意輸入一個整數(shù),請按原來排序的規(guī)律將它插入到數(shù)組中(例如:原來的一組整數(shù)為1,3,5,8,9,若輸入的整數(shù)是7,則最終的結果為: 1,3,5,7,8,9),請編程實現(xiàn)。 5.編程:將一個4×4的整型矩陣元素按副對角線(右上到左下)互換。 要求: (1)鍵盤輸入矩陣各元素的值。 (2)互換前,按矩陣形式輸出矩陣。 (3)互換后,按矩陣形式輸出矩陣。 6.求一個4×4的整數(shù)矩陣的副對角線(右上到左下)上所有奇數(shù)的和sum及偶數(shù)的平均值ave。 要求:結果保留2位小數(shù) 7.通過循環(huán)按行順序為一個5×5的二維數(shù)組a賦1到25的自然數(shù),然后輸出該數(shù)組的左下半角元素的值和它們之和。 8.定義一個實數(shù)型數(shù)組,將10個實數(shù)輸入到數(shù)組中,編程實現(xiàn)任一塊區(qū)間所有元素的平均值,即輸入兩整數(shù)m,n,計算出數(shù)組中第m個元素開始的后n個元素的平均值,包括第m個元素(若n值過大,即個數(shù)太多,超過數(shù)組的最后一個元素,則統(tǒng)計到最后一個元素)。 例如:數(shù)組元素為1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,輸入3,5,則輸出5.0。9.一個整型數(shù)組有10個元素,編寫程序刪除所有值為n的元素。如:數(shù)組中為1,3,2,4,2,7,9,0,2,5,n的值為2,刪除后輸出數(shù)組元素應該為1,3,4,7,9,0,5。(此題為選做) 10.定義兩個N行N列的二維數(shù)組a、b,編寫程序,將a數(shù)組最后一行放到b數(shù)組的第0列中,把a數(shù)組中的第0行放到b數(shù)組的最后一列中,b所指二維數(shù)組中其他元素的數(shù)據(jù)不變。(此題為選做) 11.試編程實現(xiàn)如下功能:先定義一個4行5列的數(shù)組(矩陣),調用庫函數(shù)rand()隨機產生20-50之間的整數(shù)給數(shù)組元素賦值,再將矩陣中第二列與第四列的元素互換。要求先輸出原數(shù)組,再輸出交換后的數(shù)組(rand函數(shù)的使用請參閱教材259頁)。(此題為選做) 1.#include {a[i]=i*i+1; printf(“%d ”,a[i]); if(i%5==0) } } 4.#include {for(j=9;j>i;j--)a[j]=a[j-1]; a[i]=n; break; } printf(“n”); if(n>=a[8])a[9]=n;for(i=0;i<10;i++)printf(“%d ”,a[i]);printf(“n ”);} 6.#include { for(j=0;j<=3;j++) {printf(“input 16 ints:”);scanf(“%d”,&a[i][j]);} } for(i=0;i<=3;i++){ for(j=3;j>=0;j--){ if(i+j==3){if(a[i][j]%2!=0){s1=s1+a[i][j]; } else { t++;s2=s2+a[i][j];ave=s2/t;} } } } printf(“s=%0.2fnave=%0.2fn”,s1,ave);} 7.#include for(j=0;j<5;j++) { a[i][j]=k; k++; } } putchar(10);for(i=0;i<5;i++){ for(j=0;j<5;j++) printf(“%dt”,a[i][j]); printf(“n”);} putchar(10);for(i=0;i<5;i++){ for(j=0;j<=i;j++) printf(“%dt”,a[i][j]); printf(“n”); s=s+a[i][j];} printf(“s=%d”,s);} 實驗十 C字符數(shù)組和字符串函數(shù)* 1.編寫字符串拷貝程序,并要求拷貝過程中將字符串中的小寫字母轉換成大寫字母。 2.從鍵盤輸入兩個字符串a和b,要求不使用庫函數(shù)strcat,把串b的前5個字符連接到串a中;如果b中的長度小于5,則把b的所有元素都連接到a中。 3.輸入一個以回車結束的字符串(少于80個字符),再輸入一個字符,統(tǒng)計并輸出該字符在字符串中出現(xiàn)的次數(shù),然后輸出該字符串。 4.編程: 輸入一個字符串,輸出該字符串中出現(xiàn)次數(shù)最多的字符以及出現(xiàn)的次數(shù)。5.編程: 鍵盤接收一個字符串(只含大、小寫英文字母),將該字符串加密后輸出。 加密規(guī)則為:若為小寫字母則不變,若為大寫字母則將其轉換為小寫后再后移一個字母,例如“A”應轉換為“b”,“B”應轉換為“c”,“Y”應轉換為“z”,而“Z”應轉換為“a”。 6.編程:輸入一個以回車結束的字符串a(少于80個字符),再輸入一個字符串b,統(tǒng)計并輸出b在a中出現(xiàn)的次數(shù),然后再輸出這兩個字符串。 7.編程:輸入一個以回車結束的字符串(少于80個字符),將該字符串倒序存放后按順序輸出。 例如:如數(shù)組中開始時元素為“abcd”,程序執(zhí)行后數(shù)組中為“dcba”,并輸出“dcba” 8.編程: 實現(xiàn)對字符串的加密,要求從鍵盤輸入一個字符串,輸出加密之后的字符串。(此題為選做) 加密規(guī)則為: 對于串中第奇數(shù)個字符,若是字母,則把該字母變?yōu)樗竺娴淖帜福ㄈ魹閆則變?yōu)锳),不是字母則不變; 對于串中第偶數(shù)個字符,若是字母,則把該字母變?yōu)樗懊娴淖帜福ㄈ魹锳則變?yōu)閆),不是字母則不變; 大小寫字母都遵循此規(guī)則。 例如: 若原字符串是:AbbaZG Ha-MnnK Yzx 加密字符串為:BaczAF Gb-Nmoj Xaw 9.編程:輸入一行英文字符串,統(tǒng)計單詞的個數(shù)(單詞和單詞以空格分隔)。(此題為選做) 1.#include int i,k;printf(“請輸入第一個字符串n”);scanf(“%s”,str1);printf(“請輸入第二個字符串n”);scanf(“%s”,str2);for(i=0;str1[i]!='