// 实验四 控制结构与语句
//P24
二、1)编写程序:输入一元二次方程的三个系数a、b、c,计算判定系数并将其输出;然后判定该方程有无实数解,并将判定结果显示出来。
// 1.1 仅包括判断是否有解
#include <stdio.h>
#include <math.h>
main()
{
double a,b,c,delta;
printf("Please input a,b,c:\n\n");
scanf("%lf%lf%lf",&a,&b,&c);
delta=b*b-4.0*a*c;
printf("The coefficient of determination
is:b^2-4ac=%.3f \n\n",delta);
if(fabs(a)<=1.0e-6)
{
if(b>1.0e-6)
{
printf("The
equation is one-order, who has one root.\n\n");
}
else
{
printf("It's
not an equation.\n\n");
}
}
else if(delta>0)
{
printf("The equation is
second-order,who has two real
roots.\n\n");
}
else if(delta<0)
{
printf("The equation is
second-order,who has two imaginery
roots.\n\n");
}
else
{
printf("The equation is
second-order,who has a pair of equal
roots.\n\n");
}
}
//1.2包括判断是否有解及求解方程
#include <stdio.h>
#include <math.h>
main()
{
double a,b,c,delta,real,imag,x1,x2;
printf("Please input a,b,c:\n\n");
scanf("%lf%lf%lf",&a,&b,&c);
delta=b*b-4.0*a*c;
printf("The coefficient of determination
is:b^2-4ac=%.3f \n\n",delta);
if(fabs(a)<=1.0e-6)
{
if(b>1.0e-6)
{
x1=x2=-c/b;
printf("The
equation is one-order, whose root is: %.3f\n\n",x1);
}
else
{
printf("It's
not an equation.\n\n");
}
}
else if(delta>0)
{
x1=(-b+sqrt(delta))/(2.0*a);
x2=(-b-sqrt(delta))/(2.0*a);
printf("The equation is
second-order,whose two real root
is:x1=%.3f,x2=%.3f\n\n",x1,x2);
}
else if(delta<0)
{
real=-b/(2.0*a);
imag=sqrt(-delta)/(2.0*a);
printf("The equation is
second-order,whose two imaginery root is:x1=%.3f+%.3f
i,x2=%.3f-%.3f
i\n\n",real,imag,real,imag);
}
else
{
x1=(-b+sqrt(delta))/(2.0*a);
printf("The equation is
second-order,whose two equal root
is:x1=x2=%.3f\n\n",x1);
}
}
//P24 二、2)编写程序:输入x后,根据下面的分段函数,计算并输出y值。
#include <stdio.h>
#include <math.h>
main()
{
double x,y;
printf("请输入参数x:\n\n");
scanf("%lf",&x);
if(x<-5)
{
y=3*x*x+2*x-1;
//
printf("分段函数值y=%.3f \n\n",y);
}
else if(x<=5)
{
y=x*sin(x)+2*x*x;
//
printf("分段函数值y=%.3f \n\n",y);
}
else
{
y=sqrt(x-5)+log10(x);
// printf("分段函数值y=%.3f
\n\n",y);
}
printf("分段函数值y=%.3f \n\n",y);
}
//P24 二、3)编写程序:输入三个数a、b、c,求出三者最大值并赋给max。
#include <stdio.h>
main()
{
double a,b,c,max;
printf("Please input three numbers a,b and c:
\n\n");
scanf("%lf%lf%lf",&a,&b,&c);
//method 1:
max=(max=a>b?a:b)>c?max:c;
printf("The maximum one of a,b and c is %.3f by
method 1.\n\n",max);
//method 2:
max=a;
if(max<b)
max=b;
else if(max<c)
max=c;
printf("The maximum one of a,b and c is %.3f by
method 2.\n\n",max);
}
//P24 二、4)编写程序:输入1~7,输出对应的星期一到星期日。
#include <stdio.h>
main()
{
int day;
printf("请输入数字1~7中任意一个.\n\n");
scanf("%d",&day);
switch(day)
{
case 1:printf("星期一!\n\n");break;
case 2:printf("星期二!\n\n");break;
case 3:printf("星期三!\n\n");break;
case 4:printf("星期四!\n\n");break;
case 5:printf("星期五!\n\n");break;
case 6:printf("星期六!\n\n");break;
case 7:printf("星期日!\n\n");break;
default:
printf("输入数字不对,应该在1~7之间!\n\n");
}
}
//P24
二、5)编写程序:编制用户身份验证程序。设四个不同密码表示不同用户类型:0000为特许用户,1111为授权用户,1234为普通用户,其他密码为非法用户。用户输入密码,显示对应用户类型。
#include <stdio.h>
#include <string.h>
main()
{
char c1,c2,c3,c4;
int i;
printf("Please input your password:\n\n");
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
if(c1=='0'&&c2=='0'&&c3=='0'&&c4=='0')
printf("你是特权用户!\n\n");
else
if(c1=='1'&&c2=='1'&&c3=='1'&&c4=='1')
printf("你是授权用户!\n\n");
else
if(c1=='1'&&c2=='2'&&c3=='3'&&c4=='4')
printf("你是普通用户!\n\n");
else
printf("你是非法用户!\n\n");
}
//P24 二、6)编写程序:输入一批以0结束的整数,求其中所有能被3整除的数的和。
#include <stdio.h>
main()
{
int a,sum=0;
do
{
printf("请输入一个整数:\n");
scanf("%d",&a);
if(a%3==0)
sum+=a;
}while(a!=0);
printf("这些能被3整除的整数之和为%d. \n\n",sum);
}
//P24 二、7)编写程序:用两种循环语句输出26个大写及小写字母。
#include <stdio.h>
main()
{
int i;
//1.for循环
printf("1. for structure \n\n");
for(i=0;i<26;i++)
{
putchar('A'+i);
}
printf("\n");
for(i=0;i<26;i++)
{
putchar('a'+i);
}
printf("\n");
//2.do-while循环
printf("\n\n2. do-while structure \n\n");
i=0;
do
{
putchar('A'+i);
i++;
}while(i<26);
printf("\n");
i=0;
do
{
putchar('a'+i);
i++;
}while(i<26);
printf("\n\n");
}
//P24
二、8)编写程序:输入x、n的值,计算下式的结果:x/2!+x^2/3!+x^3/4!+...+x^n/(n+1)!
#include <stdio.h>
main()
{
double x,xm=1.0,sum=0.0;
int i,n,facn=1;
printf("请输入x,n的值:\n\n");
scanf("%lf%d",&x,&n);
for(i=1;i<=n;i++)
{
xm*=x;
facn*=(i+1);
sum+=xm/facn;
}
printf("该式的值为:%.3f. \n\n",sum);
}
//P24 二、9)编写程序:利用穷举法求x^2+y^2=1000的所有整数解(提示:此题的结构为for循环的嵌套。)
#include <stdio.h>
main()
{
int x,y,n=0;
for(x=-31;x<=31;x++)
{
for(y=-31;y<=31;y++)
{
if(x*x+y*y==1000)
{
n++;
printf("第%d组解,x=%d,
y=%d. \n\n",n,x,y);
}
}
}
}
http://s9/middle/5f2925ff484906cce4008&690
加载中,请稍候......