实验四 循环结构程序设计(答案)
2019年MATLAB)课后实验答案

实验一 MATLAB 运算基础1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1) 0122sin 851z e =+(2) 21ln(2z x =,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e az a a --+=++=--(4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:: 解:4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
解:(1) 结果:(2). 建立一个字符串向量例如:ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢⎥⎣⎦。
解: M 文件如下;5. 下面是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦(1) 求方程的解。
(2) 将方程右边向量元素b 3改为再求解,并比较b 3的变化和解的相对变化。
(3) 计算系数矩阵A 的条件数并分析结论。
解: M 文件如下:123d4e56g9实验三 选择结构程序设计1. 求分段函数的值。
2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩且且及其他用if 语句实现,分别输出x=,,,,,,时的y 值。
C语言课后实验设计题目及答案

设 total:桃子的总数
x1 :前一天的桃子数
x2 : 后一天的桃子数
day: 天数
计算公式:x1=(x2+1)*2 第1天的桃子数是第2天桃子数加1后的2倍。
(2)求1-1/2+1/3-1/4+⋯⋯,输入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。
实验项目四 分支结构程序设计
题目
(1)输入四个整数,输出其中的最小值。
实验报告
1、主程序:
// zx.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
}
2、主程序:
// s.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
x=x*x*x*x;return(x);
}
int main(int argc, char* argv[])
{
float x;
printf("请输入X=");
scanf("%f",&x);
double s;
MATLAB)课后实验答案

实验一 MATLAB 运算基础1、 先求下列表达式得值,然后显示MATLAB 工作空间得使用情况并保存全部变量。
(1) 0122sin 851z e =+(2) 21ln(2z x =+,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+=++=--L (4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0、5:2、5 解:4、 完成下列操作:(1) 求[100,999]之间能被21整除得数得个数。
(2) 建立一个字符串向量,删除其中得大写字母。
解:(1) 结果:(2)、 建立一个字符串向量 例如:ch='ABC123d4e56Fg9';则要求结果就是:实验二 MATLAB 矩阵分析与处理1、 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵与对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。
解: M 文件如下;5、 下面就是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦(1) 求方程得解。
(2) 将方程右边向量元素b 3改为0、53再求解,并比较b 3得变化与解得相对变化。
(3) 计算系数矩阵A 得条件数并分析结论。
解: M 文件如下:实验三 选择结构程序设计1、 求分段函数得值。
2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩且且及其他用if 语句实现,分别输出x=-5、0,-3、0,1、0,2、0,2、5,3、0,5、0时得y 值。
实验四 循环结构程序设计

#include "stdio.h"
void main( )
{
}
2.从整数1开始向上找,直至m和n中较小的数,每找到一个能同时被m和n整除的整数,将其存入一个变量中,当循环结束时,变量中存放的即为最大公约数。设n为m和n中较小的数,则如下程序段可实现:
for(k=1; k<=n; k++) if(m%k==0 && n%k==0) x=k;
}
2.字符常量’0’与数值常量0是不同的。
(六)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。
/* c4-6.c */
/* 计算1到100之间的奇数之和及偶数之和 */
#include "stdio.h"
void main( )
六、思考题
(一)求两个正整数x和y的最大公约数,请填空。
/* 求最大公约数程序 */
#include "stdio.h"
void main( )
{ int x,y,t,i;
printf("请输入两个数:");
scanf("%d,%d",&x,&y); /*注意scanf语句中间用“,”隔开*/
if(x > y){t = x; x = y; y = t;}
程序的基本结构如下:
/* c4-9.c */
/* 按条件求数列和 */
#include "stdio.h"
void main( )
{定义变量;
变量赋初值;
电大专科c++实验四循环结构程序设计

3.掌握使用for循环语句编写应用程序及其编写技巧.
4.掌握使用break语句及循环语句编写应用程序及其编写技巧.
5.掌握使用continue语句及循环语句编写应用程序及其编写技巧
二、实验要求
能够编写一些有实际应用意义的循环结构的程序
三、实验内容(要求:针对实验案例的每项工作,撰写完成实验的步骤)
#include
Void mian()
{ int x,y,z,num,num1;
For(x=1;x<101;x++)
For(z=1;z<101;z++)
{ num=x+y+z;
Num1=5*x+3*y+z/3.0;
If(num==100&& num1==100)
Cout<<"公鸡="<<X<<",母鸡="<<Y<<",鸡雏="<<Z<<"ENDL;
1.用近似公式∏/4≈1-1/3+1/5-1/7+1/9-1/11+…,计算∏的近似值,要求最后一项小于10-6即可.#include# Nhomakorabeanclude
Void maid()
{ float n,t,pi;int s;
T=1.0;pi=0.0;n=1.0;s=1;
While(favs(t)>=1e-6)
{ pi+=t;
n+=2;
s=-s;
t=s/n;
}
实验报告4

实验四:循环结构程序设计班级:学生姓名:学号:一、实验目的1、理解循环的概念2、理解并掌握循环结构相关语句的含义、格式及使用3、学会循环的应用及控制,包括:①掌握使用循环输入多个数据的方法②掌握在多个数据中有选择地输出数据的方法③掌握在多个数据中对某种数据进行计数的方法④掌握求多个数据中最大值、最小值的方法⑤掌握使用break、continue语句终止循环4、掌握循环的嵌套二、知识要点1、循环变量、循环条件、循环体的概念2、三种循环语句的一般格式、执行过程3、理解选择结构与循环结构中“条件表达式”之不同含义4、二重循环的执行过程三、实验预习(要求做实验前完成)1、循环变量的主要用途是:2、用循环求多个数的和之前,先要把和的初始值赋为:3、用循环求多个数的乘积之前,先要把乘积的初始值赋为:4、字符变量能否作为循环变量?5、循环过程中,如果循环条件成立,但需要结束循环,可采用什么办法?6、什么叫循环的嵌套?四、实验内容(要求提供:①算法描述或流程图②源程序)1. 编程,利用循环计算以下表达式的值:(5+52)*(4+42)*(3+32)*(2+22)*(1+12)*(1/2+1/3+1/4+1/5)(for循环)include <stdio.h>#include <stdlib.h>int main(){int a;double sum=1,sum1=0;for(a=1;a<=5;a++)sum=sum*(a+a*a);printf("结果为%lf\n",sum);for(a=2;a<=5;a++)sum1=sum1+(1.0/a);printf("%lf\n",sum1);printf("结果为%lf\n",sum*sum1);return 0;}2. 编程,从键盘输入若干个整数,当输入0时,输入停止。
matlab实验4_循环结构程序设计_参考解答

高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
clear all; close all; clc; y=0; n=1; while y<3
y=y+1/(2*n-1); n=n+1; end n=n-1; y=y-1/(2*n-1) n=n-1
运行结果:
y= 2.9944
x1=a/(b+x0); y=abs(x1-x0); x0=x1;
MATLAB 语言
3
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
实验四:循环结构程序设计
n=n+1; end x1 r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2
clear all; close all; clc; prime=[]; for n=2:49
x=n*(n+1)-1; signx=0; for k=2:sqrt(x)
MATLAB 语言
5
WangChengyou © 山东大学威海分校
高教社刘卫国《MATLAB 程序设计与应用》(第二版)实验参考解答
根据
π2 6
=1 12
+
1 22
+1 32
+"+
1 n2
,求 π 的近似值。当
n
分别取
100、1000、10000
时,
结果是多少?
要求:分别用循环结构和向量运算(使用 sum 函数)来实现。 答:程序设计:
(1) 循环结构
C语言实验报告 实验四 参考答案

实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四循环结构程序设计(解答)
1.改错题
(1)下列程序的功能为:求1~100之和(和值为5050)并输出。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。
#include <stdio.h>
main()
{
int i,sum=0;
i=1;
while(i<100)
sum=sum+i;
i++;
printf(“The sum from 1 to 100 is %d\n”,sum);
}
改正后的程序:
#include <stdio.h>
main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("The sum from 1 to 100 is %d\n",sum);
}
(2)下列程序的功能为:倒序打印26个英文字母。
请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c存盘。
#include <stdio.h>
main()
{
char x;
x='z';
while(x!='a')
{
printf("%3d",x);
x++;
}
}
改正后的程序:
#include <stdio.h>
main()
{
char x;
x='z';
while(x!='a'-1) 或while(x>='a') 或while(x!=96)
{
printf("%3c",x);
x- -;
}
}
(3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。
*
***
*****
*******
#include <stdio.h>
void main()
{ int i,j;
for (i=0;i<4;i++)
{ for (j=0;j<=20;j++)
printf("\n");
for (j=0;j<2*i+1;j++)
printf("*");
}
}
改正后的程序:
#include <stdio.h>
void main()
{ int i,j;
for (i=0;i<4;i++)
{ for (j=0;j<=20-i;j++)
printf(" ");
for (j=0;j<2*i+1;j++)
printf("*");
printf("\n");
}
}
2.程序填空
(1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。
提示:
“辗转相除法”求两个正整数的最大公约数的算法如下:
①将两数中大的那个数放在m中,小的放在n中。
②求出m被n除后的余数r。
③若余数为0则执行步骤(7);否则执行步骤(4)。
④把除数作为新的被除数;把余数作为新的除数。
⑤求出新的余数r。
⑥重复步骤(3)到(5)。
⑦输出n,n即为最大公约数。
#include <stdio.h>
main ()
{
int r, m, n, t ;
scanf ("%d%d",&m,&n);
if (m<n)
{ t=m; m=n; n=t; } 或t=m,m=n,n=t;
r = m%n;
while (r)
{ m=n;
n=r;
r= m%n ;
}
printf ("%d\n",n);
}
(2)下列程序的功能为:计算1020个西瓜几天后能卖完(第一天卖了一半多两个,以后每天卖剩的一半多两个);请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_5.c存盘。
#include <stdio.h>
main()
{
int day,x1,x2;
day=0;
x1=1020;
while( x1>0 )
{
x2= x1/2-2 ;
x1=x2;
day++;
}
printf(“day=%d\n”,day);
}
(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c存盘。
#include <stdio.h>
main()
{ int i,j;
for(i=0; i<10 ; i++)
{ j=i*10+6;
if ( i%3!=0 ) continue;
printf("%d",j);
}
}
3.编程题
(1)编写一个程序实现如下功能:计算1~100之间所有含8的数之和(程序以文件名sy4_7.c 存盘)。
参考程序:
#include <stdio.h>
main()
{
int i, sum=0;
for(i=1; i<=100; i++)
if(i%10==8 || i/10==8)
sum+=i;
printf("sum=%d\n",sum);
}
(2)编写一个程序实现如下功能:用下列近似公式计算e 值,误差应小于10-5(程序以文件名sy4_8.c 存盘)。
++++=!31!21!111e …!
1n + 参考程序:
#include <stdio.h>
main()
{
int i=0 ;
long n=1;
float e=0, t=1;
while(t>1e-5)
{
e+=t;
i++;
n*=i;
t=1.0/n;
}
printf("e=%f\n",e);
}
(3)编写一个程序实现如下功能:验证下列结论:任何一个自然数n的立方都等于n 个连续奇数之和。
例如:13 =1 ;23 =3+5 ;33 =7+9+11 。
要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0 时止(程序以文件名sy4_9.c存盘)。
参考程序:
#include <stdio.h>
main()
{
int num, a, i;
while(1)
{
printf("输入一个自然数(输入0则结束程序):");
scanf("%d",&num);
if(!num)
break;
a=num*num-num+1; //a为第一个奇数
printf("%d*%d*%d=",num, num,num);
for(i=1; i<=num-1; i++)
{
printf("%d+", a);
a+=2;
}
printf("%d\n", a);
}
}
(4)编写一个程序实现如下功能:求该校的学生总人数(学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人(程序以文件名sy4_10.c存盘))。
要求:
①使用循环结构编写程序。
②可以使用break语句。
③编译、运行程序,并写出结果
参考程序:
#include <stdio.h>
main()
{int i;
for(i=900;i<=1000;i++)
if(i%5==2&&i%7==3&&i%3==1)
break;
printf("学生总人数=%d\n",i); }。