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