C语言实验三 选择结构程序设计

一、实验目的

(一)掌握C语言关系表达式和逻辑表达式的运算和使用;

(二)正确使用条件控制语句(if语句、switch语句)进行选择结构程序设计。

二、预习要求

(一)关系运算符和关系表达式、逻辑运算符和逻辑表达式;

(二)if语句的三种形式(单分支、双分支、多分支),以及if语句的嵌套;

(三)switch语句的形式。

三、实验内容

  (一)输入下面两段程序并运行,掌握case语句中break语句的作用。

/*  c3-2.c  */              
/* 不含break的switch */       
#include "stdio.h"              
void main( )                   
{ int a,m=0,n=0,k=0;                
 scanf("%d",&a);                
 switch(a)                      
 { case  1: m++;                  
   case  2:                     
   case  3: n++;               
   case  4:                     
   case  5: k++;                 
}                              
printf("%d,%d,%d\n",m,n,k);      
}                         
/*  c3-3.c  */
/* 含break的switch */
#include "stdio.h"
void main( )
{ int a,m=0,n=0,k=0;
scanf("%d",&a);
switch(a)
{ case 1: m++; break;
case 2:
case 3: n++; break;
case 4:
case 5: k++;
}                                    
printf("%d,%d,%d\n",m,n,k);
}                                   

分别从键盘上输入1、3、5,写出程序运行的结果。

(二)完善程序,从键盘上输入x的值,按下式计算y的值。

编程提示:注意逻辑表达式的正确表达方法,数学中的1≤x<10应使用C语言的逻辑表达式(x>=1 && x<10)来表示。

下面是用多分支选择结构实现本题的程序结构:

  /* c3-4.c  if 语句实现的多分支结构 */
  #include "stdio.h"
  void main( )
  { int x,y;  //定义变量;
    scanf("%d",&x);  //输入x;
    if ( x<1 ) 
    y=x;          //按y=x为变量y赋值;
      else if( x>=1 && x<10 ) 
      y=2*x-1;    //按y=2x-1为变量y赋值; 
            else
            y=3*x-11;     //按y=3x-11为变量y赋值; 
    printf("y=%f\n",y);
  }

注意:在赋值语句中2x应该写成2*x。

(三)编写程序,给出一个百分制成绩,要求输出相应的等级A、B、C、D、E。90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。

编程提示:

1.先定义一个整型变量存放百分制成绩、定义一个字符型变量存放相应的等级成绩;

2.输入百分制成绩;

3.将百分制成绩按10分,分档作为switch语句中括号内的表达式;

4.按     case 10:

             case  9:

             case  8:

             case  7:

             case  6:

             default:

这六种匹配情况分别选择不同的入口;

5.输出转换后的等级成绩。

#include "stdio.h"
 int main()
 {
 	int score;
 	printf("请输入分数:");
 	scanf("%d",&score);
 	score=score/10;
 	switch(score)
 	{
 		 case 10:printf("A");break;
 		 case 9:printf("A");break;
 		 case 8:printf("B");break;
		 case 7:printf("C");break;
 		 case 6:printf("D");break;
 		default:printf("E");
 		return 0;
	 }
 }

(四)下面程序运行时从键盘上分别输入(20,15),(15,20),写出运行结果。

  /* c3-5.c  分支结构中的复合语句*/
  #include "stdio.h"
  void main( )
  {   int a,b,t;
      t = 0;
      scanf("%d,%d",&a,&b);
      if (a>b)
        { t = a ;
          a = b ;
          b = t ;
}
    printf("a=%d,b=%d\n",a,b) ;
  }

四、实验注意事项

(一)C程序中表示比较运算的等号用“==”表示,赋值运算符用“=”表示,不能将赋值号“=”用于比较运算。

(二)控制表达式是指任何合法的C语言表达式(不只限于关系或逻辑表达式),只要表达式的值为“非零”,则为“真”,“零”则为“假”

(三)在if语句的嵌套结构中,else与if的配对原则是:每个else总是与同一个程序中、在前面出现的、而且距它最近的一个尚未配对的if构成配对关系。

(四)case及后面的常量表达式,实际仅是起标号作用。控制表达式的值与某个情况常量一旦匹配,那么,在执行下面语句的过程中,只要不遇到break语句,就一直执行下去,而不再判别是否匹配。允许出现多个“case”与一组语句相对应的情况。

五、思考题

三角形成立条件判断及面积计算。

已知三边能围成三角形的条件是:任意两边之和大于第三边。

已知三边求三角形面积的公式:p=(a+b+c)/2, s=sqrt(p*(p-a)*(p-b)*(p-c))

#include "stdio.h"
#include "math.h"
int main()
{
	int a,b,c,p,area;
	printf("请输入a,b,c的值:");
	scanf("%d %d %d",&a,&b,&c);
	if((a+b)>c&&(a+c)>b&&(b+c)>a)
	{
	p=(1.0/2)*(a+b+c);
	area=sqrt(p*(p-a)*(p-b)*(p-c));
	printf("三角形的面积为:%d",area);
	}
	else
	printf("该三角形不存在!\n"); 
	return 0;
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据结构课程设计C语言实验K均值是一项重要的实践课程内容。K均值是一种常用的聚类算法,其主要目的是将一组数据分成K个不同的簇,使得同一簇内的数据相似度较高,不同簇之间的数据差异较大。在这个实验中,学生将会学习如何使用C语言来实现K均值算法,了解其原理及实现过程。 在实验中,学生首先需要了解K均值算法的基本原理,包括选择K值、计算各个数据点与簇中心的距离、更新簇中心等步骤。然后,他们需要使用C语言来编写程序,实现K均值算法的各个步骤。在编写程序的过程中,他们需要运用数据结构中的知识,如数组、链表等来存储和处理数据。 除了编程实现,学生还需要进行实验验证,即使用自己编写的程序对一组给定的数据进行聚类,观察结果是否符合预期。通过实验,学生将会深入理解K均值算法的内部原理,并学会如何使用C语言来实现和应用这一算法。 同时,在实验中,学生还将培养团队合作、问题分析和解决能力等综合素质。因为K均值算法是一个较为复杂的算法,有时会出现各种错误和异常情况,学生需要通过合作讨论、分析和调试程序来解决问题,培养自己的解决问题的能力。 综上所述,数据结构课程设计C语言实验K均值是一项非常有意义和挑战性的实践内容,可以帮助学生将所学的理论知识应用到实际中,培养他们的编程能力和问题解决能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meteor.792

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值