记录一下

#今天刷题遇到的问题

  1. return 0;意思是结束该程序(买房问题)
#include<stdio.h>
int main(){
double n,k,sum=0,s=200;
scanf("%lf %lf",&n,&k);
for(int i=1;i<=20;++i){
sum+=n;
if(sum>=s){printf("%d",i);}
s*=(1+k*0.01);
}
printf("Impossible");
}//(没有return 0;会每次都输出Impossible)
#include<stdio.h>
int main(){
double n,k,sum=0,s=200;
scanf("%lf %lf",&n,&k);
for(int i=1;i<=20;++i){
sum+=n;
if(sum>=s){
printf("%d",i);
return 0;
}
s*=(1+k*0.01);
}
printf("Impossible");
return 0;
}//(在输出i之后,遇到了return 0;直接结束程序)  
  1. 取整
  • 舍去小数部分:i=(int)a;
  • 向下取整:floor(2.5)=2;
  • 向上取整:ceil(2.5)=3;
  1. scanf函数里面的&不要忘了
  2. 除法
  • 注意int/int会自动取整
  • 虽然要求输入的类型为int,但是后来变成了double,一定在初始时就要定义成double。
  • 如果是给定的两个数,可以用eg.2*1.0/3。
  1. 题目要求
  • 注意读入的顺序
  • 注意运算的顺序
  1. 没有scanf的变量,初始成0或1。
  2. 尽量把除法换成乘法。
  3. 注意求模和除法。
  4. 善用反向的思维。
    eg.虫子与苹果
#include<stdio.h>
int main(){
double n,x,y;
int a;
scanf("%lf %lf %lf",&n,&x,&y);
n=n-y/x;//避免了讨论y/x是否等于(double)y/x
a=n;//取整
printf("%d",a);
}
  1. 可以边输入边输出,不一定要用组数
#include<stdio.h>//求和与均值
int main(){
int n,a;
long sum=0;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d",&a);//舍弃了先读入组数再计算的方法
sum+=a;
}
printf("%ld %.5lf",sum,(double)sum/n);
}
  1. sizeof(int)或sizeof(“Hello, World!”)可以用%zd,%u,%lu匹配其输出值。
  2. for里面的数据类型一定要定义!!!!!
  3. 四舍五入:采用±0.5的方法
#include<stdio.h>
int main(){
(int)(1.6+0.5) 
}
  1. 保留小数点后几位
  • %.2lf
  • float a=3.456;//保留两位 float b=(int)((a*100)+0.5)/100.0;
  1. 暂时记到这,吃饭。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值