C语言基础习题讲解

文章提供了四个C语言编程习题,涉及运算符使用、数值比较、循环结构的应用。习题包括:提取三位数的个、十、百位;计算正方形与圆的面积差;找出三个数中的最大值;以及根据答题数量计算得分的规则。此外,还有一道关于比较走路和骑车速度的问题,以及求平均年龄和等比序列求和的题目。
摘要由CSDN通过智能技术生成

C语言基础习题讲解


在这里插入图片描述

运算符

1. 设计一个程序, 输入三位数a, 分别输出个,十,百位.
(0<a<1000)

样例输入:
251
样例输出:
2
5
1

#include <stdio.h>
int main()
{
	int input = 0;
	int x = 0;
	int y = 0;
	int z = 0;
	scanf("%d", &input);
	x = (input%10) % 100;
	y = (input / 10)%10;
	z = input / 100;
	printf("个位:%d\n", x);
	printf("十位:%d\n", y);
	printf("百位:%d\n", z);
	return 0;
}

2. 设计一个程序, 输入整数l, 求边长为l的正方形面积, 比直径为l的圆形面积大多少.
(0<l<1000, PI取3.14, 输出结果保留两位小数)

样例输入:
3
样例输出:
1.93

#include <stdio.h>
int main()
{
	float l = 0.0;
	scanf("%f", &l);
	//求正方形面积
	float sq = 0.0;
	sq = l * l; 
	// 求其圆面积
	float pi = 3.14;
	float s = 0.0;
	s = pi * ((l/2) * (l/2));
	// 求其差值
	float cha = 0.0;
	cha = sq - s;
	printf("%.2f\n", cha);
	return 0;
}

判断

1. 设计一个程序, 输入a,b,c三个整数, 输出最大的数.
(MIN_INT < a,b,c < MAX_INT)

样例输入:
1 3 2
样例输出:
3

#include <stdio.h>
int main()
{
	// 输入三个整数,输出其最大值
	int a = 0, b = 0, c = 0;
	scanf("%d %d %d", &a, &b, &c);
	int z = 0;
	z = ((a >= b ? a : b) > c) ? (a >= b ? a : b) : c;
	printf("%d", z);
	return 0;
}

2. 打分系统
在某次考试时, 学生的提交成绩惨不忍睹
学长为了让大家及格可谓煞费苦心, 他苦思三天三夜, 终于想出了一套打分方案:
正确数量在0~10时, 每题6分
正确数量在11~20时, 第11~20题, 每题2分
正确数量在21~40时, 第21~40题, 每题1分
但因为需要计分的作业太多了, 希望你能帮帮云海学长, 实现该计分程序.
输入做对的题目数量n, 输出得分.
(0<=n<=40)

样例输入:
23
样例输出:
83

#include <stdio.h>
int main()
{
	int count = 0, score = 0;
	scanf("%d", &count);
	if (count <= 10)
	{
		score = count * 6;
		printf("分数为:%d", score);
	}
	else if (count <= 20)
	{
		score = 10 * 6 + (count - 10) * 2;
		printf("分数为:%d", score);
	}
	else if (count <= 40)
	{
		score = 10 * 6 + (count - 10) * 2 + (count - 20) * 1;
		printf("分数为:%d", score);
	}
	else
	{
		printf("请输入的值范围在0~40之内");
	}
	return 0;
}

3. 程序员学长上班
程序员学长在上班途中, 可以选择走路和骑车两种方式
但他不清楚哪种方式比较快, 因为骑车需要找车, 开锁, 停车 需要耽搁很多时间.
设找到自行车, 开锁, 骑上自行车需要花27秒, 停车需要花23秒
步行每秒1.2米, 骑车每秒3.0米
给出程序员学长距离公司的距离, 请问是骑车快还是走路快.
输入一个整数n, 表示到公司的距离
如果骑车快, 输出"骑车"
如果走路快, 输出"走路"
如果一样快, 输出"一样快"

样例输入:
60
样例输出:
走路

#include <stdio.h>
int main()
{
	int n = 0;// n为距离
	scanf("%d", &n);
	// 骑车
	float bike = 0;
	float v1 = 3.0;
	float t1 = 0.0;
	t1 = n / 3.0 + 27 + 23;
	// 走路
	float walk = 0.0;
	float v2 = 1.2;
	float t2 = 0.0;
	t2 = n / 1.2;
	// 判断
	if (t1 > t2)
	{
		printf("走路");
	}
	else if (t1 < t2)
	{
		printf("骑车");
	}
	else
	{
		printf("一样快");
	}
	return 0;
}

简单循环

1. 求平均年龄
学校有学长若干名, 给出每个学长的年龄, 求该学校学长的平均年龄, 保留小数点后两位
输入:
第一行: 整数n(1<n<100), 表示人数
之后n行: 每行一个整数a(15<a<55), 表示第n个学长的年龄
输出:
一个浮点数, 保留两位小数. 表示01星球学长平均年龄

样例输入:
3
18
18
17
样例输出:
17.67

#include <stdio.h>
int main()
{
	int age = 0;
	int n = 0;
	float sum = 0;
	int i = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		scanf("%d\n", &age);
		sum += age;
	}
	float avg = 0.0;
	avg = sum / n;
	printf("%.2f",avg);
	return 0;
}

2. 张三上课时走神, 在作业上写了很多222222222222222 结果被老师发现了
张三连忙掩饰说自己在算2+22+222+2222+22222的和,
老师很欣慰, 问他算出来没有
张三很困扰, 因为草稿纸写满了2 已经不够用了
大家快帮帮张三吧
设计一个程序, 输入n和a 求Sn
Sn = a + aa + aaa + … + aaaaa(n个a)

输入: 两个整数n, a
(1<n<9), (1<=a<=9)
输出:
Sn的值
样例输入:
5 2
样例输出:
24690
样例解析: Sn = 2 + 22 + 222 + 2222 + 22222 = 24690

#include <stdio.h>
#include <math.h>
int main()
{
	int a = 0, n = 0;
	scanf("%d %d", &n, &a);
	int i = 0;
	int Sn = 0;
	int mid = a;
	for (i = 1; i <= n; i++)
	{
		if (i == 1)
		{
			Sn = a;
		}
		else
		{
			mid = a + mid * pow(10, 1);
			Sn += mid;
		}
	}
	printf("%d", Sn);
	return 0;
}

3. super家养了一对刚出生的兔子, 兔子出生第2月后每月都会生一对小兔子, 小兔子出生后同样第2月后也
会每月生一对兔子
super想知道 如果兔子不死 n月后家里会有多少对兔子
设计一个程序: 输入n, 输出兔子数量
(2<n<30)

样例输入: 7
样例输出:13
样例输入: 12
样例输出: 144

// 数兔子
void Demo33() {
//--变量声明--
// 用户输入值 月数
int n;
// 用于存储当月 以及前1,2个月的兔子数
int m1 = 1, m2 = 1, m3 = 0;;
//--接收输入--
scanf_s("%d", &n);
//--数据处理--
//前两个月不生兔子
// 每个月的兔子数量 = 上一个月兔子数 + 上上一个月兔子数
n -= 2;
while (n--) {
m3 = m1 + m2;
m1 = m2;
m2 = m3;
}
//--输出--
printf("%d", m3);
}

4. 程序员学长为了探究神秘的物理现象, 从高楼抛下一个弹球 但由于高空抛物被警察抓了, 请各位小伙伴完
成他未完成的心愿

小球从某一高度落下,每次落地后反跳回原来高度的一半,再落下。
输入弹球的初始高度M和回弹次数N, 输出弹球第N次回弹后的高度 和达到该高度后所经过的距离(保留两位小
数)
(0<M<1000, 0<N<50)

样例输入
1000 5
样例输出
31.25
2906.25

#include <stdio.h>
int main()
{
	int i = 0,  n = 0;
	double h = 0.0, H = 0.0,m=0.0 ;
	scanf("%lf %d", &m, &n);
	for (i = 0; i < n; i++)
	{
        m = m / 2;
		H += m*2;
	}
	H = H + 1000 - m;
	printf("%.2f\n%.2f", m, H);
	return 0;
}
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汴京城下君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值