江苏开放大学实验报告
学 号:
姓 名:
课程代码: 060212
课程名称:《计算机科学导论》
评阅教师:
实验任务一 选择结构程序设计
一、实验学时
2学时
二、实验目的
(一)掌握C语言关系表达式和逻辑表达式的运算和使用;
(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。
三、预习要求
(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;
(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套;
(三)switch语句的形式。
四、实验内容
输入下面两段程序并运行,掌握case语句中break语句的作用。
1./* c3-2.c */ /* c3-3.c */
/* 不含break的switch */ /* 含break的switch */
#include “stdio.h” #include “stdio.h”
void main( ) void main( )
{ int a,m=0,n=0,k=0; { int a,m=0,n=0,k=0;
scanf(“%d”,&a); scanf(“%d”,&a);
switch(a) switch(a)
{ case 1: m++; { case 1: m++; break;
case 2: case 2:
case 3: n++; case 3: n++; break;
case 4: case 4:
case 5: k++; case 5: k++;
} }
printf(“%d,%d,%d\n”,m,n,k); printf(“%d,%d,%d\n”,m,n,k);
} }
分别从键盘上输入1、3、5,写出程序运行的结果。
/* c3-2.c */
/* 不含break的switch */
/* c3-3.c */
/* 含break的switch */
(二)完善程序,从键盘上输入x的值,按下式计算y的值。
编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表达式(x>=1 && x<10)来表示。
下面是用多分支选择结构实现本题的程序结构:
/* c3-4.c if 语句实现的多分支结构 */
#include “stdio.h”
void main( )
{ 定义变量;
输入x;
if (x<1)y=x; //按y=x为变量y赋值;
else if(<10) y=2*x-1; //按y=2x-1为变量y赋值;
else
y=3*x-11; //按y=3x-11为变量y赋值;
printf(“y=%f\n”,y);
}
五、实验注意事项
(一)C程序中表示比较运算的等号用“==”表示,赋值运算符用“=”表示,不能将赋值号“=”用于比较运算。
(二)控制表达式是指任何合法的C语言表达式(不只限于关系或逻辑表达式),只要表达式的值为“非零”,则为“真”,“零”则为“假”
(三)在if语句的嵌套结构中,else与if的配对原则是:每个else总是与同一个程序中、在前面出现的、而且距它最近的一个尚未配对的if构成配对关系。
(四)case及后面的常量表达式,实际仅是起标号作用。控制表达式的值与某个情况常量一旦匹配,那么,在执行下面语句的过程中,只要不遇到break语句,就一直执行下去,而不再判别是否匹配。允许出现多个“case”与一组语句相对应的情况。
六、思考题
(一)下面程序的功能是实现表达式z=( x>=y ? x : y),请将程序填写完整。
/* 分支结构的程序 */
#include “stdio.h”
void main( )
{ int x, y, z;
printf(“Please input x,y:”);
scanf(“%d%d”,&x,&y);
if ( x>=y) z=x;
else z=y;
printf(“z=%d “,z);
}
(二)下面程序的运行结果为__if ( x>=y) z=x__。
实验任务2 循环结构程序设计
一、实验学时
2学时
二、实验目的
(一)掌握用while,do-while,for语句实现循环的方法;
(二)掌握在设计条件型循环结构的程序时,如何正确地设定循环条件,以及如何控制循环的次数。
(三)掌握与循环有关的算法。
三、预习要求
预习教材有关while,do-while,for语句的语法格式,并能通过这三种语句编写、调试单层循环结构的程序。
四、实验内容
(一)分析并运行下面程序段,循环体的执行次数是____。
int a=10,b=0;
do { b+=2;a-=2+b;} while(a>=0);
(二)当执行以下程序段时,循环体执行的次数是___。
x = -1;国开形考答案open5.net或联系QQ/微信:18866732
do { x=x*x;} while( !x);
(三)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。
/* c4-6.c 计算1到100之间的奇数之和及偶数之和 */
#include “stdio.h”
void main( )
{ int a,b,c,i;
a=0,c=0; /*变量初始化*/
for(i=0; i<=100; i+=2)
{ a+=i; /*变量a存放偶数的和*/
b=i+1;
c+=b; /*变量c存放奇数的和*/
}
printf(“sum of evens is %d\n”,a);
printf(“sum of odds is %d\n”, c);
}
(四)编程打印出所有的“水仙花数”,所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。如153=13+33+53。
编程提示:定义一个变量作为循环变量,再定义3个变量分别存放三位数的每位数字,在循环体中将一个三位数拆分成个位、十位、百位后判断循环变量的值是否为水仙花数,如果是则输出,否则不输出。程序的基本结构为:
/* c4-7.c 打印出所有的“水仙花数” */
#include “stdio.h”
void main( )
{ //定义4个整型变量;
int a,b,c,j;
for( j=100; j<=999; j++ )
{ a=j/100; /*分离出百位数*/
b=j/10-a*10; /*分离出十位数*/
c=___________; /*分离出个位数*/
if(j==a*a*a+b*b*b+c*c*c)
输出j ;
}
printf(“\n”);
}
(五)以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请将程序补充完整。
/* c4-8.c 求最大值最小值程序 */
#include “stdio.h”
void main( )
{ float x,amax,amin;
scanf(“%f”,&x);
amax=x;
amin=x;
while ( x>=0 )
{ if (x>amax) amax=x;
if (x<=amin ) amin=x;
scanf(“%f”,&x);
}
printf(“\namax=%f\namin=%f\n”,amax,amin);
}
提交时间:2023