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

实验二 数据类型运算符与表达式

实验三 选择结构程序设计

实验四 循环结构序设计

实验五 数组和字符串

实验六 函数

实验七 指针

实验八 结构体与文件读写

结课实验 俄罗斯方块小游戏

目录

前言

知识纲要

实验内容

实验结果

第一个小实验

第二个小实验

第三个小实验

结语


前言

这一系列文章所记录的是大一上学期学的一门名为《C语言程序设计》的实验内容,一共包括了八个实验,由于实验一是安装VC以及打印“hello,world”的基本操作,故没有放在这个系列里面,这些实验的代码部分参考与网上,仅供学习和参考~ 


 知识纲要

  1. 要注意逻辑表达式的优化规则,“与”运算符左段为“假”或“或”运算左段为“真”时其右侧的表达式将不再求值;
  2. 条件运算符在根据条件求值时特别实用,可以避免用分支结构,从而简化程序代码,其优先级较低,且是右结合的运算符;
  3. if语句和switch语句后边的表达式要放在一对圆括号中,且圆括号后不要加分号,else后也不要加分号。分支有多个语句时要加花括号构成一个复合语句,复合语句的花括号后也不要加分号。switch后的多个case语句要放在一对花括号中,case语句后是冒号而不是分号,在碰到break语句之前,后面的case语句也会执行。case语句后的表达式只能是常量表达式,且各个case语句后不能有相同的常量值。
  4. 分支结构可以相互嵌套,不平衡if结构嵌套时要注意else与if的配对关系,它总是与最近还没有配对的if配对。

实验内容

1.输入一个日期,判断输入的日期是否合法。

要求:先提示“输入一个日期(yyyy-m-d):”,按“yyyy-m-d”格式输入日期,判断输入的日期是否合法(年份1-9999,月份1-12,日期不同月份不同在1-31、30或28、29之间,二月份要考虑闰年),不合法时输出是年份、月份、还是日期错误。合法时按格式“输入的日期是: yyyy年mm月dd日”的 格式输出该日期。运行界面如下图所示。

2.输入一个日期,计算并显示该日期是这一年的第几天。

要求:在上一题的基础上,当输入日期合法时输出“yyyy年mm月dd日是yyyy年的第XXX天。”。计算时也要考虑闰年,用switch语句实现。运行界面如下图所示。

3.输入三角形的三条边长,判断能否构成三角形,若能,判断是否等边、等腰三角形,同时判断是直角、锐角还是钝角三角形。

要求:先提示“输入三角形的三个边长:”,输入的三个数据用逗号分割,通过scanf函数的返回值判断是否正确输入了三个数,然后判断能否构成三角形(任意两边和大于第三边),程序运行界面如下图所示。

提示:判断是直角、锐角、钝角三角形的方法是,先找到最长的边,若最长边的平方等于其它两边的平方和是直角三角形,小于其它两边的平方和是锐角三角形,大于其它两边的平方和是锐角三角形。

 


实验结果

注:(只展示.c源文件代码)

第一个小实验

#include<stdio.h>
int main()
{
	int year,month,day;
	printf("输入一个日期(yyyy-m-d):");
	scanf("%d-%d-%d",&year,&month,&day);
	if(year<=0||year>9999)
	{
		printf("年份出错");
		return 0;
	}
	else if(month>12)
	{
		printf("月份出错");
		return 0;
	}
	else if(((1==month||3==month||5==month||7==month||8==month||10==month||12==month)&&day>=32)||((2==month||4==month||6==month||9==month||11==month)&&day>=31))
	{
		printf("日期出错");
		return 0;
	}
	else if((year%4==0&&year%100!=0)&&(month==2&&day>29))
	{
		printf("日期出错");
		return 0;
	}
	else if((year%4!=0)&&(month==2&&day>28))
	{   printf("日期出错");
	    return 0;
	}
	else 
	{
		goto end;
	}
	
      end:
	printf("输入的日期是:%d年%d月%d日",year,month,day);
	return 0;
}

第二个小实验

#include<stdio.h>
int main()
{
		int year,month,day,i,z,r;
	printf("输入一个日期(yyyy-m-d):");
	scanf("%d-%d-%d",&year,&month,&day);
	if(year<=0||year>9999)
	{
		printf("年份出错");
		return 0;
	}
	else if(month>12)
	{
		printf("月份出错");
		return 0;
	}
	else if(((1==month||3==month||5==month||7==month||8==month||10==month||12==month)&&day>=32)||((2==month||4==month||6==month||9==month||11==month)&&day>=31))
	{
		printf("日期出错");
		return 0;
	}
	else if((year%4==0&&year%100!=0)&&(month==2&&day>29))
	{
		printf("日期出错");
		return 0;
	}
	else if((year%4!=0)&&(month==2&&day>28))
	{   printf("日期出错");
	    return 0;
	}
	z=day,r=0;
	for(i=0;i<month;i++){
	switch(i)
	{
	case 1:r=31;break;
	case 2:{
		if((year%4==0&&year%100!=0)||(year%400==0))
		{ r=29;
		}
		else
		{ r=28;
		}
		break;}
	case 3:r=31;break;
	case 4:r=30;break;
	case 5:r=31;break;
	case 6:r=30;break;
	case 7:r=31;break;
	case 8:r=31;break;
	case 9:r=30;break;
	case 10:r=31;break;
	case 11:r=30;break;
	case 12:r=31;break;
	}
	z=z+r;}
printf("%d年%.2d月%.2d日是%d年的第%.2d天\n",year,month,day,year,z);
	return 0;
}

第三个小实验

#include<stdio.h>
int main()
{
int s1,s2,s3,t1;
printf("输入三角形三边的长度 (s1,s2,s3):");
scanf("%d,%d,%d",&s1,&s2,&s3);
if(s1>s2+s3||s2>s1+s3||s3>s2+s3)
{
	printf("数据输入错误!");
    return 0;
}
printf("由边长是%d,%d,%d三边构成的三角形是:",s1,s2,s3);
if(s1==s2&&s1==s3)
	printf("等边");
else
{
	if(s1==s2||s2==s3||s1==s3)
		printf("等腰");
    if(s3<s1) t1=s3,s3=s1,s1=t1;//使得s3作为三个数中最大的数而存在
    if(s3<s2) t1=s3,s3=s2,s2=t1;//为下面讨论三边的平方做铺垫


	if(s3*s3==s1*s1+s2*s2) printf("直角");
	else if (s3*s3>s1*s1+s2*s2) printf("钝角");
	else printf("锐角");
}
	printf("三角形\n");
return 0;
}

结语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hiddenSharp429

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

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

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

打赏作者

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

抵扣说明:

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

余额充值