《vc c++ c語言編程作業(yè)題,實驗題答案 循環(huán)結(jié)構程序設計》由會員分享,可在線閱讀,更多相關《vc c++ c語言編程作業(yè)題,實驗題答案 循環(huán)結(jié)構程序設計(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精品文檔,僅供學習與交流,如有侵權請聯(lián)系網(wǎng)站刪除
實驗五 循環(huán)結(jié)構程序設計
實驗名稱
循環(huán)結(jié)構程序設計
成績
姓 名
學號
班級
實驗地點
完成日期
一、實驗目的
1) 熟悉并掌握用while語句,do-while語句和for語句實現(xiàn)循環(huán)的方法。
2) 掌握在程序設計中用循環(huán)的方法實現(xiàn)一些常用算法(如窮舉、迭代、遞推等)。
3) 進一步學習調(diào)試程序。
二、實驗內(nèi)容與步驟
本實驗編程序并上機調(diào)試運行。
(1). 輸入兩個正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)。
在運行時,輸入的值m>n,
2、觀察結(jié)果是否正確。
再輸入時,使m<n,觀察結(jié)果是否正確。
修改程序,不論m和n為何值(包括負整數(shù)),都能得到正確結(jié)果。
#include<stdio.h>
#include<math.h>
main(){
int n,m,a,b,x;int i;
printf("輸入兩整數(shù)m n: ");
scanf("%d %d",&a,&b); //輸入兩整數(shù)
m=abs(a); //取絕對值
n=abs(b);
if(m==0 || n==0){printf(&
3、quot;不能為0.\n");}
else{
if(n>m){x=m,m=n,n=x;} //m為較大的數(shù),n為較小的數(shù),m,n輾轉(zhuǎn)相減。
while(m-n!=0){x=abs(m-n);m=n;n=x;} //輾轉(zhuǎn)相減法求得最大公約數(shù)(m)
i=abs(a*b/m); //i為最小公倍數(shù)
printf("\na,b最大公約數(shù): %d\n",m);
printf("a,b最小公倍數(shù): %d\n",i);
(2). 輸入一行字符,分別統(tǒng)計出其中的
4、英文字母、空格、數(shù)字和其它字符的個數(shù)。
在得到正確結(jié)果后,請修改程序使之能分別統(tǒng)計大小寫字母、空格、數(shù)字和其它字符的個數(shù)。
#include<stdio.h>
#include<string.h>
main(){
char s[200];//定義字符串數(shù)組
int L,i, qt,kg,zmxx,zmdx,num;//定義計量數(shù):長度、位置、其他、字母小寫、大寫、數(shù)字。
qt=kg=zmxx=zmdx=num=0;//計量數(shù)初始化
printf("字符串:");
gets(s);//輸入字符串
L=strlen(s);
5、//取得字符串長度
for(i=0;i<=L;i++){//計量……
if(s[i]==32){kg++;}//空格
else if(s[i]>=48 && s[i]<=57){num++;}//數(shù)字
else if(s[i]>=97 && s[i]<=122){zmxx++;}//小寫字母
else if(s[i]>=65 && s[i]<=90){zmdx++;}//大寫字母
else{qt++;} //其他字符
qt=qt-1;//除去“\0”這一個位
pr
6、intf("空格:%d\n數(shù)字:%d\n字母:%d 大寫:%d 小寫:%d\n其他:%d\n",kg,num,zmdx+zmxx,zmdx,zmxx,qt);
(3). 用牛頓迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。
在得到正確結(jié)果后,請修改程序使所設的x初值由1.5改變?yōu)?00、1000、10000,再運行,觀察結(jié)果,分析不同的x初值對結(jié)果有沒有影響,為什么?
修改程序,使之能輸出迭代的次數(shù)和每次迭代的結(jié)果,分析不同的x初始值對迭代的次數(shù)有無影響。
#include<stdio.h>
7、#include<math.h>
main(){
int i;
long double y,x,y1;
x=1.5;
for(i=1;i<=20;i++){
y=2*pow(x,3)-4*pow(x,2)+3*x-6;
y1=6*x*x-8*x+3;
x=x-y/y1;
printf("%d x=%.10f\n",i,x);
可見,初始值不同,不影響結(jié)果,但影響迭代次數(shù)。
(4). 猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二
8、天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩一個桃子了。求第一天共摘了多少桃子。
在得到正確結(jié)果后,修改題目,改為猴子每天吃了前一天剩下的一半后,再吃兩個。請修改程序,并運行,檢查結(jié)果是否正確。
#include<stdio.h>
main(){
int a ,i;
a=1;
printf("每天吃一半零2個.\n\n");
printf("第%2d 天不吃也只剩%4d 只\n",10,a);
for(i=10-1;i>0;i--){
a=(a+2)*2;
printf("第%2d 天未吃前剩下%4d 只\n",i,a);
printf("第 1 天總共摘來了%4d 只\n",a);
三、實驗心得
【精品文檔】第 3 頁