zoukankan      html  css  js  c++  java
  • 第一次上机总结

    第一次上机总结

    问题:

    • 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
    ",x1,x1);
    		}
    		else{
    			x1 = (-b - sqrt(delt)) / (2 * a);
    			x2 = (-b + sqrt(delt)) / (2 * a);
    			if(a > 0.0){
    				printf("%.6f %.6f
    ",x1,x2);
    			}
    			else{
    				printf("%.6f %.6f
    ",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
    %d/%d
    ",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);
    	}
    	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
    ",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;
    }
    
  • 相关阅读:
    分分钟提升命令行模式下密码输入逼格
    MySQL server has gone away 的两个最常见的可能性
    第一次遇到刷新缓冲区延时
    Mac上安装mysqlclient的报错
    python3 --- locale命名空间让程序更加安全了
    doctest --- 一个改善python代码质量的工具
    MySQL优化器 --- index_merge
    机智的MySQL优化器 --- is null
    Centos-7.x 下子网掩码的配置
    JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
  • 原文地址:https://www.cnblogs.com/woshilxcdexuesheng/p/14523465.html
Copyright © 2011-2022 走看看