C语言经典习题100例(一)1-5
时间:2022-07-22
本文章向大家介绍C语言经典习题100例(一)1-5,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
习题1
有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
实现思路: 显然,这个题目需要用到循环,并且是循环嵌套,先列出所有可能的组合,再去掉重复的组合即可。 代码如下:
#include <stdio.h>
int main(){
int i, j, k, n = 0;
for(i = 1; i < 5; i++){
for(j = 1; j < 5; j++){
for(k = 1; k < 5; k++){
if(i != j && i != k && j != k){
n++;
printf("%d%d%d", i, j, k);
if(n % 5){
printf(" ");
}
else{
printf("n");
}
}
}
}
}
printf("nnThere are %d numbers.n", n);
return 0;
}
打印:
123 124 132 134 142
143 213 214 231 234
241 243 312 314 321
324 341 342 412 413
421 423 431 432
There are 24 numbers.
习题2
企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10% ;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元的部分,可可提成 7.5% ; 20 万到 40 万之间时,高于 20 万元的部分,可提成 5% ; 40 万到 60 万之间时高于 40 万元的部分,可提成 3% ; 60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5% ,高于 100 万元时,超过 100 万元的部分按 1% 提成,从键盘输入当月利润 I ,求应发放奖金总数?
实现思路: 该题需要用到if条件判断或switch语句。
方式一——if语句:
#include <stdio.h>
int main(){
long profit, bonus;
float ratio;
printf("Please input the profit:");
scanf("%ld", &profit);
if(profit > 0 && profit <= 100000){
bonus = profit * 0.1;
}
else if(profit > 100000 && profit < 200000){
bonus = 100000 * 0.1 + (profit - 100000) * 0.075;
}
else if(profit >= 200000 && profit < 400000){
bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05;
}
else if(profit >= 400000 && profit < 600000){
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03;
}
else if(profit >= 600000 && profit < 1000000){
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015;
}
else{
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01;
};
printf("The bonus is %ld", bonus);
return 0;
}
打印:
Please input the profit:1234567
The bonus is 41845
方式二——switch语句:
#include <stdio.h>
int main(){
long profit, bonus = 0;
printf("Please input the profit:");
scanf("%ld", &profit);
int pr = profit / 100000;
if(pr > 10){
pr = 10;
}
switch(pr){
case 0:
bonus = profit * 0.1;break;
case 1:
bonus = 100000 * 0.1 + (profit - 100000) * 0.075;break;
case 2:
case 3:
bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05;break;
case 4:
case 5:
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03;
case 6:
case 7:
case 8:
case 9:
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015;break;
case 10:
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01;break;
default:
printf("Input Error!!n");break;
}
printf("The bonus is %ld", bonus);
return 0;
}
效果与方式一相同。
习题3
一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?
实现思路: 方式一——使用简单循环:
#include <stdio.h>
#include <math.h>
int main(){
int i;
for(i = 0; i <= 100000; i++){
int root1 = sqrt(i + 100), root2 = sqrt(i + 268);
if(pow(root1, 2) == (i + 100) && pow(root2, 2) == (i + 268)){
printf("%8d", i);
}
}
printf("n");
return 0;
}
打印:
21 261 1581
方式二: 假设该数为 x。
- 则:x + 100 = n2, x + 100 + 168 = m2;
- 计算等式:m2 - n2 = (m + n)(m - n) = 168;
- 设m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数;
- 可得m = (i + j) / 2, n = (i - j) / 2,因为m、n为整数,所以i 和 j 要么都是偶数、要么都是奇数;
- 从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数;
- 由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1;
- 接下来将 i 的所有数字循环计算即可。
#include <stdio.h>
int main (void)
{
int i, j, n, x;
for (i = 1; i < 168 / 2 + 1; i++){
if (168 % i == 0){
j = 168 / i;
if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0){
n = (i - j) / 2;
x = n * n - 100;
printf ("%8d", x);
}
}
}
printf("n");
return 0;
}
打印:
-99 21 261 1581
显然,此时比方式一多了一个数-99,只要在方式一中i的初始值减小为-100即可。
习题4
输入某年某月某日,判断这一天是这一年的第几天?
实现思路: 假设月份为n,则天数为前n-1个月的天数加第n月的天数,如果n大于3时,要考虑是否为闰年,如果为闰年,则2月还要多加1天。
#include <stdio.h>
int main (void)
{
int year, month, day, days, leap = 0;
printf("Please input the date(YYYY_MM-DD):");
scanf("%d-%d-%d", &year, &month, &day);
switch(month){
case 1:
days = 0;break;
case 2:
days = 31;break;
case 3:
days = 59;break;
case 4:
days = 90;break;
case 5:
days = 120;break;
case 6:
days = 151;break;
case 7:
days = 181;break;
case 8:
days = 212;break;
case 9:
days = 243;break;
case 10:
days = 273;break;
case 11:
days = 304;break;
case 12:
days = 334;break;
default:
printf("Input Error");break;
}
days += day;
if(year % 4 ==0 && year % 100 != 0 || year % 400 == 0){
leap = 1;
}
if(leap && month > 2){
days += 1;
}
printf("Days = %dn", days);
return 0;
}
打印:
Please input the date(YYYY_MM-DD):2020-05-26
Days = 147
习题5
输入三个整数 x、y、z ,请把这三个数由小到大输出。
实现思路: 通过两两比较找出三者中最大和最小的数。
#include <stdio.h>
int main (void)
{
int x, y, z, temp;
printf("Please input 3 numbers:n");
scanf("%d %d %d", &x, &y, &z);
if(x > y){
temp = x;
x = y;
y = temp;
}
if(x > z){
temp = x;
x = z;
z = temp;
}
if(y > z){
temp = y;
y = z;
z = temp;
}
printf("Small to big: %d %d %d", x, y, z);
return 0;
}
打印:
Please input 3 numbers:
12 34 23
Small to big: 12 23 34
- JS代码和网页的混用
- Flash/Flex学习笔记(29):MovieClip帧/时间轴的控制
- Oracle日常运维操作总结-数据库的启动和关闭
- Python中Json解析的坑
- Flash/Flex学习笔记(28):动态文本的滚动控制
- CentOS7下Elasticsearch集群部署记录
- Flash/Flex学习笔记(27):摄像头/麦克风的视频/音量指示器
- Flash/Flex学习笔记(26):AS3自定义右键菜单
- Python27中Json对中文的处理
- Python在VSCode中进入交互界面调试
- CentOS7下单机部署RabbltMQ环境的操作记录
- Flash/Flex学习笔记(24):粒子效果
- 针对业务日志的监控报警设置
- 对广晟有色的数据分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Saltstack_使用指南18_API
- Centos7安装单机版Redis
- Vue3 Composition-Api + TypeScript + 新型状态管理模式探索。
- Saltstack_实战指南01_系统规划
- Saltstack_实战指南02_各主机Pillar信息指定
- TypeScript基础看腻了?进阶实现智能类型推导的简化版Vuex,手把手带你实现。
- Linux下使用 github+hexo 搭建个人博客01-hexo搭建
- Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages
- Linux下使用 github+hexo 搭建个人博客03-hexo配置优化
- 接口测试框架实战(五) | 测试数据的数据驱动
- Linux下使用 github+hexo 搭建个人博客04-next主题优化
- Linux下使用 github+hexo 搭建个人博客05-next主题接入评论系统 来必力畅言Valine获取 livere_uid在Next主题配置浏览器访问数据
- Linux下使用 github+hexo 搭建个人博客06-next主题接入数据统计
- egg.js 动态转发代理
- Linux下使用 github+hexo 搭建个人博客07-next主题接入搜索和站点管理