加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

《C语言程序设计》上机实验四参考答案

(2010-04-19 10:05:30)
标签:

教育

// 实验四 控制结构与语句

//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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有