电话费用比较
float callTime; // 通话时间
scanf("%f", &callTime); // 读取通话时间
// 计算Easyown和GSM的费用
float costEasyown = callTime * 0.6; // Easyown费用
float costGSM = 50 + callTime * 0.4; // GSM费用,包括月租费
// 判断哪种方式更便宜
if (costEasyown < costGSM) {
printf("Easyown\n");
} else if (costEasyown > costGSM) {
printf("GSM\n");
} else {
printf("equal\n");
}
分段计算水费
{
double x, y;
scanf("%lf", &x);
if (x <= 15) {
y = 4 * x / 3;
} else {
y = 2.5 * x - 10.5;
}
printf("%.2lf\n", y);
阶梯电价计算
double electricity, cost;
int tier;
// 读取用户输入的用电度数
scanf("%lf", &electricity);
// 根据用电度数确定阶梯电价档次
if (electricity <= 220) {
tier = 1;
} else if (electricity <= 400) {
tier = 2;
} else {
tier = 3;
}
// 根据阶梯档次计算电费
switch (tier) {
case 1:
cost = electricity * 0.49;
break;
case 2:
cost = 220 * 0.49 + (electricity - 220) * 0.54;
break;
case 3:
cost = 220 * 0.49 + (400 - 220) * 0.54 + (electricity - 400) * 0.79;
break;
}
// 输出电费金额,保留两位小数
printf("%.2f\n", cost);
珂朵莉送礼物
{
int a,b;
scanf("%ld",&a);
if(a%3==0) b=a/3*2;
else b=a/3*2+1;
printf("%d",b);
}
面试资格确认
#include<stdio.h>
#include <string.h>
int main () {
int age;
char zy[10],xx;
scanf("%d\n",&age);
scanf("%s\n",&zy);
scanf("%c\n",&xx);
if(strcmp(zy, "EIE") == 0){
if (age>25||xx=='A'){
printf("YES\n");
}else
printf("NO\n");
}else if(strcmp(zy, "CS") == 0){
if (age<28){
printf("YES\n");
}else
printf("NO\n");
}
return 0;
}
苹果与虫子
#include <stdio.h>
#include <math.h> // 引入math.h以使用ceil函数
int main() {
int m, t, s;
scanf("%d %d %d", &m, &t, &s); // 读取输入的m, t, s
// 总时间大于或等于吃完所有苹果的时间,或者吃一个苹果的时间等于0
if (s >= m * t || t == 0) {
printf("0\n"); // 输出0
} else {
// 使用ceil函数向上取整
double eatenApples = ceil((double)s / t);
int remainingApples = m - (int)eatenApples; // 计算剩余的苹果数
printf("%d\n", remainingApples); // 输出剩余的苹果数
}
return 0;
}
秋奕买瓜
int w;
// 读取输入的西瓜重量
scanf("%d", &w);
// 判断条件:西瓜重量大于2且为偶数
if (w > 2 && w % 2 == 0) {
// 如果满足条件,则输出 "YES"
printf("YES\n");
} else {
// 否则输出 "NO"
printf("NO\n");
}
纸牌
int n,result;
scanf("%d", &n);
if (n % 2 == 0) {
result = n/2;
} else {
result = 1 + n/2 ;
}
printf("%d\n",result);
计算Sn
int n, i, x = 1; // x用来控制正负号,初始化为1
long long Sn = 0; // 使用long long来避免可能的整数溢出
// 输入正整数n
scanf("%d",&n);
// 计算Sn的值
for (i = 1; i <= n; ++i) {
Sn += x * i; // 累加每一项的值,sign控制正负
x *= -1; // 切换正负号
}
// 输出结果
printf("%d",Sn);
return 0;
求n个数的平均值
#include "stdio.h"
#define N 10
float fun(int a[N],int n)
{
/***********begin***********/
int sum=0;
float ave=0;
for(int i=0;i<n;i++)
sum+=a[i];
ave=sum/10.0;
return ave;
/***********end***********/
}
int main()
{
int a[N],i;
for(i=0;i<N;i++) scanf("%d",&a[i]);
float average;
average=fun(a,N);
printf("%.4f\n",average);
return 0;
}
求sn=a+aa+aaa+aaaa...
int a,n,sum,s;
scanf("%d%d",&a,&n);
for (int i = 1; i <= n; i++) {
// 构建当前项(例如:aa, aaa, ...)
sum = sum * 10 + a;
// 累加当前项到总和中
s += sum;
}
printf("%d",s);
求满足条件的数之和
int fun(int m,int n)
{ int sum,i;
/***********begin***********/
sum = 0;
for (i = m; i <= n; i++) {
if (i % 3 != 0) {
sum += i;
}
}
return sum;
/***********end***********/
}
int main( )
{
int m,n;
scanf("%d,%d",&m,&n);
printf("s=%d\n",fun(m,n));
return 0;
}
求最大公约数和最小公倍数计算
//编写最大公约数GCD函数
/*********Begin*********/
long long int gcd(long long int a, long long int b) {
// 辗转相除法
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
/*********End**********/
//编写最小公倍数LCM函数
/*********Begin*********/
long long int lcm(long long int a, long long int b) {
// 最小公倍数 = 两数之积 / 最大公约数
return a * b / gcd(a, b);
}
/*********End**********/
int main(void)
{
/*********Begin*********/
long long int num1, num2, g, l;
// 输入两个整数
if (scanf("%lld %lld", &num1, &num2) != 2 || num1 <= 0 || num2 <= 0) {
printf("Input Error\n");
return 1;
}
// 调用函数并输出结果
g = gcd(num1, num2);
l = lcm(num1, num2);
printf("%lld ", g);
printf("%lld\n", l);
/*********End**********/
return 0;
水仙花数的个数
int a, b, count = 0;
scanf("%d,%d", &a, &b);
for (int i = a; i <= b; i++) {
int num = i;
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if (sum == i) {
count++;
}
}
printf("%d\n",count);
循环—求和
/***********begin***********/
scanf ("%d",&n);
for(s=0,i=1;i<=n;i++)
{
if(i%7!=0&&i%5!=0)
s+=i;
continue;
}
/************end************/
循环—求满足条件的数之和
/***********begin***********/
for(sum=0,i=0;i<n+1;i++)
{if (i%3!=0)
sum+=i;
continue;}
return sum;
/***********end***********/
不及格成绩统计
int a[40];
int n, i, sum = 0;
printf("Enter the number:\n");
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &a[i]); // 直接读入成绩到数组中对应的位置
if(a[i] < 60){ // 判断该成绩是否不及格
sum++; // 如果不及格,计数器加一
}
}
printf("count=%d\n", sum);
return 0;
存款买房
int main() {
double total_cost, annual_salary, portion_down_payment, portion_saved;
double down_payment, monthly_savings, savings_needed, months;
// 读取输入
scanf("%lf", &total_cost);
scanf("%lf", &annual_salary);
scanf("%lf", &portion_saved);
// 计算首付款
portion_down_payment = 0.30; // 30% 首付
down_payment = total_cost * portion_down_payment;
// 计算每月存款
monthly_savings = (annual_salary / 12) * (portion_saved / 100);
// 计算需要的月份数
savings_needed = down_payment;
months = savings_needed / monthly_savings;
if (months != (int)months) { // 如果有余数,月份数需要加1
months = (int)months + 1;
}
// 输出结果,保留两位小数
printf("%.2f,%.2f,%d\n", down_payment, monthly_savings, (int)months);
电报换字符
char ch;
while ((ch=getchar())!=EOF){
if (ch>='a'&&ch<='y'){
putchar(++ch);
}else if (ch=='z'){
putchar('a');
}else{
putchar(ch);
}
}
数字计数
int n, x, count = 0;
// 读取输入
scanf("%d %d", &n, &x);
// 遍历区间 1 到 n 的每个数字
for (int i = 1; i <= n; i++) {
int temp = i; // 用于分解数字的临时变量
while (temp > 0) {
if (temp % 10 == x) {
count++; // 如果当前最低位是 x,则计数加1
}
temp /= 10; // 移除当前最低位
}
}
// 输出结果
printf("%d\n", count);
体操比赛打分
float a[10],max=0.0,min=100.0,sum=0.0,pjf;
int i;
for(i=0;i<10;i++){
scanf("%f",&a[i]);
if (a[i]>max){
max=a[i];
}
if (a[i]<min){
min=a[i];
}
sum+=a[i];
}
sum=sum-min-max;
pjf=sum/8;
printf("%.3f %.3f %.3f",max,min,pjf);
小玉在游泳
float s;
float k=2;
float sum=2;
int i=1;
scanf("%f",&s);
while(s>sum)
{
i++;
k*=0.98;
sum+=k;
}
printf("%d",i);
学长的文本匹配
char s[10],c[]="codeforces";
int i,d=0;
scanf("%s",&s);
for (i=0;i<10;i++){
if (s[i]!=c[i]){
d++;
}
}
printf("%d",d);
一周的日最高气温
int temperatures[7];
int i, maxTemp = 0;
for (i = 0; i < 7; i++) {
scanf("%d", &temperatures[i]);
if (temperatures[i] < 20 || temperatures[i] > 84) {
return 1;
}
if (temperatures[i] > maxTemp) {
maxTemp = temperatures[i];
}
}
printf("max=%d\n", maxTemp);
一尺之锤
int a,day=1;
scanf("%d",&a);
for(;a>1;){
a=a/2;
day++;
}
printf("%d",day);
好朋友的对数
int numsSize;
// 输入数组大小
scanf("%d", &numsSize);
int nums[numsSize];
// 输入数组元素
for (int i = 0; i < numsSize; i++) {
scanf("%d", &nums[i]);
}
int count = 0;
// 双重循环遍历数组找出所有的(i, j)对
for (int i = 0; i < numsSize; i++) {
for (int j = i + 1; j < numsSize; j++) {
// 如果满足nums[i] == nums[j],则该对是好朋友
if (nums[i] == nums[j]) {
count++;
}
}
}
// 输出好朋友的数量
printf("%d\n", count);
财务管理
double balance[12]; // 存储每个月的期末余额
double total = 0.0; // 存储总余额
int i;
// 读取输入的十二个月的期末余额
for (i = 0; i < 12; i++) {
scanf("%lf", &balance[i]);
total += balance[i]; // 累加每个月的余额
}
// 计算平均余额
double average = total / 12;
// 输出结果,格式化为带有美元符号的字符串
printf("$%.2f\n", average);
去掉最值后的平均工资
int N;
scanf("%d", &N); // 读取数组大小
int nums[N]; // 根据输入的N创建数组
double total = 0; // 存储工资总和
// 读取工资数据
for (int i = 0; i < N; i++) {
scanf("%d", &nums[i]);
total += nums[i]; // 累加工资
}
// 找到最大值和最小值
int max = nums[0], min = nums[0];
for (int i = 1; i < N; i++) {
if (nums[i] > max) max = nums[i];
if (nums[i] < min) min = nums[i];
}
// 去掉两个最值后重新计算总和
total -= max + min;
// 计算平均工资
double average = total / (N - 2);
// 输出结果,保留五位小数
printf("%.5f\n", average);
你的生活费高吗
int N; // 班级人数
int total = 0; // 所有生活费的总和
int expenses[50]; // 存储每位同学的生活费,假设班级人数不超过50人
// 读取输入的生活费
for (N = 0; N < 50 && scanf("%d", &expenses[N]) == 1; N++) {
total += expenses[N]; // 累加生活费
}
// 计算平均生活费
double average = (double)total / N;
// 输出超过平均生活费的费用
for (int i = 0; i < N; i++) {
if (expenses[i] > average) {
printf("%d ", expenses[i]);
}
}
只出现了一次的元素之和
int main() {
int N;
scanf("%d", &N); // 读取数组的大小
int nums[N]; // 创建数组存储输入的整数
int counts[101] = {0}; // 创建一个数组来统计每个数字出现的次数,大小为101,因为1≤nums[i]≤100
// 读取数组中的整数,并统计每个数字出现的次数
for (int i = 0; i < N; i++) {
scanf("%d", &nums[i]);
counts[nums[i]]++; // 增加相应数字的计数
}
int sum = 0; // 初始化唯一元素的和为0
// 遍历统计数组,找出只出现一次的元素,并累加它们的值
for (int i = 1; i <= 100; i++) {
if (counts[i] == 1) {
sum += i; // 如果某个数字出现一次,则累加到sum中
}
}
// 输出唯一元素的和
printf("%d\n", sum);
return 0;
寻找活雷锋
int a[4][5];
int i,j;
int found=0;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{scanf("%d", &a[i][j]);
if(a[i][j]==16)
{found=1;}
}
}
if (found==1)
printf("yes");
else
printf("no");
return 0;
小明的爱
int main() {
char s[10001]; // 假设字符串长度不会超过10000
int l_count = 0, o_count = 0, v_count = 0, e_count = 0;
// 读取字符串
scanf("%s", s);
// 统计l, o, v, e的个数
for (int i = 0; s[i] != '\0'; i++) {
switch (s[i]) {
case 'l':
l_count++;
break;
case 'o':
o_count++;
break;
case 'v':
v_count++;
break;
case 'e':
e_count++;
break;
default:
// 不处理其他字符
break;
}
}
// 表白次数取决于四个字符中出现次数最少的字符
int min_count = l_count;
if (o_count < min_count) min_count = o_count;
if (v_count < min_count) min_count = v_count;
if (e_count < min_count) min_count = e_count;
// 输出结果
printf("%d\n", min_count);
判断字符的出现是否唯一
#include <stdio.h>
#include <string.h>
int areAllCharsUnique(char *s) {
int charSet[256] = {0}; // 初始化字符集数组为全0
int length = strlen(s);
// 遍历字符串,检查每个字符是否已经在字符集中出现过
for (int i = 0; i < length; i++) {
if (charSet[s[i]] != 0) { // 如果字符已经出现过,则返回1
return 1;
}
charSet[s[i]] = 1; // 标记字符已经出现过
}
// 字符串中的所有字符都唯一出现,返回0
return 0;
}
int main() {
char s[101]; // 假设字符串长度不超过100
scanf("%s", s); // 读取字符串
int result = areAllCharsUnique(s);
printf("%d\n", result);
return 0;
}
资产最多的老板
scanf("%d", &n);
scanf("%d", &m);
int accounts[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &accounts[i][j]);
}
}
int max_wealth = 0;
for (int i = 0; i < n; i++) {
int wealth = 0;
for (int j = 0; j < m; j++) {
wealth += accounts[i][j];
}
if (wealth > max_wealth) {
max_wealth = wealth;
}
}
printf("%d\n", max_wealth);
return 0;
低于平均值
#include <stdio.h>
#include <string.h>
int fun(int score[],int m, int below[])
{
int sum=0,num=0,i=0; float ave;
for(i=0;i<m;i++)
{sum+=score[i]; ave= (float) sum/m;} //sum 改成 (float) sum
for(i=0;i<m;i++)
{if(score[i]<ave) below[num++] = score[i]; } //num++ 改成 below[num++] = score[i]
return num;
}
int main()
{ int i,n,below[9];
int score[9];
for(i=0;i<9;i++)
scanf("%d",&score[i]);
n=fun(score,9,below);
for(i=0;i<n;i++)
printf("%d ",below[i]);
}
搬砖头
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
// 请在此添加代码
/********** Begin *********/
int fn(int n){
static int dp[10000] = {0}; // 假设n不会超过10000,初始化数组
if (n <= 1) {
return 1; // 如果只有0或1块砖头,只有一种搬运方法
}
if (dp[n] != 0) {
return dp[n]; // 如果已经计算过,直接返回结果
}
// 递归计算搬运n块砖头的方法数
dp[n] = fn(n - 1) + fn(n - 2);
return dp[n];
}
/********** End *********/
int main(){
int n;
scanf("%d",&n);
int numOfWays = fn(n);
printf("%d",numOfWays);
return 0;
}
孔融分梨
#include <stdio.h>
int Gcd(int a, int b);
int main(void)
{
int m, n, f;
scanf("%d,%d", &m, &n);
f = Gcd(m, n);
if (f != -1)
{
printf("%d/%d\n", m / f, n / f);
}
else
{
printf("Input error!\n");
}
return 0;
}
int Gcd(int a, int b)
{
if (a < 1 || b < 1 || a > 10000 || b > 10000) {//
return -1;//
} // 检查输入是否在有效范围内
int r;
// 使用辗转相除法计算最大公约数
while ((r = a % b) != 0) {//
a = b;//
b = r;//
}
return b;
}
兔子繁殖问题
#include <stdio.h>
int fib(int n);
int main(void)
{
int i,n;
scanf("%d",&n);
for (i=1;i<=n;i++) //求解20个月
{
if((i-1)%4==0) printf("\n");
printf("%5d只兔子",fib(i));
}
printf ("\n");
return 0;
}
int fib(int n) //递归函数
{
if (n <= 1) {
return n;
}
int prevPrev = 0, prev = 1, current;
for (int i = 2; i <= n; i++) {
current = prevPrev + prev;
prevPrev = prev;
prev = current;
}
return prev;
}
计算题练习模拟
#include <stdio.h>
int Add(int a, int b)
{
return a+b; //这里加一句
}
void Print(int flag, int chance) //void Print部分不改
{
if (flag)
printf("Right!\n");
else if(chance < 3)
printf("Not correct. Try again!\n");
else
printf("Not correct. You have tried three times!\nTest over!\n");
}
int main()
{
int a, b, answer, chance;
printf("Input a, b:\n");
scanf("%d,%d", &a, &b);
chance = 0;
do //do部分要改
{
printf("%d+%d=", a, b); //输出加法格式
scanf("%d", &answer); // 获取用户输入的答案
// 判断用户答案是否正确
if (answer == Add(a,b)) {
Print(1, chance); // 如果正确,输出"Right!"
break;
} else {
chance++;
Print(0, chance); // 如果错误,输出错误信息
}
} while (chance < 3); // 只有当尝试次数少于3次时才继续
return 0;
}
读入学生信息并统计
#include <stdio.h>
#define ARR_SIZE 30
int ReadScore(long num[], float score[]);
int main(void)
{
int n;
float score[ARR_SIZE];
long num[ARR_SIZE];
printf("Please enter num and score until score<0:\n");
n = ReadScore(num, score);
printf("Total students:%d\n", n);
return 0;
}
//函数功能:从键盘输入一个班学生某门课的成绩及其学号
//当输入成绩为负值时,输入结束,函数返回学生总数
int ReadScore(long num[], float score[])
{
int count = 0;
while (count < ARR_SIZE) {
scanf("%ld %f", &num[count], &score[count]);
if (score[count] < 0) {
break; // 结束输入
}
count++;
}
return count;
输入整数数组 arr ,找出其中最小的 k 个数
#include<stdio.h>
void sort(int arr[], int n) {
int i, j, min_idx, temp;
// 外层循环遍历整个数组
for (i = 0; i < n - 1; i++) {
// 假设当前索引的元素是最小的
min_idx = i;
// 内层循环找到真正的最小元素
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// 将找到的最小元素与当前位置的元素交换
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
int main()
{
int n,k;
int arr[100],i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
scanf("%d",&k);
sort(arr,n);
for (i=0;i<k;i++) //打印最小的K个数
printf("%d ",arr[i]);
return 0;