第二次作业

一、实验内容          

    1. 实验要求:判断成绩等级。

给定一百分制成绩,要求输出成绩的等级。90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出“输入数据错误”。 分别用if和用switch语句实现

代码:

#include <stdio.h>
int main()
{
 int grade;
 printf("请输入成绩:\n");
 scanf("%d",&grade);
 if(grade>100||grade<0)
 {
   printf("数据错误");
 }
 else

  { switch(grade/10)
   {
    case 10:case 9:
     printf("A");
     break;
    case 8:
     printf("B");                                                                                                                                                                                                                                                                                                                                                                                 
     break;
    case 7:
     printf("C");
     break;
    case 6:
     printf("D");
     break;
    case 5:case 4:case 3:case 2:case 1:case 0:
     printf("E");
     break;
  }
 return 0;
 }
}

 

#include <stdio.h>
int main()
{
 int grade;
 printf("请输入成绩:\n");
 scanf("%d",&grade);
 if(grade>100||grade<0)
  {

   printf("数据错误");

}
 else if(grade>=90)
  {

   printf("A");

}
 else if(grade>=80)
  {

   printf("B");

}
 else if(grade>=70)
  {

   printf("C");

}
 else if(grade>=60)
  {

   printf("D");

}
 else if(grade<60)
  {

   printf("E");

}
 return 0;
}

 

运行结果:

 

 

2.实验要求:判断整数位数及逆序输出。     输入一个不多于5位数的正整数,判断它是几位数并逆序输出。注意验证数据的合法性。

代码 :

#include <stdio.h>
int main()
{
int n,a,b,c,d,e,f;
printf("请输入一个不多于5位的正整数:\n");
scanf("%d",&n);
if(n/100000>0||n<0)
 {
 printf("数据错误");
 }
else if(n/10000>0)
 {
  a=n/10000;
  b=n%10000/1000;
  c=n%10000%1000/100;
  d=n%10000%1000%100/10;
  e=n/10000%1000%100%10;
  f=e*100000+d*1000+c*100+b*10+a;
  printf("%05d是5位数",f);
 }
else if(n/10000==0&&n/1000>0)
 {
  a=n/1000;
  b=n%1000/100;
  c=n%100/10;
  d=n%100%10;
  f=d*10+c*100+b*10+a;
  printf("%04d是4位数",f);
 }
else if(n/10000==0&&n/1000==0&&n/100>0)
 {
  a=n/100;
  b=n%100/10;
  c=n%100%10;
  f=c*100+b*10+a;
  printf("%03d是3位数",f);
 }
else if(n/10000==0&&n/1000==0&&n/100==0&&n/10>0)
 {
  a=n/10;
  b=n%10;
  f=b*10+a;
  printf("%02d是2位数",f);
 }
else
 {
  printf("%d是1位数",n);
 }
return 0;
}

 

 

运行结果:

 

3.实验要求:回文数问题

        给定一个5位数,判断它是否是回文数。例如:12321是回文数。回文数的特点是个位和万位相同,十位和千位相同。

代码:

#include <stdio.h>
int main()
{
 int n,a,b,c,d;
 printf("请输入一个五位数:\n");
 scanf("%d",&n);
 a=n/10000;
 b=n%10000/1000;
 c=n%10000%1000%100/10;
 d=n%10000%1000%100%10;
 if(a==d&&c==b)
  {
   printf("n是回文数");
  }
 else 
  {
   printf("n不是回文数");
  }
 return 0;
}

 

运行结果:

 

4.实验要求:计算分段函数

        y=-x+2.5                         0 <= x < 5

        y=2-1.5(x-3)(x-3)        5 <= x < 10

        y=x/2-1.5                     10 <= x < 20

       输入x的值(x为整数),输出y的值,结果保留3位小数。

代码:

#include <stdio.h>
int main()
{ int x;
 float y;
 printf("请输入一个大于0小于20的数:\n");
 scanf("%d",&x);
 if(0<=x&&x<5)
 {
   y=-x+2.5;
  printf("%.3f",y);
 }
 else if(5<=x&&x<10)
 {
  y=2.0-1.5*(x-3)*(x-3);
  printf("%.3f",y);
 }
 else if(10<=x&&x<20)
 {
  y=x/2.0-1.5;
  printf("%.3f",y);
 }
 return 0;
}

 

运行结果:

二·本次课知识点总结:

1.

条件运算符

一般形式:  表达式1  ? 表达式2  : 表达式3

优先级:条件运算符优先于赋值运算符,优先级别比关系运算符和算术运算符都低。
功能:如果表达式1的值为非0,则表达式2的值作为条件表达式的值,否则以表达式3的值作为条件表达式的值。
条件表达式常用于赋值语句中。
结合性: 自右至左
2.

if语句的嵌套

  当if的条件满足或不满足时要执行的语句也是一条if或if…else语句,称为if语句的嵌套。

3.

if语句的嵌套

  当if的条件满足或不满足时要执行的语句也是一条if或if…else语句,称为if语句的嵌套。

缩进格式并不能暗示else的匹配

实现if ~ else 正确配对方法:加{ }

4.

switch…case...break语句(多路分支结构)

l表达式是整数型的结果
l常量可以是常数也可以是常量表达式,且值互不相同。
l根据表达式的结果,寻找匹配的case,并执行case后面的语句,直到break为止。
l所有的case都不匹配,则执行default后面的语句
5.

swith语句的穿透性

“case 常量”只是起语句标号作用,在执行完该分支的语句后,若没有break语句,则会顺序执行到下一个case分支中去,称之为switch语句的穿透性。因此,为了保证各分支的正确执行,必须用break语句跳出。

6.

错误:switch语句中,case后的常量表达式用一个区间表示或出现关系运算符

 

三·实验总结:

1.输入数据一定要加取地址符

2.中文英文符号要及时转换

3.else后面不加括号if后面不加分号

 

posted @ 2016-10-11 14:08  张晓楠  阅读(273)  评论(1编辑  收藏  举报