第八周编程总结

7-1 混合类型数据格式化输入 (5 分)

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出

1).实验代码

#include<stdio.h>

 

int main()

{

  int x,y;

  float n,m;

  

  scanf("%f %d %c %f",&n,&x,&y,&m);

  printf("%c %d %.2f %.2f\n",y,x,n,m);

  return 0;

  

}  

2). 设计思路

第一步:定义变量

第二步:输入变量

第三步:输出答案

 

 

3).本题调试过程碰到的问题及解决方法

            

 

-

 

 

 

        问题:格式控制符使用错误错误

       解决方法:将整型变量的格式控制符改成字符变量的格式控制符

 

       4).运行结果截图

  

      

 

7-2 计算符号函数的值 (10 分)

对于任一整数n,符号函数sign(n)的定义如下:

 

请编写程序计算该函数对任一输入整数的值。

1)实验代码

#include<stdio.h>

int main()

{

  int N;

  scanf("%d",&N);

  if(N<0){

    

    printf("sign(%d) = -1\n",N);

  }

  else{

    if(N>0){

      

      printf("sign(%d) = 1\n",N);

      

    }

    

    else{

      printf("sign(%d) = 0\n",N);

      

    }

    return 0;

    

  }

 

  

 

}

2).设计思路

第一步:定义变量

第二步:输入实数

第三步:调用if语句,判断三种情况

第四步:输出每种情况的答案.

3).本题调试过程碰到的问题及解决方法

           

    

 

          问题:输出格式错误

          解决方法:输出时复制输出样例更改值

       4).运行结果截图

 

 

 

 

7-3 计算个人所得税 (10 分)

假设个人所得税为:税率×(工资−1600)。请编写程序计算应缴的所得税,其中税率定义为:

· 当工资不超过1600时,税率为0;

· 当工资在区间(1600, 2500]时,税率为5%;

· 当工资在区间(2500, 3500]时,税率为10%;

· 当工资在区间(3500, 4500]时,税率为15%;

· 当工资超过4500时,税率为20%。

1).实验代码

#include<stdio.h>

 

int main()

 

{

  

  int wages;

  float rate,pit;

  

  scanf("%d",&wages);

  if(wages<=1600)

 

      {

      

        pit=0.00;

     

      }

     

      else{

        

        if(wages<=2500){

          

          rate=0.05;

          pit=rate*(wages-1600);

          

        }

        

        else

        

        {

        

          if(wages<=3500)

        

          {

            rate=0.10;

            pit=rate*(wages-1600);

            

          }

          else{

        

            if(wages<=4500){

              

              rate=0.15;

              pit=rate*(wages-1600);

              

            }

            else{

              

              rate=0.20;

              pit=rate*(wages-1600);

              

          

            }

          }

        }

        

      }

        

         printf("%.2f",pit);   

  return 0;

}2).设计思路

第一步:定义变量

第二步:调用if语句,判断工资的阶段

第三步:计算个人所得税

第四步:输出答案

3).本题调试过程碰到的问题及解决方法

 

 

 

 

 

问题:范围判断错误

解决方法:添加等价的条件

4).运行结果截图

          

 

 

7-4 比较大小 (10 分)

本题要求将输入的任意3个整数从小到大输出。

 

1).实验代码

#include<stdio.h>

int main()

 

{

  

  int a,b,c,t;

  scanf("%d %d %d",&a,&b,&c);

  

  if(a<b)

  {

  

    t=b;b=a;a=t;

    

  }

  

  if(a<c)

  {

    

    t=c;c=a;a=t;

    

  }

  if(b<c)

  {

    

    t=c;c=b;b=t;

    

  }

  

  printf("%d->%d->%d",c,b,a);

  return 0;

  

}

 

          2).设计思路

第一步:自定义函数声明,定义变量

第二步:输入变量

第三步:调用if语句,判断三个数的大小

第四步:输出答案

 

3).本题调试过程碰到的问题及解决方法

       

 

 

 

 

          问题:输出的大小排序错误

          解决方法:更改为正确的排序

        4).运行结果截图

                 

 

 

 

7-5 到底是不是太胖了 (10 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

1) .实验代码

#include<stdio.h>

 

#include<math.h>

int main()

{

  int N,high,weight,x,y,i;

  scanf("%d",&N);

  

  for(i=1;i<=N;i++){

    

    scanf("%d %d\n",&high,&weight);

    

  

  x=(high-100)*0.9*2;

  y=fabs(weight-x);

  

  if(y<x*0.1){

    

    printf("You are wan mei!\n");

  }

  else

  {

    if(y>=x*0.1&&weight<x){

 

    

    printf("You are tai shou le!\n");

  }

  if(y>=x*0.1&&weight>x){

    

    printf("You are tai pang le!\n");

  }

}

}

  return 0;

 

}            2).设计思路

第一步:自定义函数声明,定义变量

第二步:输入变量

第三步:调用for语句,进行循环输入身高和体重

第四步:计算标准体重

第五步:判断实际体重与标准体重的关系

第六步:输出结果

 

3).本题调试过程碰到的问题及解决方法

 

 

 

           问题:少执行了一次循环

          解决方法:将for语句中的条件而补充完整      

        4).运行结果截图

      

 

 

 

 

 

 
7-6 高速公路超速处罚 (15 分)

按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

2).实验代码

#include<stdio.h>

int main()

{

  

  double velocity,n,x;

 

  scanf("%lf %lf",&velocity,&n);

  

 x =(velocity - n)*100 / n;

  

      if(x>=50){

     

     printf("Exceed %.0f%%. License Revoked\n",x);

       

     }

     else{

 

    

    if(x>=10){

    

printf("Exceed %.0f%%. Ticket 200", x);

     }

     else{

     

 

       printf("OK\n");

     }

  }

  return 0;

  

}  

2). 设计思路

第一步:定义变量

第二步:输入变量

第三步:调用if语句判断是否超速

第四步:输出答案

 

 

4).本题调试过程碰到的问题及解决方法

            

 

-

 

 

 

        问题:变量类型定义错误

       解决方法:将整型变量更换成浮点型变量

       4).运行结果截图

  

      

 

7-7 统计字符 (15 分)

本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数

2)实验代码

#include<stdio.h>

int main()

{

  

  int letter,blank,digit,other;

  char ch;

  int i;

   letter=blank=digit=other=0;

  for(i=1;i<=10;i++)

  {

    ch=getchar();

    if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

      letter++;

    

    else if(ch==' '||ch=='\n')

      blank++;

    

    else if(ch>='0'&&ch<='9')

      digit++;

 

    else

      other++;

      

  }

 

  printf("letter = %d, blank = %d, digit = %d, other = %d\n",letter,blank,digit,other);

  return 0;

}

3).设计思路

第一步:定义变量

第二步:输入变量

第三步:调用if语句,判断类型

第四步:输出答案.

3).本题调试过程碰到的问题及解决方法

           

    

 

          问题:变量为初始化

          解决方法:将变量初始化

       4).运行结果截图

 

 

 

 

7-8 统计学生平均成绩与及格人数 (15 分)

本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

2).实验代码

#include<stdio.h>

int main()

{

  

  int i,N,performance,count=0,sum=0;

  

  double average=0;

  

  scanf("%d",&N);

if(N==0){

printf("average = 0.0\ncount = 0",average,count);

 

}

  else{

  

  for(i=1;i<=N;i++)

  {

    scanf("%d",&performance);

    sum+=performance;

    if(performance>=60)

    count++;

   

  }

 

  average=sum*1.0/N;

  printf("average = %.1f\ncount = %d\n",average,count);

  return 0;

  

}

}

2).设计思路

第一步:定义变量

第二步:调用if语句,判断学生人数是否为0

第三步:调用for语句输入成绩

第四步:计算平均数与及格的人数

第五步:输出结果

3).本题调试过程碰到的问题及解决方法

 

 

 

 

 

问题:未考虑到没有学生的情况

解决方法:单独讨论没有学生的情况

4).运行结果截图

          

 

 

7-9 输出闰年 (15 分)

输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除

 

1).实验代码

#include<stdio.h>

int main()

{

  

  int year,i;

  scanf("%d",&year);  

  

  if(year>2000&&year<2004)

          {

            printf("None\n");

          }

  

  if(year>2000&&year<=2100)

           {    

               for(i=2000;i<=year;i++)

                   {

                   

                     if(i%4==0&&i%100!=0)

                         {

                  

            printf("%d\n",i);

                

                         }

                   

   }

              

          

           }

   else

           {

             printf("Invalid year!\n");

           }

 

  return 0;

}

          2).设计思路

第一步:定义变量

第二步:输入变量

第三步:调用if语句,进行判断

第四步:输出答案

 

3).本题调试过程碰到的问题及解决方法

       

 

 

 

 

          问题:未考虑到没有闰年的情况

          解决方法:对没有闰年的情况进行讨论

        4).运行结果截图

                 

 

posted @ 2018-11-14 20:06  孙笑川6324  阅读(657)  评论(0编辑  收藏  举报
1 2 3