C语言经典100题(手把手 编程)
每日更新若干题代码
//P1程序代码
#include
#pragma warning(disable : 4996)
int main()
/*我的这个思想是边判断,变输出,思想就是每个位都能输出1234四个数,但是必须每位不一样,在进行位赋值之后判断是否一样,如果一样,那么使用continue过掉这个一样的数值,进行自加那么久两位就不会一样了。*/
/*老师的思想更简单,就是所有赋值完之后再判断每个位是否一样,这样就等于将所有数据进行判断筛选出每个位不一样的进行输出,也是另一种思路,而且老师的这个长远看来适合复杂的数据*/
/*总结:编程模块化很重要,一个地方能处理的话就不要两个地方去处理。*/
int g, s, b;//分别是百位十位个位
int T;//总数
for (g = 1; g < 5; g++)
for (s = 1; s
if (s == g)
continue;
for ( b = 1; b < 5 ; b++)
if (b == g || b == s)
continue;
T = g * 100 + s * 10 + b * 1;
printf("%d\n", T);
return 0;
///////////////////////////////////////////////////////////////////////
//P2程序代码
#include
#pragma warning(disable : 4996)
void main()
//***************************定义***********************************
typedef long float lf; // 定义了一个long float类型的别名lf
lf Percent
10000
, Rank
10000
; //分红比例,档位数值
lf benificial, bonus = 0.00; //利润,分红
int rank = 0, times; //第几个档位。需要几档
lf range
10000
; //各个档位区间范围
//*****************************档位设置******************************
printf("请将公司利润分为若干档位,不同档位同时设置不同分红比例\n");
printf("请设置若干个档位:");
scanf("%d", ×); // 输入档位数
if (times > 10000)
printf("请将档位控制在二到一万以内!请重新运行程序!");
exit(1);
printf("*********************************************\n");
printf("正在进行档位设置:\n");
Rank
= 0;
// 设置各个档位的数值和分红比例
if (times > 1)
for (size_t i = 1; i < times; i++)
printf("第%d个档位的数值为:%lf至", i, Rank
i - 1
);
scanf("%lf", &Rank
); // 输入档位的数值
printf("第%d档位的范围是大于%lf\n", times, Rank
times - 1
);
for (size_t k = 0; k < times; k++)
printf("第%d个档位的分红比例为:", k + 1);
scanf("%lf", &Percent
); // 输入档位的分红比例
Percent
= (Percent
/ 100.0); // 将分红比例转换为小数形式
else
printf("请输入合适的档位!");
//***********************************主程序********************************
while (1)
printf("请输入本月公司利润(输入负数或0可退出):\n");
scanf("%lf", &benificial); // 输入本月公司利润
if (benificial Rank
rank++;
else
printf("当前利润值有%d档", t + 1);
// 计算各个档位区间的长度
for (size_t u = 0; u < rank - 1; u++)
range
= Rank
u + 1
- Rank
// 计算分红金额
for (size_t j = 0; j < times; j++)
bonus = (bonus + (range
* Percent
));
if (j == rank - 2)
bonus = (bonus + (benificial - Rank
rank - 1
) * Percent
rank - 1
);
break;
else
printf("应当分红:%f\n", bonus);
bonus = 0;
rank = 0;
return 0;
//////////////////////////////////////////////////////////////////////
//第三天习题的作业代码 ,有不理解可以私信
#include
/*
整体思路,先由x做等式联立第一第二行等式。计算出m与n的关系。再由第一行平方数变量n进行穷举,
得出对应x,再将x带入等式二进行计算,符合条件即为可能答案
*/
int main()
int arr_m
169
, arr_n
169
; // 定义数组存储m和n的值
int times = 0; // 计数器
int Multi_m, Multi_n; // 存储m和n的临时变量
float num; // 存储结果的变量
// 遍历m和n的取值
for (size_t m = 0; m < 169; m++)
for (size_t n = 0; n < 169; n++)
// 判断 m+n 与 m-n 的乘积是否等于 168
if (((m + n) * (m - n)) == 168)
printf("m与n的值分别为:%d,%d\n", m, n);
arr_m
times
= m; // 将m存入数组
arr_n
times
= n; // 将n存入数组
times++; // 计数器加一
else
; // 不满足条件时不进行额外操作
// 遍历符合条件的m和n的组合
for (size_t i = 0; i < times; i++)
Multi_n = arr_n
; // 取出n的值
Multi_m = arr_m
; // 取出m的值
num = ((Multi_n * Multi_n) - 100); // 计算方程式的结果
if ((num + 100 + 168) == (Multi_m * Multi_m))
printf("方程式的结果为%f\n", num); // 输出符合条件的结果
else
; // 不满足条件时不进行额外操作
return 0;
///////////////////////////////////////////////////////////////////
P4代码示例:
#include
#pragma warning(disable : 4996)
int calculateDays(int year, int month, int day)
int sum = 0;
int isLeapYear = (((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0));
int arr_day
= { 31, isLeapYear ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
for (int i = 1; i < month; i++) {
sum += arr_day
i - 1
return sum + day;
int main()
int year, month, day;
while (1) {
printf("请输入年月日以计算多少天(以逗号进行分割):");
scanf("%d,%d,%d", &year, &month, &day);
// 验证日期的有效性
if (year < 0 || month < 1 || month > 12 || day < 1 || day > 31) {
printf("请输入正确的日期!\n");
continue;
int totalDays = calculateDays(year, month, day);
if (totalDays > 0) {
printf("截至%d年%d月%d日共有%d天\n", year, month, day, totalDays);
else {
printf("计算过程中发生错误,请重新输入日期!\n");
char choice;
printf("是否继续计算?(Y/N): ");
scanf(" %c", &choice);
if (choice == 'N' || choice == 'n') {
break;
system("cls");
return 0;
/////////////////////////////////////////////////////////////////
P5程序代码:
#include
#pragma warning(disable : 4996)
int main()
int x, y, z;
int minValue, midValue, maxValue;
printf("请输入三个数字,以空格分隔:");
scanf("%d %d %d", &x, &y, &z);
minValue = x;
midValue = y;
maxValue = z;
// 交换最小值和中间值
if (minValue > midValue) {
int temp = minValue;
minValue = midValue;
midValue = temp;
// 交换中间值和最大值
if (midValue > maxValue) {
int temp = midValue;
midValue = maxValue;
maxValue = temp;
// 再次检查最小值和中间值的顺序
if (minValue > midValue) {
int temp = minValue;
minValue = midValue;
midValue = temp;
printf("数值排序是:%d, %d, %d", minValue, midValue, maxValue);
return 0;
/////////////////////////////////////////////////////////////////
P6代码:
#include
int main()
// 打印菱形的上半部分
for (size_t i = 0; i < 5; i++)
for (size_t j = i; j < 5; j++)
printf(" "); // 打印空格
if (i == 0 && j == 4)
printf("* * * * * * "); // 在第一行最后一个位置打印星号序列
printf("*\n"); // 每行结束打印一个星号和换行符
// 打印菱形的下半部分
for (size_t i = 0; i < 6; i++)
for (size_t j = i; j > 0; j--)
printf(" "); // 打印空格
if (i == 5 && j == 1)
printf("* * * * * * "); // 在最后一行第一个位置打印星号序列
printf("*\n"); // 每行结束打印一个星号和换行符
return 0;
///////////////////////////////////////////////////////////
P8九九乘法表
#include
int main()
int multi;
for (size_t i = 1; i < 10; i++)
for (size_t j = 1; j < 10; j++)
multi = i * j;
printf("%d*%d=%d\n", i, j,multi);
return 0;
///////////////////////////////////////////////////////////////////////
P11兔子生崽
#include
/*程序首先定义了一个整数变量month表示月份,初始化为40,表示计算40个月的兔子数量。
然后定义一个长度为40的整型数组arrnum,初始值为{1,1},表示第一个月和第二个月兔子的数量。
接下来使用for循环遍历每一个月,利用斐波那契数列的规律计算兔子的数量。在每个循环中,
首先判断当前的月份是否小于2,若是则输出对应月份的兔子数量,并将sign加1。然后,在第三个月及之后的月份,
通过上两个月兔子的数量相加得到当前月份的兔子数量,并将结果存入arrnum数组中,同时输出对应月份的兔子数量。
最后,程序返回0,表示程序正常结束。*/
int main()
int rabbits;
int month=40;
int arrnum
40
= { 1,1 };
int sign=0;
for (size_t i = 0; i < month; i++)
if (sign < 2)
printf("第%d个月的兔子数量是:%d\n", i + 1, arrnum
);
sign++;
if (i>=2)
rabbits = (arrnum
i - 1
+ arrnum
i - 2
);
arrnum
= rabbits;
printf("第%d个月的兔子数量是:%d\n", i+1,rabbits);
return 0;
/////////////////////////////////////////////////////////////
P9判断素数
#include
#pragma warning(disable : 4996)
int main()
