P2433 【深基1-2】小学数学 N 合一
#include<stdio.h>
#include<math.h>
#define pi 3.141593
int main()
{
int T, r;
scanf("%d", &T);//输入题号
switch (T)
{
case 1:
printf("I love Luogu!"); break;
case 2:
printf("6 4"); break;
case 3:
printf("3\n12\n2\n"); break;
case 4:
printf("%.6g", 500.0 / 3); break;
case 5:
printf("15"); break;
case 6:
printf("%.6g",sqrt(117)); break;
case 7:
printf("110\n90\n0"); break;
case 8:
r = 5;
printf("%.6g\n%.6g\n%.6g\n", 2 * pi * r, pi * r * r, pi * r * r * r * 4 / 3.0); break;
case 9:
printf("22"); break;
case 10:
printf("9"); break;
case 11:
printf("%.4lf", 100 / 3.0); break;
case 12:
printf("13\nR"); break;
case 13:
printf("%.lf", cbrt(4256 * pi / 3.0)); break;
case 14:
printf("50"); break;
}
return 0;
}
//C语言中输出n位有效数字
//若规定整数p位,小数部分q位 用%p.qf 输出
//若规定整数+小数一共是n位有效 用%.ng 输出
P5709 【深基2.习6】Apples Prologue / 苹果和虫子
#include<stdio.h>
int main()
{
int m, t, s;// m个苹果,吃一个要t分钟,过了s分钟
scanf("%d %d %d", &m, &t, &s);
//如果吃的光速,那么一个不剩
if (t == 0)
printf("0");
//如果时间充裕,仍然一个不剩
else if (s > m * t)
printf("0");
//没给一点时间,一个都吃不了
else if (t > s)
printf("%d", m);
//时间不充裕,看看能吃多少个
else
{
// int count=0;
//while(s>t){
// s-=t;
// count++;
//}
//printf("%d",m-count);
//算法冗杂
double num = 1.0 * s / t;
int num1 = num;
if (num - (int)num != 0)
printf("%d", m-num1 - 1);
else
printf("%d",m-num1);
}
return 0;
}
P5710 【深基3.例2】数的性质
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);//输入
if (x % 2 == 0 && (x > 4 && x <= 12))
printf("1 ");
else
printf("0 ");
if ((x % 2 == 0 || (x > 4 && x <= 12))||(x % 2 == 0 && (x > 4 && x <= 12)))
printf("1 ");
else
printf("0 ");
if ((x%2!=0&&(x>4&&x<=12))||(x%2==0&&(x<=4||x>12)))
printf("1 ");
else
printf("0 ");
if (x % 2 != 0 && x <= 4 || x > 12)
printf("1 ");
else
printf("0 ");
return 0;
}
//输出时候注意空格
//理解 ||与 &&区别,前者有1跳出判断,后者有0跳出判断
P5711 【深基3.例3】闰年判断
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if((n%4==0&&n%100!=0)||(n%400==0))
printf("1");
else
printf("0");
return 0;
}
知识点:先弄清楚闰年的概念是什么
1、非整百年:能被4整除而不能被100整除的为闰年。(如2016年就是闰年,2100年不是闰年)
2、整百年:能被400整除而不能被3200整除的是闰年。(如2000年是闰年,3200年不是闰年)
3、对于数值很大的年份:这年如果能整除3200,并且又能整除172800则是闰年。如172800年是闰年,86400年不是闰年。
P5712 【深基3.例4】Apples
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
if(x>1)
printf("Today, I ate %d apples.",x);
else
printf("Today, I ate %d apple.",x);
return 0;
}
知识点:C语言规定,else 总是与它前面最近的 if 配对
P5713 【深基3.例5】洛谷团队系统
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//输入
if (5*n < 3*n+11)
printf("Local");
else
printf("Luogu");
return 0;
}
//本质就是个不等式比较
P5714 【深基3.例7】肥胖问题
#include<stdio.h>
#include<math.h>
int main()
{
double m, h;
scanf("%lf %lf",&m,&h);//输入
if (m / (pow(h, 2)) < 18.5)
printf("Underweight\n");
else if (m / (pow(h, 2)) >= 18.5 && m / (pow(h, 2)) < 24)
printf("Normal\n");
else
printf("%.6g\nOverweight", m / (pow(h, 2)));
return 0;
}
知识点:%的利用
浮点数的存储方式
P5715 【深基3.例8】三位数排序
#include<stdio.h>
int main()
{
int arr[3] = { 0 };
for (int i = 0; i < 3; i++)
scanf("%d", &arr[i]);//输入
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2 - j; k++)
{
if (arr[k] > arr[k + 1])
{
int temp = arr[k + 1];
arr[k + 1] = arr[k];
arr[k] = temp;
}
}
}
//冒泡排序的实现
for (int i = 0; i < 3; i++)
printf("%d ", arr[i]);//挨个输出
return 0;
}
知识点:排序类型
P5716 【深基3.例9】月份天数
#include<stdio.h>
void judge(int num)
{
if(num==1||num==3||num==5||num==7||num==8||num==10||num==12)
printf("31");
else
printf("30");
}
int main()
{
int y=0;
scanf("%d",&y);
int m;
scanf("%d",&m);
//是闰年
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
{
if(m==2)
printf("29");
else
printf("30");
}
//不是闰年
else
{
if(m==2)
printf("28");
else
judge(m);
}
return 0;
}
知识点:函数声明与调用
P1085 [NOIP2004 普及组] 不高兴的津津
#include<stdio.h>
int main()
{
int arr[14] = { 0 };
int sum[7] = { 0 };//星期的对应的学习时长
int week = 1;//星期第几天记住
for (int i = 0; i < 14; i++)
scanf("%d", &arr[i]);//进行输入
int j = 0;
for( j = 0; j < 7; j++)
sum[j] = arr[j * 2] + arr[j * 2 + 1];//总的一天学习时长
for ( j = 0; j < 7; j++){
if (sum[j] <= 8)
sum[j] = 0;
}
//通过遍历找到最大的
int max = sum[0];
for (int i = 1; i < 7; i++){
if (max < sum[i])
{
max = sum[i];//对比找到最大
week = i+1;
}
}
if(max>8)
printf("%d\n", week);
else
printf("0");
return 0;
}
P1909 [NOIP2016 普及组] 买铅笔
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//输入->需要铅笔的数量
int num,val;
int row=2;//输出2行 //下面先输出一行用于min的代入
scanf("%d %d",&num,&val);//num->一盒铅笔数量 val->对应的价格
if(n%num!=0){
num=n/num+1;//需要买的盒数
val*=num;//总价格
}
else{
num=n/num;//刚好整除无需+1
val*=num;//总价格
}
int min=val;
while(row--)
{
scanf("%d %d",&num,&val);//num->一盒铅笔数量 val->对应的价格
if(n%num!=0){
num=n/num+1;//需要买的盒数
val*=num;//总价格
}
else{
num=n/num;//刚好整除无需+1
val*=num;//总价格
}
if(min>val)
min=val;//如果有更小的方案就选它
}
printf("%d",min);//单行输出
return 0;
}
P5717 【深基3.习8】三角形分类
#include<stdio.h>
int main()
{
int d[3],i,j;
scanf("%d %d %d",&d[0],&d[1],&d[2]);
//排序
for (i = 0; i < 2; i++) {
for (j = 0;j<2-i;j++)
if (d[j] > d[j + 1])
{
d[j] ^= d[j + 1];
d[j + 1] ^= d[j];
d[j] ^= d[j + 1];
}
}
if (d[0]+d[1]<=d[2])
printf("Not triangle\n");
else
{
if (d[0]*d[0]+d[1]*d[1]==d[2]*d[2])
printf("Right triangle\n");
if (d[0] * d[0] + d[1] * d[1] > d[2] * d[2])
printf("Acute triangle\n");
if (d[0] * d[0] + d[1] * d[1] < d[2] * d[2])
printf("Obtuse triangle\n");
if (d[0]==d[1])
printf("Isosceles triangle\n");
if (d[0]==d[1] && d[0]==d[2])//注意,不能写为a==b==c,因为会先转为bool值的0 1 然后再a==1? 所以不成立
printf("Equilateral triangle\n");
}
return 0;
}
//不用数组也可以,自行完成
知识点:交换a,b值的三种方法
P1422 小玉家的电费
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);//表示用电总量
double total=0;
if(n<=150)
total=n*0.4463;
else if(n>=151&&n<=400)
total=(n-150)*0.4663+150*0.4463;
else
total=(n-400)*0.5663+250*0.4663+150*0.4463;
printf("%.1lf",total);//注意输出为.1lf,留一位小数点
return 0;
}
知识点:%m.nd等的用法(m,n为数字)
P1424 小鱼的航程(改进版)
#include<stdio.h>
int main()
{
int x,n;
scanf("%d %d",&x,&n);//输入
int count=0;
while(n--)
{
//如果是周六周日,则休息,但日期(x)也要加
if(x%7==6||x%7==0)
{
x++;
continue;
}
count++;
x++;
}
printf("%d",250*count);
return 0;
}
P1888 三角函数
#include<stdio.h>
int gcd(int m, int n)
{
while (n != 0)
{
int temp = m % n;
m = n;
n = temp;
}
return m;
}
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int min = ((a < b ? a : b) < c) ? (a < b ? a : b) : c;
int max = ((a > b ? a : b) > c )? (a > b ? a : b) : c;
int num = gcd(max, min);
printf("%d/%d", (min / num), (max / num));
return 0;
}
知识点:gcd与lcm函数的写法,各类运算符
P1046 [NOIP2005 普及组] 陶陶摘苹果
#include<stdio.h>
int main()
{
int arr[10]={0};//苹果到地面的高度
int height=0;//陶陶的高度
int count=0;//初始化能够到苹果的数量
for(int i=0;i<10;i++)
scanf("%d",&arr[i]);
scanf("%d",&height);
int h_sum=height+30;//能够到最高的高度
for(int i=0;i<10;i++)
{
if(arr[i]<=h_sum)
count++;
}
printf("%d",count);
return 0;
}
P4414 [COCI2006-2007#2] ABC
#include<stdio.h>
#include<stdlib.h>
int cmp(const void* a, const void* b) {
return *(int*)a - *(int*)b;
}
int main()
{
int arr[3],i;//存放三个数
char ch[5];//遍历查找顺序
for(i=0;i<3;i++)
scanf("%d ",&arr[i]);
//排序
qsort(arr,3,sizeof(int),cmp);
//fgets(ch,4,stdin);//为4而不是3是因为还统计了最后的\0
gets(ch);
for (i = 0; i < 3; i++)
printf("%d ",arr[ch[i]-'A']);
return 0;
}
知识点:c语言自带的qsort()函数排序
P1055 [NOIP2008 普及组] ISBN 号码
#include<stdio.h>
int main()
{
char ch[15] = {0};//唯一需要注意的是这里X代表10
int i,j,total=0;
gets(ch);//输入
for (i = 0,j=1; i < 11; i++) {
if (ch[i] != '-') {
if (ch[i] == 'X')
total += j * 10;
else {
total += j * (ch[i] - '0');
j++;
}
}
}
if (total % 11 == (ch[12] - '0') || (ch[12]=='X' && total%11==10))
printf("Right");
else {
ch[12] =(total % 11)+'0';
if (total % 11 == 10)
ch[12]='X';
puts(ch);
}
return 0;
}
//里面的坑点就是X代表10,要特况处理
知识点:gets与fgets,puts与fputs的掌握