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