第一次上机总结
第一次上机总结
问题:
- oj暴毙了一个多小时我真的没想到(xdjm编程真积极...)
- 没有写分号
;
或者写了中文分号;
(编译器不认中文分号) - if语句里面不是字符串
错误示例:
if("a<0&&b>0")
正确写法(建议if
块 for
块 while
块用大括号给括起来)
if(a<0&&b>0){;}
else if(a>=0&&b>0){;}
else {}
- 输出不按照题目要求来写 一定注意输出格式 别打多余信息出来
tips:
- 输入和输出
类型 | scanf | printf |
---|---|---|
int |
%d |
%d |
long long |
%lld |
%lld |
char |
%c |
%c |
double |
%lf |
%f |
格式控制的一些基本用法 | ||
例如:若a为double型 printf("%.6f",a); 输出6位小数 |
如果题目对输入输出有特殊要求,关注HINT
- 字符画
win+R
打开记事本 把字符画原样粘进去ctrl+H
(替换) 把所有的\
换成\\
把所有的"
换成\"
也可以自己写代码实现这一功能. - 读入不定组数据
scanf
有返回值,表示成功读入的变量个数,如果到达文件末尾返回EOF
(-1).用while循环控制. - 形如
3/1600
的是整数除法,需要浮点数除法请用3.0/1600.0
AC代码
先更新我写的 正式版题解参考下面链接
及时关注https://gitee.com/duchenhong/programming_routine_2021c/
A题 北航欢迎你
字符画.这东西用程序生成代码即可 代码链接https://paste.ubuntu.com/p/QY7FWyMNZ9/
B题 简单方程
注意条件判断 先验判别式
#include <stdio.h>
int main(){
double a,b,c,delt,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
delt = b * b - 4 * a * c;
if(delt < 0.0){
puts("no real roots");
}
else{
if(delt == 0.0){
x1 = -b / (2 * a);
printf("%.6f %.6f\n",x1,x1);
}
else{
x1 = (-b - sqrt(delt)) / (2 * a);
x2 = (-b + sqrt(delt)) / (2 * a);
if(a > 0.0){
printf("%.6f %.6f\n",x1,x2);
}
else{
printf("%.6f %.6f\n",x2,x1);
}
}
}
return 0;
}
C题 ZJD学GCD
最大公约数 善于利用hint是一种美德
两个整数最大公约数和最小公倍数的乘积等于这两个整数的乘积.
a*b=gcd(a,b)*lcm(a,b)
代码:
#include <stdio.h>
int main(){
int a,b,gcd,lcm;
scanf("%d%d",&a,&b);
if(a<b)gcd=a;
else gcd=b;
while(!(a%gcd==0&&b%gcd==0))gcd--;
lcm = a * b / gcd;
printf("%d %d\n%d/%d\n",gcd,lcm,a / gcd,b / gcd);
return 0;
}
D题 计算绩点
注意一定是浮点数除法
#include <stdio.h>
int main(){
double x,h;
double gps=0,hs=0;
while(~scanf("%lf%lf",&x,&h)){
if(x>=60&&x<=100){
gps+=(4-3.0/1600.0*(100-x)*(100-x))*h;
}
hs+=h;
}
printf("%.2f",gps/hs);
return 0;
}
E题 High Heels!
我们用n
记录每一次拾取或者失去的高跟鞋数
如果整个过程
中你的脚下都有高跟鞋
,那么你将走上领奖台并成为女王,恭喜你,你赢了!
意思是说如果中间某一步n<1
就直接gameover
代码如下
#include <stdio.h>
int main(){
int n,a,b,flag=1;
scanf("%d",&n);
while(~scanf("%d%d",&b,&a)){
n += a?-b:b;
if(n <= 0){
flag = 0;break;
}
}
if(flag){
printf("AWESOME! > > > Heels:%d\n",n);
}
else{
puts("Sorry, you lose!");
}
return 0;
}
F题 cbj学数学分析(阶乘)
思路 得到n里面有几个5,25,125,....的因子
#include <stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int sum=0;
while(n>=5){
sum+=n/5;
n/=5;
}
printf("%d\n",sum);
}
return 0;
}
G题 女神的密码1
代码填空 整数可以表示字符.
#include <stdio.h>
int main()
{
int a;
while(scanf("%d.",&a) != EOF) // 读入数字,存到变量a中
{
//请填空
putchar(a);
}
return 0;
}
H题 女神的密码2
找规律就完事了
#include <stdio.h>
#include <ctype.h>
char buffer[1024]={0};
int main(){
fgets(buffer,1024,stdin);//头文件stdio.h 从stdin里面读最多1024个字符到buffer
int n = strlen(buffer),i;
for(i = 0;i < n;i++){
if(islower(buffer[i])){//头文件ctype.h 判断字符是否为小写字母
putchar(('z' - buffer[i]) + 'a');
}
else if(isupper(buffer[i])){//头文件ctype.h 判断字符是否为大写字母
putchar(('Z' - buffer[i]) + 'A');
}
}
return 0;
}