1
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a>168&&b>168&&c>168)
{
printf("NO CRASH\n");
}
if(a<168)
{
printf("CRASH %d\n",a);
}
if(b<168&&a>168)
{
printf("CRASH %d\n",b);
}
if(b>168&&a>168&&c<168)
{
printf("CRASH %d\n",c);
}
return 0;
}
2
要考虑全,等于号也要编译
#include<stdio.h>
int main()
{
int n,i,a[80000],sum;
while(scanf("%d",&n)!=EOF&&(n<100&&n>0))
{
a[0]=0;sum=0;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sum=(a[1]-a[0])*6+5;
for(i=2;i<=n;i++)
{
if(a[i]>a[i-1])
{
sum+=(a[i]-a[i-1])*6+5;
}
if(a[i]<a[i-1])
{
sum+=(a[i-1]-a[i])*4+5;
}
if(a[i]==a[i-1])
{
sum+=5;
}
}
printf("%d\n",sum);
}
return 0;
}
3
#include<stdio.h>
int main()
{
int N,n,i,j,l,t,a[88888];
while(scanf("%d",&N)!=EOF)
{
for(l=0;l<N;l++)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
for(i=0;i<n-1;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[n-1]);
}
}
return 0;
}
4
#include<stdio.h>
int main()
{
int i,j;
double x,sum;
printf("n e\n");
printf("- -----------\n");
printf("0 1\n");
printf("1 2\n");
printf("2 2.5\n");
sum=2.5;x=0.5;
for(i=3;i<=9;i++)
{
x*=1.00/i;sum+=x;
printf("%d %.9lf\n",i,sum);
}
return 0;
}
5
给你n个数字,你需要找出出现至少(n+1)/2次的数字 现在需要你找出这个数字是多少?
#定义一个数组,下标为该数字,记录每个数字出现的次数,计算数组大小即可
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[100000],i,n,x;
while(scanf("%d",&n)!=EOF&&(n%2)!=0&&(1<=n)&&(n<=999999))
{
memset(a,0,sizeof(a));
for(i=0;i<n;i++)
{
scanf("%d",&x);
a[x]++;
}
for(i=0;i<100000;i++)
{
if(a[i]>=(n+1)/2)
{
printf("%d\n",i);break;
}
}
}
return 0;
}
6
找规律
#include<stdio.h>
int main()
{
int x,y,m,i;
int g[8000];
while(scanf("%d%d%d",&x,&y,&m)!=EOF&&(x>=1&&(y<=1000&&y>0)&(m>=1&&m<=100000000)))
{
g[1]=1;g[2]=1;
for(i=3;i<=48;i++)
{
g[i]=(x*g[i-1]+ y*g[i-2])%7;
}
printf("%d\n",g[m%48]);
}
return 0;
}
7
数据要开的足够大longlong注意输入lld
#include<stdio.h>
long long f(long long x,long long y)
{
long long t,a,b;
if(x<y)
{
t=x;x=y;y=t;
}
a=x,b=y;t=a%b;
while(t!=0)
{
x=y;y=t;t=x%y;
}
return a*b/y;
}
int main()
{
int n,N,i,j;
long long x,a;
scanf("%d",&N);
for(j=0;j<N;j++)
{
scanf("%d",&n);
scanf("%d",&x);
for(i=1;i<n;i++)
{
scanf("%d",&a);
x=f(x,a);
}
printf("%d\n",x);
}
return 0;
}
8
给你一个正整数 Y 代表出生年份和一个 N,你的任务是告诉他从Y开始的第N个闰年。
#include<stdio.h>
int main()
{
int n,y,x,i,j,count,a[100000];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&y,&x);
a[0]=y;count=0;
j=y;
while(count<x)
{
if((j%4==0&&j%100!=0)||(j%400==0))
{
count++;
}
j++;
}
printf("%d\n",j-1);
}
return 0;
}
9
HOHO,终于从Speakless手上赢走了所有的糖果,是Gardon吃糖果时有个特殊的癖好,就是不喜欢将一样的糖果放在一起吃,喜欢先吃一种,下一次吃另一种,这样;可是Gardon不知道是否存在一种吃糖果的顺序使得他能把所有糖果都吃完?请你写个程序帮忙计算一下。
#数学排序问题,只需要让最多的空隔大于剩余的总数即可
#include<stdio.h>
int main()
{
long long n,i,m,j,a,max,sum;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
sum=0;max=0;
scanf("%lld",&m);
for(j=0;j<m;j++)
{
scanf("%d",&a);
if(max<a)
{
max=a;
}
sum+=a;
}
if(max-1<=sum-max)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
10
此人从出生到18岁生日所经过的天数
#分三种情况讨论,善于用函数,后面每年循环计算,为什么不能直接算???
#include<stdio.h>
int f(int n)
{
if((n%4==0&&n%100!=0)||(n%400==0))
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int n,i,j,year,month,day,sum;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d-%d-%d",&year,&month,&day);
sum=365*18;
if(month==2&&day==29)
{
sum=-1;
}
if(month==1||(month==2&&day<29))
{
for(j=year;j<year+18;j++)
{
if(f(j))
{
sum++;
}
}
}
if(month>2)
{
for(j=year+1;j<year+19;j++)
{
if(f(j))
{
sum++;
}
}
}
printf("%d\n",sum);
}
return 0;
}
11
#include<stdio.h>
double f(char c,double a,double b)
{
switch(c)
{
case '+': return a+b;break;
case '-': return a-b;break;
case '*': return a*b;break;
case '/': return a/b;
}
}
int main()
{
int d,n,i;
scanf("%d",&n);
if(n>0&&n<1000)
{
for(i=0;i<n;i++)
{
d=0;
getchar();
char c;
c=getchar();
double a;
scanf("%lf",&a);
double b;
scanf("%lf",&b);
if(f(c,a,b)==int(f(c,a,b)))
{
d=int(f(c,a,b));
printf("%d\n",d);
}
else
{
printf("%.2lf\n",f(c,a,b));
}
}
}
return 0;
}
12
#能一起计算的就先定义变量,统一计算好代入
#include<stdio.h>
struct milks
{
char name[101];
int price;
int v;
int day;
double x;
};
int main()
{
int i,n,a,j,l;
double min;
struct milks m[10000];
#结构体中的不用再定义
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a);
if(a>=1&&a<=100)
{
l=0;min=10000;
for(j=0;j<a;j++)
{
scanf("%s%d%d",&m[j].name,&m[j].price,&m[j].v);
if(m[j].v<200)
{
continue;
}
m[j].day=m[j].v/200;
if(m[j].day>=6)
{
m[j].day=5;
}
m[j].x=1.0*m[j].price/m[j].day;
#1.0一定要乘到前面,或是带括号,不能先除再乘
if(min>m[j].x)
{
min=m[j].x;l=j;
}
if(min==m[j].x)
{
if(m[l].v<m[j].v)
{
min=m[j].x;l=j;
}
}
}
}
printf("%s\n",m[l].name);
}
return 0;
}
13
输入的数字各位数相加直到等于个位数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,g,len,num;
long long sum;
char a[80000];
while(gets(a)!=NULL&&a[0]!='0')
{
sum=0;len=strlen(a);
for(i=0;i<len;i++)
{
sum+=a[i]-48;
}
num=sum;
while(num/10>=1)
#直到和是个位数
{
sum=num;num=0;
while(sum>=1)
#各位数字相加
{
num+=sum%10;sum/=10;
}
}
printf("%d\n",num);
}
return 0;
}
14
#include<stdio.h>
int main()
{
int i,n,a[1000000];
while(scanf("%d",&n)!=EOF)
{
a[0]=7;a[1]=11;
for(i=2;i<=n;i++)
{
a[i]=a[i-1]%3+a[i-2]%3;
}
if(a[n]%3==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
14*#include<stdio.h>
int main()
{
long long n;
while(scanf("%d",&n)!=EOF)
{
if(n % 4 == 2)
printf("yes\n");
else
printf("no\n") ;
}
return 0;
}
15
我们是用后导字符5来判断是否打开一个新容器(不管后面有数没有)特殊的:当算完最后一个数之后,如果没有后导5的话,就直接t++;最终t的大小比容器的最大编号大1,!前导字符5直接通过if语句直接跳过(解决);相连的字符5用flag标志解决;前导0用int型变量解决!
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
char a[10000];
int b[10000],i,j,x,len;
while(scanf("%s",a)!=EOF)
{
memset(b,0,sizeof(b));
j=0;x=0;len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]!='5')
{
b[j]=b[j]*10+a[i]-'0';
#*10开辟新的一位,a[j]-’0’字符型转换为数组
x=1;
}
else if(x==1)
{
j++;x=0;
}
#x用于统计5的个数,重复的5不进行运算
if(a[i]!='5'&&a[i+1]=='\0')
{
j++;
}
}
sort(b,b+j);
for(i=0;i<j-1;i++)
{
printf("%d ",b[i]);
}
printf("%d\n",b[j-1]);
}
return 0;
}
15*
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
char s[5005];
int a[5005];
int i,len,k,n;
while(scanf("%s",s)!=EOF)
{
n=0;
k=0;
len=strlen(s);
s[len]='5';
i=0;
while(s[i++]=='5'); //跳过前缀5,防止多输出0
for(i--;i<=len;++i)
{
if(i>0&&s[i]=='5'&&s[i-1]=='5') //忽略连续的5,防止多输出0
continue;
if(s[i]!='5')
k=k*10+s[i]-'0';
else //遇到5就增加一个数
{
a[n++]=k;
k=0;
}
}
sort(a,a+n);
printf("%d",a[0]);
for(i=1;i<n;++i)
printf(" %d",a[i]);
printf("\n");
}
return 0;
}