c語言習題答案.doc_第1頁
c語言習題答案.doc_第2頁
c語言習題答案.doc_第3頁
c語言習題答案.doc_第4頁
c語言習題答案.doc_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗一(1) 編程求37+29的值,實習VC環(huán)境。#includevoid main() int a,b,sum;a=37; b=29;sum=a+b;printf(sum=%d,sum);(2) 從鍵盤輸入三個整數,求出最大數并輸出。#includevoid main() int a,b,c,y; int max(int x,int y); printf(input a,b,and c:); scanf(%d,%d,%d,&a,&b,&c); y=max(a,b); y=max(y,c); printf(nmax=%dn,y);int max(int x,int y)int z;if(xy) z=x;else z=y;return(z);(3) 通過上機實踐,運行下列程序并分析輸出結果。A 程序代碼#includevoid main() char ch=a; printf(%c對應的ASCII碼是:%dn,ch,ch); 程序輸出結果:a對應的ASC|碼是:97 B 程序代碼#includevoid main() int a=168; float b=123.456; float x=35.567,y; printf(a=%5dn,a); printf(a=%-5dn,a); printf(b=%6.2fn,b); printf(b=%en,b); y=(int)(x*100+0.5)/100.0; printf(x=f,y=%fn,x,y);程序輸出結果:a=168a=168b=123.46b=1.234560e+002x=f,y=35.567001C程序代碼#includevoid main()int a=168;printf(十進制數%d對應的八進制數是%on,a,a);printf(十進制數%d對應的十六進制數是%xn,a,a);程序輸出結果:十進制數168對應的八進制數是250十進制數168對應的十六進制數是a8實驗二2.1順序結構2.1.1已知a=1.5,b=5.3,c=2.9,計算s=b2 -4ac的結果并輸出。#includevoid main()float a,b,c,s; a=1.5;b=5.3;c=2.9;s=b*b-4*a*c;printf(s的值是%fn,s);2.1.2輸入某學生的三個科目的期末考試成績,計算出該學生的成績總分和平均分。#include void main() int math,english,c_program; float sum ,average; printf(input math,english,c_program:); scanf(%d,%d,%d,&math,&english,&c_program); sum=math+english+c_program; average=sum/3; printf(sum=%.0f,average=%.5f,sum,average);2.1.3輸入圓的半徑,計算圓的面積,設圓周率為3.1416.#includeint main()float r,s;printf(請輸入半徑:);scanf(%f,&r);s=3.1416*r*r;printf(圓的面積為%.6f,s);2.1.4輸入一個兩位數,將其個位數和十位數互換后變成一個新的數,輸出這個數。#include int main(void)int n,a,b;printf(input n:);scanf(%d,&n);b=n%10;a=n/10;n=b*10+a;printf(%dn,n);return 0;2.1.5輸入兩個數a和b,將兩數的值互換后輸出新值。#include void main() int x,y,t; scanf(%d%d,&x,&y);t=x; x=y;y=t; printf(x=%d,y=%dn,x,y); 2.2簡單分支結構2.2.1輸入兩個整數,求出其中的較小值輸出。 #includeint main() int a,b,min; printf(請輸入 a,b:n); scanf(%d,%d,&a,&b);if (ab)min=a;else min=b;printf(最小值是 %dn,min);return 0;2.2.2 輸入x的值并計算分段函數y的值。 x2+2x x=2#include int main(void)double x,y;scanf(%lf,&x);if(x2) y=x*x+2*x;elsey=2*x-1;printf(%.6f,y);return 0;2.2.3 輸入兩個整數并判斷兩數是否相等,輸出相應結論。 #includeint main() int a,b;printf(請輸入兩個整數:n); scanf(%d,%d,&a,&b); if(a=b) printf(a等于b); else printf(a不等于b); return 0;2.2.4 輸入一個整數,若為負數,求出它的平方;若為正數,求出它的立方,并輸出結果。#includevoid main()printf(請輸入一個整數:);double x,y;scanf(%lf,&x);if(x0)y=x*x;elsey=x*x*x;printf(y=f(%f)=%fn,x,y);2.2.5 輸入三個整數,用if-else結構求出其中的最大值。提示:首先求出兩個數的較大值放在一個變量里,然后用這個變量和第三個數再進行一次比較。 #includeint main() int a,b,c,max; printf(請輸入三個數); scanf(%d,%d,%d,&a,&b,&c); if(ab) max=a; else max=b; if(cmax) max=c; else max=a; printf(最大值為%dn,max); return 0; 2.3簡單循環(huán)結構2.3.1 計算1+4+7+301。 #include void main() int i,sum; sum=0;for(i=1;i=301;i=i+3) sum=sum+i;printf(sum=%dn,sum); 2.3.2 循環(huán)輸入某學生八個科目期末考試成績,計算出該學生成績總分和平均分。 #includeint main(void) int i,a; float sum,average; sum=0; for(i=1;i=8;i+) scanf(%d,&a); sum=sum+a; printf(成績總分為%fn,sum); printf(平均分為%fn,sum/8); return 0;2.3.3 輸入n的值,計算n! #includeint main(void) int n,i,a; a=1; printf(請輸入n的值:%dn); scanf(%d,&n); for(i=1;i=n;i+) a=a*i; printf(積=%dn,a); return 0 ;2.3.4 顯示110平方,輸出結果如下圖所示:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100 #includeint main(void)int i,a;for(i=1;i=10;i+)a=i*i;printf(%d*%d=%dn,i,i,i*i);return 0;2.3.5 計算1-3/4+5/7-7/10+的前n 項之和。#include void main()int i,n;float item,flag,sum; sum=0; flag=1;printf(input n:); scanf(%d,&n);for(i=1;i=n;i+) item=flag*(2*i-1)/(3*i-2);sum=sum+item; flag=-flag; printf(%fn,sum); 實驗三3.1.1輸入一個整數x,判定是否為5的倍數。#includeint main(void)int x;printf(x= );scanf(%d,&x);if(x%5=0)printf(能整除5);elseprintf(不能整除5);return 0;3.1.2輸入x,計算并輸入下列分段函數對應的值。 -5 x0Y= x2+2 0=x1#includeint main(void)float x,y;printf(x= );scanf(%f,&x);if(x1) y=x/2;elsey=x*x+2;printf(對應值為%.2fn,y);return 0 ;3.1.3某商場給顧客購物的折扣率如下:購物金額300元 不打折300=購物金額500元 9折500元=購物金額 7折要求輸入一個購物金額(x),輸出打折率(rate)以及購物實際付款金額(x*rate)#includeint main(void)int x,y;printf(x= );scanf(%d,&x);if(x=300&x500)y=0.9*x;printf(打9折,付款%dn,y);elsey=0.7*x;printf(打7折,付款%dn,y);return 0;3.1.4求解一元二次方程ax2+bx+c=0的實數解。#include#includeint main(void)int a,b,c,d,x1,x2;printf(a= ,b= ,c= );scanf(%d,%d,%d,&a,&b,&c);d=b*b-4*a*c;if(d0) double sqrt(double d); x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(x1=%dn,x2=%dn,x1,x2); else if(d=0) x1=(-b+sqrt(d)/(2*a); printf(x1=x2=%dn,x1); else printf(沒有實數解);return 0;3.1.5從鍵盤輸入10個字符,將所有的英文字母轉換為大寫后輸出。#includeint main(void)char i,ch;printf(請輸入 );for(i=1;i=a&ch=z)ch=ch-32;putchar(ch);return 0;3.1.6從鍵盤輸入10個字符,統計其中英文字母、空格、數字字符和其他字符的個數。#includeint main(void)char ch,i;int letter,space,digiter,other;letter=space=digiter=other=0;for(i=1;i=a&ch=A&ch=0&ch=9)digiter+;elseother+;printf(letter=%d,space=%d,digiter=%d,other=%dn,letter,space,digiter,other);return 0;3.2.1輸入一個四位整數的年份,判斷是否為閏年。#includeint main(void)int x,a,b,c;printf(輸入年份:);scanf(%d,&x);a=x%4;b=x%100;c=x%400;if(a=0 & b!=0)|(c=0)printf(閏年);elseprintf(不是閏年);return 0;3.2.2假設自動售貨機出售4種商品,薯片、爆米花、巧克力和可樂,售價分別是每份3.0元、2.5元、4.0元和3.5元。在屏幕上顯示以下菜單,用戶可以連續(xù)查詢商品的價格,當查詢次數超過五次時,退出查詢;不到五次時,用戶可以選擇退出。當用戶輸入編號14,顯示對應商品的價格;輸入0,退出查詢;輸入其他編號,顯示價格為0。#includeint main(void)char price;int i;printf(請輸入商品的名稱:n);for(i=1;i=5;i+)price=getchar();getchar(); switch(price) case 1:printf(售價3.0元n);break; case 2:printf(售價2.5元n);break; case 3:printf(售價4.0元n);break; case 4:printf(售價3.5元n);break; case 0:printf(退出查詢n);break; default :printf(價格為0元n);break; return 0;3.2.3編寫一個程序輸入某人的身高(cm)和體重(kg),按下式確定其體重是否為標準、過胖或過瘦。判斷標準為:標準體重=身高-110;超過標準體重5kg為過胖;低于標準體重5kg為過瘦。#includeint main(void)int x,y,z;printf(請輸入身高和體重:n);scanf(%d,%d,&x,&y);z=x-110;if(y-z5)printf(過胖);else if(y-z-5)printf(過瘦);elseprintf(標準);return 0;3.2.4編寫一個程序,計算購買某物品的總金額,該物品的單價為5元/公斤,購買5公斤以上打九折,購買10公斤以上打八折,購買20公斤以上打7折,購買50公斤以上打6折,購買100公斤以上打5折。(用多分支if語句求解)#includeint main(void)float x,y;printf(購買量n);scanf(%f,&x);if(x=5 & x=10 & x=20 & x=50 & x100)y=0.5*5*x;elsey=5*x;printf(付款%.2fn,y);return 0;3.2.5編寫一個程序,輸出給定的某年某月的天數。#includeint main(void)int year,month,days,leap;printf(年,月:);scanf(%d,%d,&year,&month);switch(month)case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break;case 4: case 6: case 9: case 11:days=30;break;case 2: if(year%4=0 & year%100!=0 | year%400=0) leap=1; else leap=0; if (leap) days=29; else days=28; printf(%d年%d月的天數為%d天n,year,month,days); 實驗四4.1.1輸入一批正整數(以零或負數為結束標志)求其中的奇數和。#include#includeint main(void)int data,sum;sum=0;printf(輸入一批正整數(以零或負數為結束標志): );scanf(%d,&data);while(data0)if(data%2=1)sum=sum+data;scanf(%d,&data);printf(奇數和是%d.n,sum);return 0;4.1.2輸入兩個整數a和n,求a+aa+aaa+(n個a)之和。例如輸入2和3,輸出246(2+22+222)提示:可采用遞推的方法計算當前項item=item*10+a#includeint main(void)int a,n,item,i,sum;i=1;sum=0;item=0;printf(請輸入兩個整數a和n: );scanf(%d,%d,&a,&n);while(i=n)item=item*10+a;sum=sum+item;i=i+;printf(結果為%dn,sum);return 0;4.1.3編寫程序:計算2/1+3/2+5/3+8/5的 近似值。要求計算前n項之和,保留2位小數(該序列從第二項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子)#includeint main(void)float n,i,sum,a,b,item;printf(請輸入n的值:);scanf(%f,&n);sum=0;i=1;a=2;b=1;item=0;while(i=n)sum=sum+a/b;item=a;a=a+b;b=item;i=i+;printf(結果為%.2fn,sum);return 0;4.1.4編寫一個程序,找出被2,3,5整除時余數均為1的最小的10個自然數。#include int main(void)int x,i;i=0;x=1;while(i10)if(x%2=1 & x%3=1 & x%5=1)printf(%dn,x); i+; x+; return 0;4.1.5輸入一個正整數,求它的位數以及各位數字之和,例如123的位數是3,各位數字之和是6.#includeint main(void)int number,digit,i,sum;i=0;sum=0;printf(輸入一個正整數:);scanf(%d,&number);while(number!=0)digit=number%10;number=number/10;sum=sum+digit;i=i+;printf(n,digit);printf(該整數的位數是%dn,各位數字之和是%dn,i,sum);return 0;4.1.6猴子吃桃問題。猴子第一天摘下若干個桃子,當時就吃了一半,還不過癮,就又吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以后每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,求第一天共摘下來多少個桃子?#includeint main(void)int i,a;a=1;for(i=1;i=9;i+)a=(a+1)*2;printf(一共摘了%dn個桃子,a);return 0;4.2.1求100以內的全部素數,每行輸出10個。素數就是只能被1和它本身整除,1不是素數,2是素數。#includeint main(void)int i,m=0,n;for(n=2;n=99;n+)for(i=2;i=n)printf(%4d,n);m+;if(m%10=0)printf(n);return 0;4.2.2有一個四位數,千位上的數字和百位上的數字都被擦掉了,已知十位上的數字是1,個位上的數字是2,又知道這個數如果減去7就能被7整除,減去8就能被8整除,減去9就能被9整除。編寫一個程序求這個四位數。提示:利用窮舉法來解決該問題。#include void main() int x,m,n;for(x=1000;x=9999;x+)m=x%10;n=x/10%10;if(m=2 & n=1 & (x-7)%7=0 & (x-8)%8=0 & (x-9)%9=0)printf(%dn,x); 4.2.3取1元、2元和5元的紙幣共10張,現在要支付15元。編寫程序輸出所有的付法。針對每一種付法,輸出各種面額的紙幣數量。要求將1元、2元和5元設置在最合理的取值范圍內。#include int main()int m, n, k;for (m=0; m=10; m+)for (n=0; n=10; n+)for (k=0; k=10; k+)if (m+2*n+5*k=15)printf(1元:%d張t2元:%d張t5元:%dn, m, n, k);return 0;4.2.4找出200以內的所有完數,并輸出其因子。有一個數的因子之和為該數本身,稱其為完數。提示:使用二重循環(huán)嵌套,外層循環(huán)針對2200之間的所有數,而內層循環(huán)對其中的每一個數判斷其是否是完數,即判斷m的每個因子之和是否等于m。其中因子是2m/2之間能被m整除的數。#includeint main(void)int i,j,k;for(i=1;i=200;i+)k=1;for(j=2;j=i/2;j+)if(i%j=0)k=k+j; if(k=i)printf(%d=1,i);for(j=2;j=i/2;j+)if(i%j=0)printf(+%d,j);printf(n); return 0;4.2.5請編寫程序顯示下列輸出:0 0 10 1 20 1 2 3 0 1 2 3 40 1 2 3 0 1 2 0 10#includeint main(void)int i,j;for(i=0;i=4;i+)for(j=0;j=i;j+)printf(%d ,j);printf(n);for(i=0;i=4;i+)for(j=0;j4-i;j+)printf(%d ,j);printf(n);return 0;4.2.6編寫程序打出下列圖案。 * * * * * * * * * * * * * * * * * * * * * * * * *#includevoid main()int i,j;for(i=1;i=4;i+)for(j=1;j=8-(2*i-1);j+)printf( );for(j=1;j=2*i-1;j+)printf(* );printf(n); for(i=2;i=4;i+)for(j=1;j=2*i-1;j+)printf( );for(j=1;j=8-(2*i-1);j+)printf(* );printf(n);實驗五5.1輸入兩個整形變量a b的值,輸出a+b,a-b,a*b,a/b,(float)a/b,a%b的結果,要求算式的結果連同算式一起輸出,每個算式占一行。#include void main()int a,b;scanf(%d%d,&a,&b);printf(%d+%d=%dn,a,b,a+b);printf(%d-%d=%dn,a,b,a-b);printf(%d*%d=%dn,a,b,a*b);printf(%d/%d=%dn,a,b,a/b);printf(float)%d/%d=%fn,a,b,(float)a/b);printf(%d%d=%dn,a,b,a%b);5.2求前驅字符和后繼字符。輸入一個英文字符,找出它的前驅字符和后繼字符,并按字符的ASCII碼值從大到小的順序輸出這三個字符及其對應的ASCII碼值。#includeint main(void)char ch,before,after;ch=getchar();before=ch-1;after=ch+1;if(beforeA|(beforeZ)before=before+26;printf(%c %c %c %d %d %dn,before,after,ch,before,after,ch);else if(afterz| (afterZ & aftera)after=after-26;printf(%c %c %c %d %d %dn,ch,before,after,ch,before,after); elseprintf(%c %c %c %d %d %dn,after,ch,before,after,ch,before);5.3輸入某個點A的平面坐標(x,y),判斷(輸出)A點是在圓內、圓外還是在圓周上,其中圓心坐標為(2,2),半徑為1.#includeint main(void)float x,y;scanf(%f%f,&x,&y);if(x-2)*(x-2)+(y-2)*(y-2)=1)printf(點A在圓上);else if(x-2)*(x-2)+(y-2)*(y-2)1)printf(點A在圓內);else printf(點A在圓外);return 0;5.4求愛因斯坦數學題。有一條長階,若每步跨兩階,則最后剩余一階;若每步跨三階,則最后剩兩階,若每步跨五階,則最后剩四階;若每步跨六階,則最后剩五階;若每步跨七階,最后正好一階不剩。求長階的階梯數目。#includeint main(void)int i;for(i=1;i=200;i+)if(i%2=1)&(i%3=2)&(i%5=4)&(i%6=5)&i%7=0)printf(%d階,i);return 0;5.5輸入一個正整數,判斷其中的各位數字是否奇偶數交替出現,是輸出“yes”否則輸出“not”#include int main(void) int m,n;printf(請輸入一個正整數:n);scanf(%d,&m); n=m%10;m=m/10; if(n%2+m%10%2 !=1)printf(not); printf(n);elseprintf(yes); printf(n);return 0;5.6輸入一個三位數,判斷是否是一個水仙花數。水仙花數是指三位數的各位數字立方和等于這個三位數本身。例如:153=1*1*1+5*5*5+3*3*3。#includeint main(void)int n,i,j,k;printf(請輸入一個三位數: n);scanf(%d,n);i=n/100;j=(n-i*100)/10;k=n-i*100-j*10;if(i*i*i+j*j*j+k*k*k=n)printf(%d是一個水仙花數,n);elseprintf(%d不是水仙花數,n);實驗六6.1.1輸入一個正整數n(1n=10),再輸入n個整數,輸出偶數位置上數值的平均值(保留兩位小數)#includeint main(void)int a10,i,n,count; float sum,avg;printf(Enter n: ); scanf(%d,&n);printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai); sum=0; count=0; for(i=0;in;i+)if(i+1)%2=0) sum=sum+ai;count+; avg=sum/count;printf(avg=%.2fn,avg); printf(n);6.1.2輸入一個正整數n(1=n=10),再輸入n個整數,輸出最小值及下標(設最小值唯一,下標從0開始)。#includeint main(void) int i,n,min,index ;int a10;printf(Enter n: );scanf(%d,&n);printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai); min=a0;index=0;for(i=1;iai) min=ai;index=i; printf(min=%d,index=%dn,min,index);6.1.3輸入一個正整數n(1=n=10),再輸入n個整數,將最小值與第一個數交換,最大值與最后一個數交換,然后輸出交換后的n個數。#includeint main(void) int i,n,min,max,index ,indexx,t,h;int a10;printf(Enter n: );scanf(%d,&n);printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai); min=a0; max=a0;index=0;indexx=0;for(i=1;iai) min=ai;index=i; t=a0; a0=aindex; aindex=t;if(maxai) max=ai;indexx=i; h=an-1;an-1=aindexx;aindexx=h;for(i=0;i10;i+)printf(%d,ai);return 0;6.1.4輸入一個正整數n(1n=10),再輸入n個數,逆序重新存放并輸入這些數。#includeint main(void) int n,i,j,t;int a10;printf(Enter n: );scanf(%d,&n);printf(Enter %d intergers: ,n);for(i=0;in;i+)scanf(%d,&ai);j=n-1;for(i=0;in/2;i+) t=ai;ai=aj; aj=t;j-; for(i=0;in;i+)printf(%d ,ai); 6.1.5在鍵盤上輸入n個整數,將他們按照從大到小的次序排序后輸出。要求采用冒泡排序法。#include int main(void)int a10,i,n,j,h;printf(Enter n: ); scanf(%d,&n); printf(Enter %d intergers: ,n);for(i=0;in;i+) scanf(%d,&ai);for(j=0;jn-1;j+) for (i=0;in-j-1;i+)if (aiai+1)h=ai; ai=ai+1; ai+1=h;for(i=0;in;i+) printf(%d ,ai); 6.1.6已有一個已按遞增排序的數組,輸入一個整數x,要求按原來排序的規(guī)律將他插入數組中。#include void main()int a10,i,n,j,h,x,t;printf(請輸入整數的個數:);scanf(%d,&n);printf(請輸入%d個正整數:n,n);for(i=0;in;i+)scanf(%d,&ai);for(j=0;jn-1;j+)for (i=0;iai+1)h=ai;ai=ai+1;ai+1=h; printf(請輸入要插入的整數x:);scanf(%d,&x);for(i=0;ix)t=i;break; for(i=n-1;i=t;i-)ai+1=ai;at=x;for(i=0;in+1;i

溫馨提示

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

評論

0/150

提交評論