SWUST青铜二(算法排位赛)

在这里插入图片描述

34: 计算函数

在这里插入图片描述

#include "stdio.h"
int main(){
    int y,x;
    scanf("%d",&x);
    if(x<1){
        y=x;
    }else if(x<10){
        y=2*x-1;
    }else{
        y=3*x-11;
    }
    printf("%d\n",y);
}

35: 成绩的等级

在这里插入图片描述

#include "stdio.h"
int main() {
//    给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为A 80-89分为B 70-79分为C 60-69分为D 60分以下为E
    int score;
    scanf("%d",&score);
    if(score>=90){
        printf("A\n");
    } else if(score>=80){
        printf("B\n");
    } else if(score>=70){
        printf("C\n");
    } else if(score>=60){
        printf("D\n");
    } else{
        printf("E\n");
    }
}

37: 利润提成

在这里插入图片描述

#include "stdio.h"
int main() {
    int bonus,profit;
    scanf("%d",&profit);//记住用int型,因为题目要求输入整数,不要用%f
    if(profit<=100000){
        bonus = profit*0.1;
    } else if(profit<=200000){
        bonus = 100000*0.1+(profit-100000)*0.075;
    } else if(profit<=400000){
        bonus = 100000*(0.1+0.075)+(profit-200000)*0.05;
    } else if(profit<=600000){
        bonus = 100000*(0.1+0.075)+200000*0.05+(profit-400000)*0.03;
    } else if(profit<=1000000){
        bonus = 100000*(0.1+0.075)+200000*0.05+200000*0.03+(profit-600000)*0.015;
    } else {
        bonus = 100000*(0.1+0.075)+200000*0.05+200000*0.03+400000*0.015+(profit-1000000)*0.01;
    }
    printf("%d\n",bonus);
}

39: 字符个数

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(){
    char s;
    int letter=0,num=0,black=0,other=0;
    while((s=getchar())!='\n'){//这里以低昂要加上括号,不然不对
        if( (s>='A' && s<='Z') || (s>='a' && s<='z')){
            letter++;
        }else if(s>='0' && s<='9'){
            num++;
        }else if(s==32){//空格的ASCII==32
            black++;
        }else{
            other++;
        }
    };
    printf("%d %d %d %d\n",letter,num,black,other);
}

注意以下使用puts( )读入字串,Clion中答案虽然正确,但是OJ中会报错!!!!

#include<stdio.h>
#include<string.h>
int main(){
    char s[101];
    int length;
    int letter=0,num=0,black=0,other=0;
	gets(s);
	length = strlen(s);
    for(int i=0;i<length;i++){
    	//A-65  a-97
        if(s[i]>='A' && s[i]<='Z' || s[i]>='a' && s[i]<='z'){
        	letter++;
        }else if(s[i]>='0' && s[i]<='9'){
        	num++;
        }else if(s[i]==32){//空格的ASCII==32
        	black++;
        }else{
        	other++;
        }
    }
    printf("%d %d %d %d\n",letter,num,black,other);
}

在这里插入图片描述

在这里插入图片描述

即使Clion中可以通过,但是OJ却说gets函数是危险的,不要使用。这里我引入另一位博主的文章片段

函数执行需要一个栈空间,但这个栈空间容量是有限的,而且栈里存放了函数返回的地址。gets()函数在获取输入时,如果无限输入会造成栈空间溢出,在程序返回时,不能正常的找到返回地址,程序将发生不可预测行为

45: 分数求和

在这里插入图片描述

#include<stdio.h>
int main(){
	int a=1,b=2,n;
    float sum=0;
    int temp;
	scanf("%d",&n);
    for(int i=0;i<n;i++){
    	sum+=(1.0)*b/a;
        temp=a;
        a=b;
        b=temp+a;
    }
        printf("%.2f\n",sum);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值