第八周编程总结

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语句判断是否超速
第四步:输出答案

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

问题:变量类型定义错误
解决方法:将整型变量更换成浮点型变量

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-12-22 12:20  孙笑川6324  阅读(621)  评论(0编辑  收藏  举报
1 2 3