第八周编程总结
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).本题调试过程碰到的问题及解决方法、
问题:未考虑到没有闰年的情况
解决方法:对没有闰年的情况进行讨论