信奥赛一本通作业

day1

题目1000

【题目描述】

求两个整数的和。

【输入】

一行,两个用空格隔开的整数。

【输出】

两个整数的和。

【代码】

#include <stdio.h>
int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a+b);
    return 0;
}

题目1002

【题目描述】

输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。

【输入】

只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。

【输出】

只有一行,一个整数,即输入的第二个整数。

【代码】

#include <stdio.h>
int main(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    printf("%d",b);
    return 0;
}

题目2060

【题目描述】

在屏幕上输出“Hello World!”。

【输入】

(无)

【输出】

(无)

【代码】

#include <stdio.h>    
    
int main() {
    int a,b;
    scanf("%d",&a);
    b=a*10;
    printf("%d %d", a,b);    
    return 0;    
}

题目2062

【题目描述】

已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?

【输入】

输入x。

【输出】

人数和电影票总价,中间用一个空格隔开。

【代码】

#include <stdio.h>      
      
int main() {  
    int a, b;  
    // 修正scanf的使用,应传递变量a的地址  
    scanf("%d", &a);  
    b = a * 10;  
    printf("%d %d", a, b);      
    return 0;      
}

题目2063

【题目描述】

有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?

【输入】

(无)

【输出】

如题述,牛的数量。

【代码】

#include <stdio.h>  
  
int main() {  
    // 定义常量,表示题目中给出的数据  
    int cows1 = 15; // 第一组牛的数量  
    int days1 = 20; // 第一组牛吃草的天数  
    int cows2 = 20; // 第二组牛的数量  
    int days2 = 10; // 第二组牛吃草的天数  
  
    // 计算第一组牛总共吃的草量  
    int totalGrass1 = cows1 * days1;  
    // 计算第二组牛总共吃的草量  
    int totalGrass2 = cows2 * days2;  
  
    // 计算在days1 - days2这段时间内草的增长量  
    int grassGrowth = totalGrass1 - totalGrass2;  
    // 计算每天草的增长量  
    int dailyGrowth = grassGrowth / (days1 - days2);  
  
    // 计算每天新生的草量可以供几头牛吃1天  
    int cowsForDailyGrowth = dailyGrowth; // 因为每头牛每天吃1份草  
  
    // 输出结果  
    printf("%d", cowsForDailyGrowth);  
  
    return 0;  
}

day2

题目2064

【题目描述】

输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。

【输入】

输入两个正整数a和b。

【输出】

输出a与b交换值后的结果。

【代码】

#include<stdio.h>  
  
int main(){  
    int a, b;  
    scanf("%d %d", &a, &b); 
    a = a ^ b;  
    b = a ^ b;   
    a = a ^ b;  
    printf("%d %d", a, b);  
    return 0;  
}

题目2066

【题目描述】

已知小明有n元,他买了一本书,这本书原价为m元,现在打8折出售。求小明还剩多少钱(保留2位小数)。

【输入】

输入n,m。

【输出】

小明还剩多少钱(保留2位小数)。

【代码】

#include<stdio.h>

int main(){
    int m,n;
    float k;
    scanf("%d %d",&m,&n);
    k=m-n*0.8;
    printf("%.2f",k);
    return 0;
}

题目1037

【题目描述】

给定非负整数n,求2n的值,即2的n次方。

【输入】

一个整数n。0≤n<31。

【输出】

一个整数,即2的n次方。

【代码】

#include<stdio.h>

int main(){
    int n;
    int result=1;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        result *=2;
    }
    printf("%d",result);
}

题目2070

【题目描述】

输入一个三位数,要求把这个数的百位数与个位数对调,输出对调后的数。

【输入】

三位数。

【输出】

如题述结果。

【代码】

#include <stdio.h>  
  
int main() {  
    int number, reversedDigitsNumber;  
    int hundreds, tens, units; 
    // 提示用户输入一个三位数  
    scanf("%d", &number);  
    // 提取百位、十位和个位数字  
    hundreds = number / 100;  
    tens = (number / 10) % 10;  
    units = number % 10;  
    // 对调百位数与个位数  
    reversedDigitsNumber = units * 100 + tens * 10 + hundreds;   
    printf("%d\n", reversedDigitsNumber);  
  
    return 0; 
}

题目2051

【题目描述】

读入一个正整数a,如果a为偶数输出yes

【输入】

一个正整数a。

【输出】

偶数输出yes,否则什么也不输出。

【代码】

#include<stdio.h>

int main(){
    int a;
    scanf("%d",&a);
    if(a%2==0){
        printf("yes");
    }
    else{
        printf("");
    }
    return 0;
}

day3

题目1040

【题目描述】

输入一个浮点数,输出这个浮点数的绝对值,保留到小数点后两位。

【输入】

输入一个浮点数,其绝对值不超过10000。

【输出】

输出这个浮点数的绝对值,保留到小数点后两位。

【代码】

#include <stdio.h>  
#include <math.h>  
  
int main() {  
    float number, absoluteValue;  
    scanf("%f", &number);  
    // 计算绝对值  
    absoluteValue = fabs(number); 
    // 输出绝对值,保留到小数点后两位  
    printf("%.2f\n", absoluteValue);  
  
    return 0;  
}

题目1044

【题目描述】

判断一个正整数是否是两位数(即大于等于10且小于等于99)。若该正整数是两位数,输出1,否则输出0。

【输入】

一个正整数,不超过1000。

【输出】

一行。若该正整数是两位数,输出1,否则输出0。

【代码】

#include <stdio.h>  
  
int main() {  
    int number;  
    int result;  
    scanf("%d", &number);  
    // 判断是否是两位数  
    if (number >= 10 && number <= 99) {  
        result = 1;  
    } else {  
        result = 0;  
    }  

    // 输出结果  
    printf("%d\n", result);  
    return 0; 
}

题目2052

【题目描述】

读入一个整数,若这个数大于1并且小于100,则输出yes

【输入】

一个整数

【输出】

满足条件输出yes,否则不输出。

【代码】

#include <stdio.h>  
  
int main() {  
    int number;  
  

    scanf("%d", &number);  
  
    // 检查整数是否在指定范围内  
    if (number > 1 && number < 100) {  
        // 若整数在范围内,则输出yes  
        printf("yes\n");  
    }  

  
    return 0; 
}

题目1042

【题目描述】

任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO。例如,字符A的ASCIIASCII值是65,则输出YES,若输入字符B(ASCII值是6666),则输出NO。

【输入】

输入一个字符。

【输出】

如果其ASCII值为奇数,则输出YES,否则,输出NO。

【代码】

#include <stdio.h>  
  
int main() {  
    char ch;  

    scanf(" %c", &ch); // 注意%c前的空格,用于消耗可能存在的换行符  
  
    // 获取字符的ASCII值,并判断其是否为奇数  
    if ((int)ch % 2 != 0) {  
        // 若ASCII值为奇数,则输出YES  
        printf("YES\n");  
    } else {  
        // 若ASCII值为偶数,则输出NO  
        printf("NO\n");  
    }  
  
    return 0; 
}

题目2016

【题目描述】

利用for循环。计算输出1+2+3+...+n的和。

【输入】

输入n。

【输出】

如题述,之和。

【代码】

#include <stdio.h>  
  
int main() {  
    int n, sum = 0; // 初始化n用于输入,sum用于存储和,初始值为0  

    scanf("%d", &n);  
    // 使用for循环计算1到n的和  
    for (int i = 1; i <= n; i++) {  
        sum += i; // 将i加到sum上  
    }  
  
    // 输出结果  
    printf("%d\n",  sum);  
  
    return 0; // 返回零表示程序成功执行  
}

day4

题目1053

【题目描述】

输入三个整数,数与数之间以一个空格分开。 输出一个整数,即最大的整数。

【输入】

输入为一行,包含三个整数,数与数之间以一个空格分开。

【输出】

输出一行,包含一个整数,即最大的整数。

【代码】

#include <stdio.h>  
  
int main() {  
    int num1, num2, num3, max;  
    scanf("%d %d %d", &num1, &num2, &num3);   
    // 找出三个数中的最大值  
    max = num1; // 假设第一个数是最大的  
    if (num2 > max) {  
        max = num2; // 如果第二个数更大,则更新最大值  
    }  
    if (num3 > max) {  
        max = num3; // 如果第三个数更大,则再次更新最大值  
    }   
    // 输出最大值  
    printf("%d\n", max);  
  
    return 0; 
}

题目1020

【题目描述】

输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码。

【输入】

一个除空格以外的可见字符。

【输出】

一个十进制整数,即该字符的ASCII码。

【代码】

#include <stdio.h>  
  
int main() {  
    char ch;  

    scanf(" %c", &ch); // 注意 %c 前的空格,它告诉 scanf 跳过任何前导空白字符(包括空格、制表符和换行符)  
  
    // 输出字符的ASCII码  
    printf("%d\n", (int)ch);  
  
    return 0;  
}

题目1021

【题目描述】

输入一个整数,即字符的ASCII码,保证存在对应的可见字符。输出相对应的字符。

【输入】

一个整数,即字符的ASCII码,保证存在对应的可见字符。

【输出】

一行,包含相应的字符。

【代码】

#include <stdio.h>  
  
int main() {  
    int asciiCode;  
    char correspondingChar;  

    scanf("%d", &asciiCode);  

    correspondingChar = (char)asciiCode;  
  
    printf("%c\n",correspondingChar);  
  
    return 0;  
}

题目2068

【题目描述】

数学中经典的“鸡兔同笼”问题,已知头共x个,脚共y只,问笼中的鸡和兔各有多少只?

【输入】

头和脚的数量。

【输出】

鸡和兔各自数量。一个空格隔开。

【代码】

#include <stdio.h>  
  
int main() {  
    int x, y; // x表示头数,y表示脚数  
    int chickens, rabbits; // chickens表示鸡的数量,rabbits表示兔的数量  

    scanf("%d %d", &x, &y);  
  
    // 根据公式计算鸡和兔的数量  
    chickens = 2 * x - y / 2;  
    rabbits = (y - 2 * x) / 2;  
    // 输出结果  
    printf("%d %d\n", chickens, rabbits);  
  
    return 0;  
}

题目1026

【题目描述】

读入一个字符,一个整数,一个单精度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。输出浮点数时保留6位小数。

【输入】

第一行是一个字符;

第二行是一个整数;

第三行是一个单精度浮点数;

第四行是一个双精度浮点数。

【输出】

输出字符、整数、单精度浮点数和双精度浮点数,之间用空格分隔。

【代码】

#include <stdio.h>  
  
int main() {  
    char ch;  
    int integer;  
    float singleFloat;  
    double doubleFloat;   
    scanf(" %c %d %f %lf", &ch, &integer, &singleFloat, &doubleFloat);  
  
    // 输出这些值,每个值之间用空格分隔,浮点数保留6位小数  
    printf("%c %d %.6f %.6lf\n", ch, integer, singleFloat, doubleFloat);  
  
    return 0;  
}

day5

题目2059

【题目描述】

期末来临了,班长小Q决定将剩余班费x元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。

【输入】

一个正整数x(剩余班费)。

【输出】

一行,依次为6元、5元和4元钱笔的数目,用一个空格隔开。

【代码】

#include <stdio.h>  
  
int main() {  
    int x; // 剩余班费  
    int sixYuanPens = 0, fiveYuanPens = 0, fourYuanPens = 0; // 6元、5元和4元钢笔的数量  
    int found = 0; // 标记是否找到解决方案  
    scanf("%d", &x);  
  
    // 遍历所有可能的6元钢笔数量  
    for (sixYuanPens = 0; sixYuanPens * 6 <= x; sixYuanPens++) {  
        // 遍历所有可能的5元钢笔数量  
        for (fiveYuanPens = 0; (sixYuanPens * 6 + fiveYuanPens * 5) <= x; fiveYuanPens++) {  
            // 计算剩余的金额能够购买多少支4元钢笔  
            int remainingMoney = x - (sixYuanPens * 6 + fiveYuanPens * 5);  
            fourYuanPens = remainingMoney / 4;  
  
            // 检查是否刚好花完所有钱  
            if ((sixYuanPens * 6 + fiveYuanPens * 5 + fourYuanPens * 4) == x) {  
                found = 1;  
                printf("%d %d %d\n", sixYuanPens, fiveYuanPens, fourYuanPens);  
                // 如果有多种组合,可以取消下面的break来输出所有组合,  
                // 但题目要求一种方案,所以找到后直接退出  
                break;  
            }  
        }  
        // 如果内层循环找到了解决方案,外层循环也可以提前退出  
        if (found) break;  
    }  
  
    return 0;  
}

题目1051

【题目描述】

编写程序,计算下列分段函数y=f(x)y=f(x)的值。结果保留到小数点后三位。

    y=−x+2.5;0≤x<5

    y=2−1.5(x−3)(x−3);5≤x<10

    y=x2−1.5;10≤x<20

【输入】

一个浮点数N(0≤N<20)

【输出】

输出 NN 对应的分段函数值:f(N)。结果保留到小数点后三位。

【代码】

#include <stdio.h>  
  
int main() {  
    double x, y;  
 
    scanf("%lf", &x);  
  
    // 根据x的值计算y的值  
    if (x >= 0 && x < 5) {  
        y = -x + 2.5;  
    } else if (x >= 5 && x < 10) {  
        y = 2 - 1.5 * (x - 3) * (x - 3); // 注意这里的公式,原式可能是笔误,已按常见形式解释  
    } else if (x >= 10 && x < 20) {  
        y = x / 2 - 1.5;  
    } else {  
        // 如果x不在任何区间内,输出错误信息(理论上此分支不应被执行,因为题目已给出x的范围)  
        printf("x的值不在定义的区间内。\n");  
        return 1; // 返回非零值表示程序异常结束  
    }  
  
    // 输出y的值,保留三位小数  
    printf("%.3lf\n", y);  
  
    return 0; // 返回零表示程序正常结束  
}

题目1050

【题目描述】

在清华校园里,没有自行车,上课办事会很不方便。但实际上。并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All"。

【输入】

输入一行,包含一个整数,表示一次办事要行走的距离,单位为米。

【输出】

输出一行,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All"。

【代码】

#include <stdio.h>  
  
int main() {  
    double distance; // 距离,单位:米  
    double bikeTime, walkTime; // 骑车和步行所需时间,单位:秒  
    double bikeFixedTime = 27 + 23; // 骑车固定时间(找车、开锁、停车、锁车),单位:秒  
    double bikeSpeed = 3.0; // 骑车速度,单位:米/秒  
    double walkSpeed = 1.2; // 步行速度,单位:米/秒  
  
    scanf("%lf", &distance);  
  
    // 计算骑车所需时间  
    bikeTime = bikeFixedTime + distance / bikeSpeed;  
  
    // 计算步行所需时间  
    walkTime = distance / walkSpeed;  
  
    // 比较两者时间并输出结果  
    if (bikeTime < walkTime) {  
        printf("Bike\n");  
    } else if (bikeTime > walkTime) {  
        printf("Walk\n");  
    } else {  
        printf("All\n");  
    }  
  
    return 0;  
}

题目1055

【题目描述】

判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。

【输入】

输入只有一行,包含一个整数a(0 < a < 3000)。

【输出】

一行,如果公元a年是闰年输出Y,否则输出N。

【代码】

#include <stdio.h>  
  
int main() {  
    int year;  
  
    // 提示用户输入年份   
    scanf("%d", &year);  
  
    // 判断是否是闰年  
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {  
        printf("Y\n");  
    } else {  
        printf("N\n");  
    }  
  
    return 0;  
}

题目1054

【题目描述】

给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。如果能构成三角形,则输出“yes”,否则输出“no”。

【输入】

输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。

【输出】

如果能构成三角形,则输出“yes” ,否则输出“no”。

【代码】

#include <stdio.h>  
  
int main() {  
    int a, b, c;  
  
    // 提示用户输入三条线段的长度  
    scanf("%d %d %d", &a, &b, &c);  
  
    // 检查是否满足三角形的三边关系定理  
    if (a + b > c && a + c > b && b + c > a) {  
        printf("yes\n");  
    } else {  
        printf("no\n");  
    }  
  
    return 0;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值