根据给定文件的信息,我们可以从中提炼出四个C语言的经典编程示例,并对每个示例进行详细解析。 ### 示例1:生成三个不同的数字组合 #### 问题描述 编写一个程序,生成并打印所有由1到4之间的不同数字组成的三位数。 #### 解析 此程序通过三层嵌套循环来实现。外层循环变量`i`、中间层循环变量`j`以及内层循环变量`k`分别代表三位数中的百位、十位和个位数字。为了确保生成的三位数中各个位上的数字互不相同,程序在每次循环时都检查`i`、`j`和`k`是否相等。如果它们各不相同,则将这些数字打印出来。 #### 代码分析 ```c main() { int i, j, k; printf("\n"); for (i = 1; i < 5; i++) // 循环1到4 for (j = 1; j < 5; j++) for (k = 1; k < 5; k++) { if (i != k && i != j && j != k) { // 确保i、j、k不同 printf("%d,%d,%d\n", i, j, k); } } } ``` ### 示例2:计算员工奖金 #### 问题描述 根据员工工资的不同区间,计算应得的奖金。工资区间和对应的奖金百分比如下: - 工资≤100000元时,奖金为工资的10% - 100000 < 工资 ≤ 200000元时,奖金为10000元加上超过100000部分的7.5% - 200000 < 工资 ≤ 400000元时,奖金为175000元加上超过200000部分的5% - 400000 < 工资 ≤ 600000元时,奖金为295000元加上超过400000部分的3% - 600000 < 工资 ≤ 1000000元时,奖金为395000元加上超过600000部分的1.5% - 工资 > 1000000元时,奖金为490000元加上超过1000000部分的1% #### 解析 此程序首先通过`scanf`函数获取员工的工资。然后使用`if-else`语句结构判断工资属于哪个区间,并据此计算出奖金。为了避免重复计算,程序在每个区间内都考虑了上一区间的累计奖金。 #### 代码分析 ```c main() { long int i; int bonus1 = 100000 * 0.1, bonus2, bonus4, bonus6, bonus10, bonus; scanf("%ld", &i); bonus2 = bonus1 + 100000 * 0.75; bonus4 = bonus2 + 200000 * 0.05; bonus6 = bonus4 + 200000 * 0.03; bonus10 = bonus6 + 400000 * 0.015; if (i <= 100000) { bonus = i * 0.1; } else if (i <= 200000) { bonus = bonus1 + (i - 100000) * 0.075; } else if (i <= 400000) { bonus = bonus2 + (i - 200000) * 0.05; } else if (i <= 600000) { bonus = bonus4 + (i - 400000) * 0.03; } else if (i <= 1000000) { bonus = bonus6 + (i - 600000) * 0.015; } else { bonus = bonus10 + (i - 1000000) * 0.01; } printf("bonus=%d", bonus); } ``` ### 示例3:寻找两个平方数之差等于168的整数 #### 问题描述 寻找一个100至100000范围内的整数`i`,使得`i+100`和`i+268`分别是两个整数的平方。 #### 解析 程序采用了一个循环,遍历100到100000之间的所有整数。对于每一个`i`,它计算出`i+100`和`i+268`的平方根,并检查这两个平方根是否都是整数。如果是,则打印出该`i`值。 #### 代码分析 ```c #include <math.h> main() { long int i, x, y; for (i = 1; i < 100000; i++) { x = sqrt(i + 100); // x为i+100的平方根 y = sqrt(i + 268); // y为i+268的平方根 if (x * x == i + 100 && y * y == i + 268) { // 检查是否为完全平方数 printf("\n%ld\n", i); } } } ``` ### 示例4:计算日期是当年的第几天 #### 问题描述 输入年份、月份和日期,计算这个日期是一年的第几天。 #### 解析 程序使用`switch`语句来根据月份查找截止到该月前一年中已经过去的天数总和,并将其赋值给`sum`。接着将用户输入的日数加到`sum`中。此外,程序还检查输入的年份是否为闰年,如果是闰年并且月份大于2,则需要额外加上一天。 #### 代码分析 ```c main() { int day, month, year, sum, leap; printf("\nplease input year, month, day\n"); scanf("%d,%d,%d", &year, &month, &day); switch (month) { case 1: sum = 0; break; case 2: sum = 31; break; case 3: sum = 59; break; case 4: sum = 90; break; case 5: sum = 120; break; case 6: sum = 151; break; case 7: sum = 181; break; case 8: sum = 212; break; case 9: sum = 243; break; case 10: sum = 273; break; case 11: sum = 304; break; case 12: sum = 334; break; default: printf("data error"); break; } sum += day; // 加上当前月份的日数 if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { // 判断是否为闰年 leap = 1; } else { leap = 0; } if (leap == 1 && month > 2) { // 如果是闰年且月份大于2月 sum++; // 需要额外加一天 } printf("It is the %dth day.", sum); } ``` 以上四个示例涵盖了C语言中的一些基础概念和技术,包括循环、条件判断、数学函数的应用等,对于初学者来说是非常好的学习材料。












题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
}
==============================================================
【程序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,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
==============================================================
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x为加上100后开方后的结果*/
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
剩余6页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机二级-计算机二级资源
- 基于STM32F407 单片机处理器设计 - PWM DAC实验软件例程源码.zip
- 基于STM32F407 单片机处理器设计 - 内部温度传感器实验软件例程源码.zip
- 基于STM32F407 单片机处理器设计 - 485实验软件例程源码.zip
- 基于STM32F407 单片机处理器设计 - SPI实验软件例程源码.zip
- 基于STM32F407 单片机处理器设计 - 触摸屏实验软件例程源码.zip
- 基于52单片机的甲醛检测仪课程设计报告书.doc
- 关于执行跨境电子商务零售进口新的监管要求有关事宜的通知.pdf
- 软件开发项目验收、交付控制程序.doc
- 中科美伦HIS软件介绍2011..ppt
- 网络营销策划书格式.doc
- 基因工程的原理及技术终稿.pptx
- 基于51单片机的智能门铃设计开题报告.doc
- 嵌入式系统原理与设计试卷及答案(6页).doc
- 计算机应用技术专业大学生职业生涯规划书.doc
- 网络处理器发展及其应用.ppt


