实验四循环结构程序设计(答案)

合集下载

实验4_循环结构程序设计答案

实验4_循环结构程序设计答案

实验三循环结构程序设计班级学号姓名完成日期课(内、外)总计本实验用时间一、实验目的1、熟练掌握while语句,do-while语句和for语句的格式和功能,能够用这些语句实现循环结构程序设计的方法。

2、熟练掌握循环语句嵌套使用的基本形式,能够用循环语句实现多重循环。

3、掌握在循环结构程序设计中使用break语句和continue语句改变程序流程。

4、通过编程和调试程序,加深对while语句、do…while语句和for语句的理解,学习编程和测试的基本方法。

5、实验前复习while语句、do…while语句和for语句的概念。

二、实验内容1. 打印100-200之间的所有素数程序代码:#include <stdio.h>#include <math.h>void main(){ int i,j,m,flag;m=0;for(i=101;i<200;i+=2){flag=1;for(j=2;j<=(int)sqrt(i);j++)if(i % j ==0){ flag=0;break;}if(flag==1){ printf("%4d",i);m++;}if(m%5==0) printf("\n");}}printf("\n这样的数有%d个\n",m);}对程序进行测试,并观察运行结果。

将程序的运行情况写在下面。

『运行结果:』2. 编程输出如下上三角形式的九九乘法表。

1 2 3 4 5 6 7 8 9- - - - - - - - -1 2 3 4 5 6 7 8 94 6 8 10 12 14 16 189 12 15 18 21 24 2716 20 24 28 32 3625 30 35 40 4536 42 48 5449 56 6364 7281程序代码:#include <stdio.h>void main(){ int i,j;for(i=1;i<10;i++)printf("%-4d",i);printf("\n");for(i=1;i<10;i++)printf("%-4c",'-');printf("\n");for(i=1;i<10;i++){ for(j=1;j<i;j++)printf("%-4c",' ');for(j=i;j<10;j++)printf("%-4d",i*j);printf("\n");}}对程序进行测试,并观察运行结果。

上机实验4:循环结构程序设计

上机实验4:循环结构程序设计
cp41c实程实算下列实和的近似实入求和精度实106106者实用逗分隔
上机实验4:循环结构程序设计 循环结构程序设计
1.《级数求和》 《级数求和》 ( filename: cp41.c ) 编程,计算下列级数和的近似值,x的值从键盘输 入,求和精度为10-6 ,输出达到精度要求的最小n与 级数和,两者间用逗号分隔。例如, 调试数据: 输入:0.523599 输出:4,0.500000 ⑴ 左例 输入:-1 输出:5,-0.841471 ⑵ 4 输入:6.283185 输出:13,0.000000
提示: 提示: 可模拟人工除法求小数的每一位(设 可模拟人工除法求小数的每一位 设 a=1, b=素数): : 商的整数部分: ⑴ 商的整数部分:a/b 输出( .)。 可用 printf("%d.", a/b); 输出(即0.)。 .) 余数: 余数: a=a%b ; ⑵ 商的小数部分: 商的小数部分: 每位商: 每位余数: 每位商:a*10/b 每位余数:a=a*10%b ; ⑶ 从余数判断循环节是一种简便的方法


4. 《求符合要求的自然数对》 ( filen数对:它们的和为 667,它们的最小公倍数除以最大公约数的商为120。 输出格式为每对一行,小数在前,大数在后,两数间 用逗号分隔,多对则按每对中小数的大小升序排列先 后。
5.《大于正整数a的n个素数》 《大于正整数 的 个素数》 个素数 编程, 输出大于并最接近正整数a的n个素数,每行 打印8个,a 和 n 从键盘输入。例如: 输入: 100 17 输出: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 ( filename: cp45.c )

2019年MATLAB)课后实验答案

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 值。

MATLAB)课后实验答案

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 值。

循环结构程序设计答案

循环结构程序设计答案

循环结构程序设计一、选择题:1.设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是(C)A.w hile 循环执行10次B.循环是无限循环C.循环体语句一次也不执行D. 循环体语句执行一次2.设有以下程序段int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);则()A运行程序段后输出0 B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次3.语句while(!E);中的表达式!E等价于()A. E= =0B.E!=1C.E!=0D.E= =14.下面程序的运行结果是()a=1;b=2;c=2;while(a<b<c) {t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);A.1,2,0B.2,1,0C.1,2,1D.2,1,15.下面程序的运行结果是()x=y=0;while (x<15) y++,x+=++y;printf(“%d,%d”,y,x);A.20,7B.6,12C.20,8D.8,206.下面程序的运行结果是()int n=0;while(n++<=2) ;printf(“%d”,n);A.2B.3C.4D.有语法错7.设有程序段t=0;while(printf(“*”)){t++;if(t<3) break;}A.其中循环控制表达式与0等价B. 其中循环控制表达式与‘0’等价B.其中循环控制表达式是不合法的D.以上说法都不对8.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,请选择填空:#include “stdio.h”main(){int a,b,t;scanf(“%d%d”,&a,&b);while( ______){if(a>b){t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);}}A.!a=bB.a!=bC.a= =bD.a=b9.下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m,n中较大者,请选择填空:#include “stdio.h”main(){int m=0,n=0;char c;while(( 1 )!= ‘\n’){if(c>= ‘A’&&c<= ‘Z’) m++;if(c>= ‘a’&&c<= ‘z’) n++;}printf(“%d\n”,m<n? 2 );}[1]A.c=getchar() B.getchar() C.c=getchar() D.scanf(“%c”,c)[2]A.n:m B.m:n C.m:m D.n:n10.下面程序的功能是将小写字母变成对应大写字母后的第二个字母,其中y变成A,z变成B。

《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案

《C语言程序开发》实验报告和参考答案1实实验报告课程名称:C语言程序开发学生姓名:学生学号:专业班级:指导教师:实验日期:2目录实验一循环结构程序设计(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。

实验二数组及其应用(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

实验三函数及其应用(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。

问第4个学生岁数,他说比第3个学生大2岁。

问第3个学生,又说比第2个学生大2岁。

问第2个学生,说比第1个学生大2岁。

最后问第1个学生,他说是10岁。

请问第5个学生多大。

(二)用选择法对数组中10个整数按由小到大排序,一维数组名作函数参数。

实验四指针及其应用(一)将若干字符串按字母顺序(由小到大)输出。

(二)有a个学生,每个学生有b门课程的成绩。

要求在用户输入学生序号以后,能输出该学生的全部成绩。

用指针函数来实现。

3实验一循环结构程序设计实验题目:(一)求1+2+3+.......+100,1100nn(二)输出100~200之间的不能被3整除的数。

实验目的1.掌握循环语句的执行过程及用法2.初步掌握循环程序设计的基本技巧3.掌握用while语句,do-while语句和for语句实现循环的方法4.掌握多重循环的使用(一)实验步骤1.题目分析2.源程序代码3.运行结果(二)实验步骤:1.题目分析源程序代码3.运行结果4实验二数组及其应用实验题目:(一)有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

(二)输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

实验目的1.掌握一维数组的定义及其元素的引用方法2.掌握利用一维数组实现一些常用算法的基本技巧3.掌握二维数组的定义及其应用4.掌握字符数组和字符串函数的使用5.掌握有关二维数组的基本编程技巧(一)实验步骤:1.题目分析2.源程序代码:3.运行结果(二)实验步骤:1.题目分析2.源程序代码3.运行结果5实验三函数及其应用实验题目:(一)有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。

实验4循环结构——参考答案

实验4循环结构——参考答案

实验4循环结构——参考答案实验四循环结构程序设计参考程序⼀、程序调试⽅法实验上机题⽬:编写程序利⽤公式:!!2!112n x x xe n++++= 求xe 的近似值。

找出并改正以下源程序中错误,得出正确的运⾏结果。

#includevoid main(){int i;float a,e,x;printf("请输⼊x 的值:");scanf("%d",&x); //改为 scanf("%f",&x);e=0; //改为 e=1;i=0; //改为 i=1;a=1;while(a>1e-6); //去掉尾部的分号{a=a*x/i;e=e+a;i++;}printf("循环次数为:%d 次,e 的%d 次⽅为:%f\n",i,x,e);//改为printf("循环次数为:%d 次,e 的%.2f 次⽅为:%f\n",i,x,e);}程序正确的运⾏结果为:请输⼊x 的值:1.0循环次数为:11次,e 的1.00次⽅为:2.718282Press any key to continue⼆、编写程序1、分别利⽤三种循环语句编程,求1+2+3+…50之和。

参照例⼦4-12 (1)while 循环 #includevoid main(){int sum=0,i=1;while(i<=50){sum=sum+i;i++;}printf("1+2+3+...50=%d\n",sum);}(2)do~while循环#includevoid main(){int sum=0,i=1;do{sum=sum+i;i++;}while(i<=50);printf("1=2+3+...50=%d\n",sum);}(3)for循环#includevoid main(){int sum=0,i;for(i=1;i<=50;i++)sum=sum+i;printf("1+2+3+...50=%d\n",sum);}2、编程,输⼊10个整数,求其中正数的个数及其平均值(精确到⼩数点后两位)。

C语言实验报告 实验四 参考答案

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)。

循环结构程序设计习题及答案

循环结构程序设计习题及答案

第6章循环结构程序设计6-1.比较while语句、do–while语句和for语句的异同。

答:(1)while语句、do-while语句用于条件循环,for语句用于计数循环。

(2)while语句、for语句是先判断循环条件,后执行循环体,如果循环条件一开始就不成立,则循环体一次也不被执行;而do-while语句是是先执行循环体,后判断循环条件,所以循环体至少被执行一次。

(3)知道循环的次数可选用for语句实现循环,不知道循环的次数可选用while语句或do-while语句实现循环.(4)一般而言,三种循环语句可等价实现.6-2 仔细阅读下面的程序,指出程序的运行结果.#include<>void main(){ int i;for(i=0;++i;i<5){ if(i==3){printf("%d\n",++i);break;}printf("%d\n",++i);}}答:24思考:语句“for(“i=0;++i;i<5”)在编译时为何会给出语法警告错误当将其改为“for(i=0;i<5;++i)”时,运行结果又将如何6-3 仔细阅读下面的语的程序,指出程序的运行结果。

#include""void main(){ int i, a=0;for(i=1;i<=5;i++){do{i++;a++;} while(i<3);}i++;printf("a=%d,i=%d",a,i);}答:a=3,i=7思考:在for循环中嵌套着do-while循环,那么do-while循环中对i的修改会对for循环产生影响吗6-4编写程序,用1000个单词”computer”填充屏幕,每行60个.解:#include<>void main(){ int i;for(i=1;i<=1000;i++){ printf("computer.");if(i%60==0)printf("\n");}}思考:在for循环中,”if(i%60==0)printf(“\n”);”语句的作用是什么没有此语句将会是什么状况6-5输入一行字符(以$结束),统计其中的数字字符、空格字符出现的次数。

安徽大学C语言实验平台答案(新版)

安徽大学C语言实验平台答案(新版)

实验一 C简单程序设计1. 以下程序用于输入长方形的长、宽,计算长方形的面积、周长和对角线长。

#include <stdio.h>#include <math.h>main(){float x,y,s,l,r;printf("input x,y=");scanf("%f,%f",&x,&y);s=x*y;l=2*(x+y);r=sqrt(x*x+y*y);printf("s=%6.2f l=%6.2f r=%6.2f ",s,l,r);}请调试运行程序,要求:(1) 编辑、编译、链接并运行程序。

(2) 将输出语句改为 printf("s=%6.3f l=%6.3f r=%6.3f ",s,l,r); ,再运行程序,结果是否有变化?(3) 将程序第4行float x,y,s,l,r;与第6行 scanf("%f,%f",&x,&y); 交换位置,再编译,会如何?(4) 混淆程序中的大小写字母。

试分别将printf写为Printf,或将main写为Main或MAIN,或将程序中语句s=x*y;写为S=x*y; 再编译、链接、运行,结果如何?(5) 遗漏语句未尾分号。

如将printf("input x,y=");的分号去掉,再编译、链接、运行,情况如何?(6) 若遗漏scanf()语句中的“&”符号。

例如:若将 scanf("%f,%f",&x,&y); 改为 scanf("%f,%f",x,y); ,或改为 scanf("%f,%f",&x,y);,再重新编译、链接、运行,情况如何?(7) 将scanf()语句中“%f,%f”改为“%f%f”,输入数据的格式是否要变?(8) 参考教材P360页,C.3 高级调试方法,在程序中设置断点,并单步调试程序。

实训四 循环结构程序设计和答案

实训四 循环结构程序设计和答案

实训四循环结构程序设计(注:答案在后面)班级:学号:姓名:实训时间:一、实训目标掌握循环结构程序的设计和调试方法。

1、掌握while、do whil、for三种C循环语句的执行流程。

2、掌握一般循环程序设计的步骤(循环体、循环条件、循环初始化)。

3、学会提前结束程序的方法(break语句)。

4、学会多循环出口时判断循环出口的方法。

5、学会循环程序的调试方法。

6、掌握求极值、分类统计、求素数等常用算法。

7、学会循环嵌套程序的设计和调试方法。

二、语法基础1. 在C语言中,实现循环的语句有: while语句、 do-while语句和语句2. break语句不能出现在()语句中A. switchB.forC. whileD. if…else3.语句while(!y);中的表达式!y等价于A)y==0 B)y!=1 C)y=!0 D) y==14.若有“int a=1,x=1;”,则循环语句“while(a<10) x++; a++;”的循环执行()A.无限次B.不确定次C.10次D.9次5..以下程序段 ( )x=-1;do { x=x*x; }while(x>0);A. 是死循环B. 循环执行一次C. 循环执行二次D. 有语法错误6. 思考题:在循环中,continue语句与break语句的区别是:continue语句只是,break语句。

break语句只能用于语句和语句中。

7.熟悉三种循环语句的执行流程,以计算 s=1+2+3+…+100为例,分别写出三种循环结构的核心程序。

示例:while 语句:s=0;i=1;while(i<=100){s=s+i;i++;}依据右侧的流程,改写为for 语句:do while 语句程序 do while结构流程图NO yes i<=100 i=0 s=s+i s=0 i++ while 下条语句三、实训内容和步骤1、改错(copy下面源程序到VC编辑界面,调试并改错)。

实验4答案 Matlab程序设计1

实验4答案 Matlab程序设计1

实验4 Matlab 程序设计1实验目的:1、 掌握建立和执行M 文件的方法;2、 掌握实现选择结构的方法;3、 掌握实现循环结构的方法。

实验内容:1. 从键盘输入一个4位整数,按如下规则加密后输出。

加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。

a = input('请输入一个四位整数:');a1 = fix(a/1000);a2 = rem(fix(a/100),10);a3 = rem(rem(fix(a/10),100),10);a4 = rem(a,10);a1 = rem(a1+7,10)a2 = rem(a2+7,10)a3 = rem(a3+7,10)a4 = rem(a4+7,10)b1 = a1;a1 = a3;a3 = b1;b2 = a2;a2 = a4;a4 = b2;b = a1*1000+a2*100+a3*10+a42. 求分段函数的值。

,x x x x y x x x x x x x ⎧+- <≠-⎪=-+ ≤<≠≠⎨⎪-- ⎩2226035605231且且及其他用if 语句实现,分别输出x=-5,-3,0,1,2,2.5,3,5时的y 值。

x = input(请输入X 的值:');if x <0 & x~=-3y = x.*x +x-6;elseif x>=0 & x<5 & x~=2 & x~=3y = x.*x-5*x+6;elsey = x.*x-x-1;endy3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E,其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。

要求:(1)分别用if语句和swich语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

(完整版)MATLAB)课后实验答案[1]

(完整版)MATLAB)课后实验答案[1]

实验一 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 O S +⎡⎤=⎢⎥⎣⎦。

解: M 文件如下;5. 下面是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦(1) 求方程的解。

(2) 将方程右边向量元素b 3改为0.53再求解,并比较b 3的变化和解的相对变化。

(3) 计算系数矩阵A 的条件数并分析结论。

解: M 文件如下: 123d4e56g9实验三 选择结构程序设计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 值。

循环结构程序设计课后习题及答案

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别是、、;2、for语句括号内的3个表达式的作用分别是、、;3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环;4、在循环结构中,break语句的作用是;continue语句的作用是;5、当循环条件一开始就为假时,对于while语句、do…while语句、for语句,分别执行循环体次、次、次;6、下面程序段的执行次数:int a=0;whilea=0{ printf"good\n";a--;}7、下面程序段的执行次数:int a=0;whilea==0{ printf"good\n";a--;}8、下面程序段的执行次数:int a=1;whilea=1{ printf"good\n";a++;}9、下面程序段的执行次数:int a=1;whilea==1{ printf"good\n";a++;}10、下列程序段的运行结果是;fori=5;i>=0;i--printf“%d “,i;11、下列程序段的运行结果是;forn=1;n<20;n=n+3printf“%d “,n;12、下列程序段的运行结果是;for ch='a' ;ch<='e' ;ch++printf“%d“,ch-97;13、下列程序段的运行结果是;fori=1,j=5 ; i<j ; i++,j--printf“i=%d j=%d\n“,i,j;14、下列程序段的运行结果是;forn=1 ; nn<20 ; n++printf“%d \n“,n+n;二、选择题1、下列程序段中,死循环的是A、for i=1; ;B、i=32767;{ if++i%2==0 continue; doif++i%3==0 break; { ifi<0 break;} }while++i;C、i=1;D、fori=1; ;whilei--; if++i<10 break;2、下列程序段中,不是死循环的是A、int i=10;B、for ; 1;while1{ i=i%100+1;ifi>100 break;}C、int a=0;D、int x=21;do whilex{ ++a; --x;}whilea>=0;三、阅读程序,写出程序运行结果;1、include"stdio.h"main{int i=0,sum=1;do{sum+=i;i++;}whilei<5;printf"%d\n",sum;}程序运行结果:2、include"stdio.h"main{int a,b;b=10;a=1;whilea<=ba=2;printf"%d\n",a;}程序运行结果:3、include"stdio.h"main{int x=2;whilex--;printf"%d\n",x;}程序运行结果:4、include"stdio.h"main{int x=3;do{printf"%d\n",x-=2;}whilex;}程序运行结果:5、include"stdio.h"main{int i;fori=1;i<=5;i++switchi%5{case 0:printf"";break;case 1:printf"";break;case 2:printf"&";break;default:printf"\n";}}程序运行结果:6、include"stdio.h"main{char ch;whilech=getchar=''putchar++ch;}程序运行结果:7、include"stdio.h"main{int i,j;fori=0;i<=5;i++{forj=1;j<10;j++ifj==5 break;ifi<2 continue;ifi>2 break;printf"j=%d\n",j;}printf"i=%d\n",i;}程序运行结果:8、include"stdio.h"main{int x ,y;x=37,y=13;whilex=y{ifx>yx=x-y;ify>xy=y-x;}printf"x=%d\n",x;}程序运行结果:四、编程题1、输出下列图案12 43 6 94 8 12 165 10 15 20 252、输出下列图案3、编程求2-4+6-8+…-100+102的值;4、输出公元1500年至2500年所有的闰年的年号;5、从键盘上输入若干学生的C语言成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入;循环结构程序设计参考答案一、填空题、1.循环条件循环体循环控制变量2.循环变量赋初值循环测试条件循环变量更新3.执行整个周期外层循环条件为假4.提前结束包含它的循环语句的执行提前结束本次循环周期开始执行下一次循环周期5.0 1 06.07. 18.无数9. 110.5432111.147****161912.0123413.I=1,j=5I=2,j=414.14916二、选择题1. B2. D三、程序运行结果1.112.163.-14.15.&6.bgufsoppo7.i=5J=38.x=1四、编程题1.include"stdio.h"main{int i,j;fori=1;i<=5;i++{forj=1;j<=i;j++printf"%d ",ij;printf"\n";}}2.include"stdio.h"main{int i,j;fori=5;i>=1;i-=2{forj=1;j<=i;j++printf"";printf"\n";}}3.include"stdio.h"main{int i,y=1,s=0;fori=2;i<=102;i+=2{ s=s+yi;y=-1; y=-y; }printf"2-4+6+...-100+102=%d",y;}4.include"stdio.h"main{int i;fori=1500;i<=2500;i++ifi%4==0&&i%100=0||i%400==0printf"%d ",i;}5.include"stdio.h"main{float cj,min,max=0;printf"请输入学生成绩,输入负数时结束:\n";scanf"%f",&cj;min=cj;whilecj>=0{ifcj>maxmax=cj;ifcj<minmin=cj;scanf"%f",&cj;}printf"max=%f\nmin=%f",max,min; }。

C语言循环结构程序设计习题与答案

C语言循环结构程序设计习题与答案

一、单选题1、计算1!+2!+3!+4!+5!编程如下,程序中下划线处应填写#include <stdio.h>void main(){int i;int t= z s=;for(i=l;i<6;i++){t=t*i;s=s+t;)printf("l!+2!+3!+4!+5!=%d\n"z s);)A.l 1B.O 0C.O 1D.l 0正确答案:D2、下面代码段的输出是一int k,m;for(k=0;k<10;k++ ){if(m>50) continue;m=k*k;)printf("%d,%d\n”,k,m);A. 10,64B.9,81C.10,81D.8,64正确答案:A3、对于以下代码:int i;for(i=0;i<10;i++)pnntf("%d",i);for循环结束后,i的值是—A.llB.10C.9D.i不再存在了正确答案:B4、对于以下代码:int i=6;do{printf("%d", i-);}while(i-);正确的是—A,输出6420-2-4…,程序无法停机B,输出6420C.输出6420-2D输出642正确答案:A5、对于以下代码:int i=6;do{printf("%d", i-);}while(i);最后一个输出的值是—A.2B.3C.OD.l正确答案:D6、在代码:while(e)中,e等价于_A.e == 0B.e != 1C.e == 1D.e!=0正确答案:D7、在代码:while© |1)中,e等价于_A.e!=0B.e == 1C.e取任何值D.e == 0正确答案:C8、设有程序段int k=5;while(k=0) k=k-l;则下面描述中正确的是A,循环体语句一次也不执行B.while循环执行5次C.循环体语句执彳亍一次D彳盾环是无限循环正确答案:A9、下面程序段的运行结果是int n=0;while(n++<=2);printf("%d",n);A.有语法错B.2C.4D.3正确答案:C10、若有如下语句int x=3;do{ printf("%d\n"z x -=2);} while(!(-x));则上面程序段—A,是死循环B,输出的是1C.输出的是3和0D,输出的是1和・2正确答案:D11、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空,答案是#includemain()int n,sum=0;n=2345;sum=sum+(n%10)*(n%10);n=_;}while(n);printf("sum=%d"/sum);}A.n/10B.n%10C.n/100D.n/1000正确答案:A12、下面程序段—for(t=l;t< = 100;t++){scanf("%d",&x);if(x<0) continue;printf("%3d",t);)A.最多允许输出100个非负整数B.x>=0时什么也不输出C.printf函数永远也不执行D・当x<0时整个循环结束正确答案:A13、下列运算符中结合方向与其他不同的是A.+=B.< =c.>D.+正确答案:A14、下列运算符中结合方向与其他不同的是A.&&B.?:c.||D.+正确答案:B15、以下代码输出结果是—int x=0,y=20,z=30 ;if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.代码错误,不能输出B.y=50C.y=20D,不确定正确答案:B16、以下代码输出结果是—int x=0z y=20,z=30if ( x||(y=50)>z ) printf("y=%d"z y); else printf("y=%d",y);A.y=20B.代码错误,不能执行C.y=50D,不确定正确答案:B17、下列程序段的输出结果是一int a=3,b=15;a+=b;b=b/2;}while(b>l);printf("%d\rT,a);正确答案:28二、多选题1、在c语言中,叙述正确的是()。

C语言程序设计习题与上机实验(实验答案)

C语言程序设计习题与上机实验(实验答案)

第三部分上机实验与指导(答案)实验三选择结构程序设计1、main(){float score;char grade;printf(“Please input a student’ score:”);scanf(“%f”, &score);while(score>100 || score<0){printf(“\nInput error, try again!”);scanf(“%f”, &score);}switch ( (int)(score/10) ){case 10:case 9: grade=’A’;break;case 8: grade=’B’;break;case 7: grade=’C’;break;case 6: grade=’D’;break;case 5:case 4:case 3:case 2:case 1:case 0: grade=’E’;}printf(“score is %5.1f, score grade is %c.\n”, score, grade);}2、#include <stdio.h>main( ){float x, y ;printf(“Please input x:”);scanf(“%f”, &x);if (x < 0)y = 0;else if (x < 10)y = x ;else if ( x < 20 )y = 10;else if ( x < 40)y = 0.5 * x + 20;else{ printf(“Input Error!”);exit (0);}printf (“y=%g”, y);}3、include <stdio.h>void main(void){int choice;/* 显示菜单及输入提示信息*/printf("----------------------------------------------- \n") ;printf(" The Menu of Data Management \n") ;printf(" 1. Input Data \n") ;printf(" 2. Output Data \n") ;printf(" 3. Insert Data \n") ;printf(" 4. Delete Data \n") ;printf(" 0. Quit System \n") ;printf("----------------------------------------------- \n") ;printf(" Please enter your choice:\n") ;/* 接收从键盘输入的数;*/scanf("%d", &choice);/* 根据输入数据显示不同信息*/switch (choice){case 1: printf("Input Data ") ; break;case 2: printf("Output Data ") ; break;case 3: printf("Insert Data ") ; break;case 4: printf("Delete Data ") ; break;case 0: printf("Thanks!"); break;default: printf("Input Error! ");exit(0);}}实验四循环结构程序设计1、#include <stdio.h>main( ){char ch;int i;for (i=0; i<10;i++);{ch = getchar();if (ch >= ‘a’ && ch <= ‘z’){ch = ch - 32;}putchar (ch);}}2、从键盘输入一个长整数,计算其各位数之和并输出。

实验四 循环结构程序设计答案

实验四  循环结构程序设计答案

实验四 循环结构程序设计1. 根据2222211116123nπ=+++ ,求π的近似值。

当n 分别取100、1000、10000时,结果是多少?要求:分别用循环结构和向量运算(使用sum 函数)来实现。

n=input('n=?'); sum=0; for m=1:nsum=sum+1/m^2; endp=sqrt(6*sum)n=input('n=?'); m=1:n; f=1./(m.^2); s=sum(f); p=sqrt(6*s)2. 根据11113521y n =+++-,求(1)3y <时的最大n 值。

(2)与(1)的n 值对应的y 值。

y=0; n=0; while y<3y=y+1/(2*n+1); n=n+1; end n=n-1 y=y-1/(2*n+1)3. 考虑以下迭代公式:1n na xb x +=+其中a 、b 为正的常数。

(1)编写程序求迭代的结果,迭代的终止条件为5110n n x x -+-≤,迭代初值0 1.0x =,迭代次数不超过500次。

(2)如果迭代过程收敛于r ,那么r的准确值是2b -±,当(,)a b 的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比(1)a=input('a=?');b=input('b=?');x=1.0;n=0;while n<=500y=a/(b+x);if abs(y-x)<=1e-005breakelsex=y;n=n+1;endendx或a=input('a=?');b=input('b=?');x(1)=1.0; % 初值赋值给向量x的第一个元素n=1;while n<=501x(n+1)=a/(b+x(n));if abs(x(n+1)-x(n))<=1e-005breakelsen=n+1;endendx(n)(2)a=input('a=?');b=input('b=?');r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/24. 已知1231231,10,21,32,3n n n n f n f n f n f f f f n ---==⎧⎪==⎪⎨==⎪⎪=-+>⎩求1100~f f 中:(1)最大值、最小值、各数之和。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四循环结构程序设计(解答)
1改错题
(1) 下列程序的功能为:求1〜100之和(和值为5050)并输出。

请纠正程序中存在
错误,使程序实现其功能,程序以文件名sy4_1.c存盘。

#in elude <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);
}
改正后的程序:
#in clude <stdio.h>
main ()
{
int i,sum=0;
i=1;
while(i< = 100)
{
sum=sum+i; i++;
}
prin tf("The sum from 1 to 100 is %d\n",sum); }
(2) 下列程序的功能为:倒序打印26个英文字母。

请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c存盘。

#in clude <stdio.h>
main () {
char x;
x='z:
while(x!='a') {
prin tf("%3d",x);
x++;
}
}
改正后的程序:
#i nclude <stdio.h>
mai n()
{
char x;
x='z:
while(x!='a' -1) 或 while(x>='a') 或 while(x!=96) {
printf("%3 c",x);
x --;
}
}
(3) 下列程序的功能为:输出如下的图形,要
求顶端的*定位在第21字符位置,请纠正程
序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。

*****
*******
#i nclude <stdio.h>
void mai n()
{ int i,j;
for (i=0;i<4;i++)
{ for (j=0;j<=20;j++) prin tf("\n ”);
for (j=0;j<2*i+1;j++) prin tf("*");
}
}
改正后的程序:
#in clude <stdio.h>
void mai n()
{ 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++)
prin tf("*"); prin tf("\n ”);
}
}
2.程序填空
(1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名s y4_4.c存盘。

提示:
“辗转相除法”求两个正整数的最大公约数的算法如下:
①将两数中大的那个数放在 m中,小的放在n中。

②求出m被n除后的余数r。

③若余数为0则执行步骤(7);否则执行步骤(4 )。

④把除数作为新的被除数;把余数作为新的除数。

⑤求出新的余数r。

⑥重复步骤(3)至U( 5)。

⑦输出n, n即为最大公约数。

#i nclude <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存盘。

#in clude <stdio.h>
main ()
{
int day,x1,x2;
day=0;
x仁 1020;
while( _x1>0 )
{
x2=_x1/2-2 ;
x1=x2;
day++;
} printf( day=%d\n ”,day);
}
(3)下列程序的功能为:输出100以内能被3整除且个位数为6的所有整数;请填写
适当的符号或语句,使程序实现其功能,程序以文件名sy4_6.c存盘。

#i nclude <stdio.h>
main ()
{ int i,j;
for(i=0;」<10 ; i++)
{ j=i*10+6;
if ( i%3!=0 ) continue;
prin tf("%d",j);
}
}
3.编程题
(1)编写一个程序实现如下功能:计算1〜100之间所有含8的数之和(程序以文件名
sy4_7.c 存盘)。

参考程序:
#in clude <stdio.h>
main ()
{
int i, sum=0;
for(i=1; i<=100; i++)
if(i%10==8 || i/10==8)
sum+=i;
prin tf("sum=%d\n",sum);
}
(2 )编写一个程序实现如下功能:用下列近似公式计算
e值,误差应小于10-5(程序以文件名sy4_8.c存盘)。

111
e = 1 …-
1! 2! 3! n!
参考程序:
#in clude <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;
prin tf("e=%f\n",e);
(3)编写一个程序实现
如下功能:验证下列结论:任何一个自然数n的立方都等于 n
个连续奇数之和。

例如:13 =1 ; 23 =3+5 ; 33 =7+9+11。

要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时
止(程序以文件名sy4_9.c存盘)。

参考程序:
#in clude <stdio.h>
main ()
{
int num, a, i;
while(1)
{
printf("输入一个自然数(输入0则结束程序):");
scan f("%d", &n um);
if(!num)
break;
a=num*num-num+1; //a 为第一个奇数
prin tf("%d*%d*%d=", num, num, num);
for(i=1; i<=nu m-1; i++)
{
prin tf("%d+", a);
a+=2;
}
prin tf("%d\n", a);
}
}
(4)编写一个程序实现如下功能:求该校的学生总人数(学校有近千名学生,在操场
上排队,5人一行余2人,7人一行余3人,3人一行余1人(程序以文件名sy4_10.c存盘))。

要求:
①使用循环结构编写程序。

②可以使用break语句。

③编译、运行程序,并写出结果
参考程序:
#i nclude <stdio.h>
main ()
{i nt i;
for(i=900;i<=1000;i++)
if(i%5==2&&i%7==3&&i %3==1)
break;
printf(” 学生总人数=%d\n",i);。

相关文档
最新文档