第一次上机总结

第一次上机总结

问题:

  • oj暴毙了一个多小时我真的没想到(xdjm编程真积极...)
  • 没有写分号;或者写了中文分号(编译器不认中文分号)
  • if语句里面不是字符串
    错误示例:
if("a<0&&b>0")

正确写法(建议ifforwhile块用大括号给括起来)

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;
}
posted @ 2021-03-12 13:56  仪光19暴毙开发者  阅读(133)  评论(0编辑  收藏  举报