一、实验目的及要求
(宋体五号字,1.5倍行距,下同)
1. 掌握集成环境中设计C程序的方法;
2、掌握数据类型、运算符、表达式在编程中的使用;
3、掌握顺序结构、选择结构的运用
4、能用C语言基本语法解决一些小的应用问题。
二、实验使用的主要设备(含软件系统)及要求
实验设备:计算机+网络
软件:Visual C++/Dev-Cpp
平台:educoder.net 头歌实践平台
三、实验操作过程及内容
1. 输入三角形的三边求三角形的面积(顺序结构)。
2. 输入一个四位数的整数,逆序输出其个、十、百、千位(顺序结构,算术运算)
3. 请输入一元二次方程的3个系数,求解该一元二次方程,包含:复数解,实解的情况。
4. 输入三角形三条边,是三角形的话,判断是什么三角形(等边,等腰,普通),然后计算三角形周长和面积。
5. 用switch语句实现输入某年某月某日,判断这一天是这一年的第几天 。
6. 用switch语句实现输入一个不多余5位的正整数,要求①求出它是几位数②分别输出每一位数字③按逆序输出各位数字
- 实验结论、问题与建议(含取得的成果)
1.程序代码:
#include <stdio.h>
#include<math.h>
int main()
{
float a,b,c,s;
double area;
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%f b=%f c=%f\narea=%f\n",a,b,c,area);
return 0;
}
运行结果:
测试输入:3 4 5
实际输出:a=3.000000 b=4.000000 c=5.000000 area=6.000000
- 程序代码:
#include <stdio.h>
int main()
{
int x,b0,b1,b2,b3;
scanf("%d",&x);
b0=x%10;
x=x/10;
b1=x%10;
x=x/10;
b2=x%10;
x=x/10;
b3=x%10;
printf("%d,%d,%d,%d\n",b0,b1,b2,b3);
return 0;
}
运行结果:
测试输入: 实际输出:4321
1234
3.程序代码:
#include <stdio.h>
#include<math.h>
int main()
{
/**********Bigin**********/
double a, b, c, d, e,f;
double x,x1, x2;
/**********Bigin**********/
scanf("%lf%lf%lf",&a,&b,&c);
d=(pow(b,2))-(4*a*c);
if(a==0&&b==0)
printf("无解\n");
else if(a==0&&b!=0)
{
x=-c/b;
printf("x=%.2f",x);
}
else if(d==0)
{
x1=-b/(2*a);
printf("x1=x1=%.2f\n",x1);
}
else if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%.2f\nx2=%.2f\n",x1,x2);
}
else
{
e=-b/2/a;
f=sqrt(4*a*c-b*b)/(2*a);
printf("x1=%.2f+%.2fi\n",e,f);
printf("x2=%.2f-%.2fi\n",e,f);
} return 0;
}
运行结果:测试输入: 0 0 5 预期输出: 无解 测试输入: 0 2 -5 预期输出: x=2.50 测试输入: 1 2 1 预期输出: x1=x1=-1.00 测试输入: 1 -5 3 预期输出: x1=4.30 x2=0.70 测试输入: 2 -3 7 预期输出: x1=0.75+1.71i x2=0.75-1.71i
4.程序代码:
#include <stdio.h>
#include<math.h>
int main()
{
double t,s;
int a,b,c,l;
scanf("%d%d%d",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a)
printf("不构成三角形\n");
else
{
t=(a+b+c)/2.0;
s=sqrt(s*(s-a)*(s-b)*(s-c));
l=a+b+c;
printf(“%lf %d ”,s,l);
if(a==b&&b==c)
printf("等边三角形\n");
else if(a==b||a==c||b==c)
printf("等腰三角行\n");
else if((pow(a,2)+pow(b,2)==pow(c,2))||(pow(b,2)+pow(c,2)==pow(a,2))||(pow(a,2)+pow(c,2)==pow(b,2)))
printf("直角三角形\n");
else
printf("普通三角形\n");
}
return 0;
}
运行结果:输入: 1 2 3 预期输出: 不构成三角形;输入:9 2 3 4 预期输出: 普通三角形;输入:10 3 3 4 预期输出: 等腰三角行;输入:9 3 3 3 预期输出: 等边三角形;输入:6 12 3 4 5 预期输出: 直角三角形
5.程序代码:
#include<stdio.h>
int main()
{
int day,month,year,num=0,leap;
scanf("%d%d%d",&year,&month,&day);
/*****先计算某月以前月份的总天数*****/
/********** Begin **********/
switch(month)
{
case 12: num +=30;
case 11: num+=31;
case 10: num+=30;
case 9: num+=31;
case 8: num+=31;
case 7: num+=30;
case 6: num+=31;
case 5: num+=30;
case 4: num+=31;
case 3: num+=28;
case 2: num+=31;
}
num+=day;
/********** End **********/
/*****再加上当月的天数*****/
if(year%4==0&&year%100!=0||year%400==0)
leap=1;
else
leap=0;
/*****判断是不是闰年*****/
/********** Begin **********/
num+=leap;
/********** End **********/
/*****如果是闰年且月份大于2,总天数应该加一天*****/
/********** Begin **********/
/********** End **********/
printf("这一天是这一年的第%d天",num);
return 0;
}
运行结果:
测试输入: 实际输出:这一天是这一年的第256天
2020 9 12
6.
程序代码:
#include <stdio.h>
#include <math.h>
int main()
{
int num,y,x1,x2,x3,x4,x5,place;
scanf("%d",&num);
place=log10((double)num)+1;//
/********** Begin **********/ y=num;
x1=y%10;
y=y/10;
x2=y%10;
y=y/10;
x3=y%10;
y=y/10;
x4=y%10;
y=y/10;
x5=y%10;
printf("%d为%d位数\n",num,place);
printf("顺序输出为:");
switch(place)
{
case 5:printf("%d,",x5);
case 4:printf("%d,",x4);
case 3:printf("%d,",x3);
case 2:printf("%d,",x2);
case 1:printf("%d\n",x1);
}
printf("逆序输出为:");
switch(place)
{
case 5:printf("%d,%d,%d,%d,%d\n",x1,x2,x3,x4,x5);break;
case 4:printf("%d,%d,%d,%d\n",x1,x2,x3,x4);break;
case 3:printf("%d,%d,%d\n",x1,x2,x3);break;
case 2:printf("%d,%d\n",x1,x2);break;
case 1:printf("%d\n",x1);break;
}
/********** End **********/
return 0;
}
输运行结果:出 ——1234为4位数 顺序输出为:1,2,3,4 逆序输出为:4,3,2,1