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;
}