标签:style blog color io os 使用 ar for 文件
首先要解决的是输入输出的问题。作为一个渣渣新手,我用以前学的 C++写了错误代码提交,后果可想而知。
所以认认真真的看了【ACM新手之八大输入输出】,格式记好,在后面运用会越用越熟的。
2000
很easy的一题,首先,现在假设我什么都不会(至少编译器,头文件,基本格式知道)我要解决该怎么办?(以后需要学的和缺少的直接补上,不多说。)
1.比较大小,高中算法讲过。三个数的轮序比较。至于排序算法。我搜到的【冒泡排序】以后再探讨。
2.但是getchar()的用法,忘了。我只知道用一个东西(…)把字符转化成ASCII码,然后可以排序。
关于ASCII:
A65 - Y91
048 - 957
另:getchar() putchar() puts()
puts()是用来输出字符串并换行
putchar()是输出字符变量
getchar() 永远只向缓存中输入一个字符
puts(char *p)
printf(char *p,s)
审题:空格!
#include<stdio.h>
int main()
{
char ch1,ch2,ch3,temp;
while(scanf("%c%c%c",&ch1,&ch2,&ch3)!=EOF)
{
getchar();
if(ch1>ch2)
{
temp=ch1;
ch1=ch2;
ch2=temp;
}
if(ch1>ch3)
{
temp=ch1;
ch1=ch3;
ch3=temp;
}
if(ch2>ch3)
{
temp=ch2;
ch2=ch3;
ch3=temp;
}
printf("%c%2c%2c\n",ch1,ch2,ch3);
}
return 0;
}
2001
1.第二题竟然狗血的想到了数组(其实没那么麻烦,两个变量罢了)学呗,数组此题的代码不是一般的长啊。本着KISS原则(keep it simple and stupid)。还是用简单方法吧。【数组】
(定义一个二维数组Dist[2][10],假设有两点a(2,3),b(5,6),将他们的坐标放入数组中
Dist[0][0]=2;
Dist[0][1]=5;
Dist[1][0]=3;
Dist[1][1]=6;
他们间的距离就是double x=(Dist[0][0]-Dist[0][1])*(Dist[0][0]-Dist[0][1])+(Dist[1][0]-Dist[1][1])*(Dist[1][0]-Dist[1][1]);
double distance = Math.sqrt(x);)
神烦……
2.<math.h>与<cmath>
sqrt 和 abs fabs比较常用?库函数使用得当可以提高编码效率。
#include<stdio.h>
#include<math.h>
int main()
{
double x1,y1,x2,y2,dist;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
{
dist=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2lf\n",dist);
}
return 0;
}
2002
1.#define 宏定义,方便以后的修改。
2.(刚搞懂C语言中没乘方:BASIC是有的。)
#include <math.h>
double y=pow(m,n);
#define PI 3.1415927
#include<stdio.h>
int main()
{
double a,v;
while(scanf("%lf",&a)!=EOF)
{
v=(4.0/3)*PI*a*a*a;
printf("%.3lf\n",v);
}
return 0;
}
2003
1.与其用函数,不如直接来的爽快。
2.double
#include<stdio.h>
int main()
{
double a;
while(scanf("%lf",&a)!=EOF)
{
if(a<0) a=(-a);
printf("%.2lf\n",a);
}
return 0;
}
2004
1.switch语句 学习 注意break
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d",&a)!=EOF)
{
b=a/10;
if(a<0||a>100)
b=(-1);
switch(b)
{
case 10:
case 9: printf("A\n");break;
case 8: printf("B\n");break;
case 7: printf("C\n");break;
case 6: printf("D\n");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0: printf("E\n");break;
case -1:printf("Score is error!\n");break;
default:break;
}
}
return 0;
}
default:注意
2.但是 冗长剪枝。这是和下一题是一个道理。于是,看的【数组】就用上了。
#include <stdio.h>
char r[11]={‘E‘,‘E‘,‘E‘,‘E‘,‘E‘,‘E‘,‘D‘,‘C‘,‘B‘,‘A‘,‘A‘};
int main()
{
int s;
while (scanf("%d",&s)!=EOF)
{
if(s>100||s<0)
printf("Score is error!\n");
else
printf("%c\n",r[s/10]);
}
return 0;
}
2005
1.直接贴代码,如上
#include <stdio.h>
int Month[2][13]={
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int main()
{
int y,m,d,sum,f,i;
while (scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{
sum=0;
f=((y%400==0) || (y%100!=0) && (y%4==0));
i=1;
while (i<m)
sum+=Month[f][i++];
printf("%d\n",sum+d);
}
return 0;
}
运算符:
== 比较运算符,即等于
= 赋值运算符,i=2即 2放入i中
复合运算符 ,a+=b 其实就是a=a+b
2006
1.
#include<stdio.h> int main() { int n,a,sum,i; while(scanf("%d",&n)!=EOF) { sum=1; for(i=0;i<n;i++) { scanf("%d",&a); if(a%2!=0) sum=sum*a; } printf("%d\n",sum); } return 0; }
2007
1.有没有发现读题的重要性……m、n比较大小坑了很多人呐。
#include<stdio.h>
int main()
{
int m,n,t;
long x,y;
while((scanf("%d%d",&m,&n))!=EOF)
{
if(m>n){
t=m;m=n;n=t;
}
for(x=0,y=0;m<=n;m++)
if(m%2!=0)
y+=m*m*m;
else
x+=m*m;
printf("%d %d\n",x,y);
}
return 0;
}
2.
2010
#include<stdio.h>
int main()
{
int m,n,a,b,c,i,j,s,d[1000];
while(scanf("%d%d",&m,&n)!=EOF)
{
j=0;
for(i=m;i<=n;i++)
{
a=i/100;//取其百位数字
b=i/10-10*a;//取其十位数字
c=i%10;//取其个位数字
s=a*a*a+b*b*b+c*c*c;
if(s==i)
{d[j]=i;//判断三位数字的立方和是否等于本身,若等于
j++;} 则将其存放到一数组中。
}
if(j==0)
printf("no\n");
else if(j==1)
printf("%d\n",d[0]);
else if(j>=2)
{
for(i=0;i<j-1;i++)
printf("%d ",d[i]);
printf("%d\n",d[j-1]);
}
}
return 0;}
标签:style blog color io os 使用 ar for 文件
原文地址:http://www.cnblogs.com/whitecube71/p/waterone.html