全篇都是很多书上的源码和一些自己模仿的代码
- 第一个程序:百兔问题
/*
2021年1月17日19:10:07
百兔问题:公鸡一只值钱五,母鸡一只值钱三,小鸡三只值一块,
用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, j, k;
for (i=0; i<=20; i++) // 公鸡只数
for (j=0; j<=33; j++) // 母鸡只数
{
k = 100-i-j; // 小鸡只数
if (5 * i + 3 * j + k / 3.0 == 100)
printf("公鸡有%d只 母鸡有%d只 小鸡有%d只\n", i, j, k);
}
return 0;
}
/*
-------------------------------------------------------------------
在VC++6.0中运行结果为:
公鸡有0只 母鸡有25只 小鸡有75只
公鸡有4只 母鸡有18只 小鸡有78只
公鸡有8只 母鸡有11只 小鸡有81只
公鸡有12只 母鸡有4只 小鸡有84只
-------------------------------------------------------------------
*/
- 第二个程序:判断大于2的整数是否为素数
/*
2021年1月19日12:19:02
判断大于2的数是否为素数
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, m, flag;
flag = 1; // 标志性变量 用于判断 m 是否为素数
printf("请输入一个大于2的整数:");
scanf("%d", &m);
for (i=2; i<m; i++)
{
if (m % i == 0)
{
flag = 0;
break;
}
}
// 1表示是素数 ,0表示不是素数
if (flag)
printf("%d 该数是素数!\n", m);
else
printf("%d 该数不是素数!\n", m);
return 0;
}
/*
--------------------------------------------
在VC++6.0中运行结果为:
请输入一个大于2的整数:32
32 该数不是素数!
请输入一个大于2的整数:5
5 该数是素数!
--------------------------------------------
*/
- 第三个程序:100-200之间不能被3和7同时整除的数
/*
2021年1月19日12:38:51
100-200之间不能被3和7同时整除的数
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, m;
for (i=100; i<200; i++)
{
if ((i % 3 == 0) && (i % 7 == 0))
{
continue;
}
printf("%d\t", i);
m++;
if (m % 10 == 0)
{
printf("\n");
}
}
return 0;
}
/*
-----------------------------------------------------------------------------
在VC++6.0中运行结果为:
100 101 102 103 104 106 107 108 109 110
111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 127 128 129 130 131
132 133 134 135 136 137 138 139 140 141
142 143 144 145 146 148 149 150 151 152
153 154 155 156 157 158 159 160 161 162
163 164 165 166 167 169 170 171 172 173
174 175 176 177 178 179 180 181 182 183
184 185 186 187 188 190 191 192 193 194
195 196 197 198 199
------------------------------------------------------------------------------
*/
- 第四个程序:简易计算器
/*
2021年1月19日13:48:49
简易计算器
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
char command_begin; // 开始字符 Enter
double first_number; // 第一个数字
char character; // +-*/
double second_number; // 第二个数字
double value; // 运算结果
printf("简易计算器\n");
printf("在'>'后按照提示进行相关操作:\n");
printf("是否开始?(Y/N)>");
scanf("%c", &command_begin); // 输入Y or N
while ((command_begin == 'y') || (command_begin == 'Y'))
{
/*当接受到y或者Y时 开始执行计算器*/
printf("请输入一个简单的算式:");
scanf("%lf %c %lf", &first_number, &character, &second_number);
switch (character)
{
case '+':
value = first_number + second_number;
printf("等于%lf\n", value);
break;
case '-':
value = first_number - second_number;
printf("等于%lf\n", value);
break;
case '*':
value = first_number * second_number;
printf("等于%lf\n", value);
break;
case '/':
while (second_number == 0)
{
printf("由于除数为0 不符合算数运算请重新输入:\n");
scanf("%lf %c %lf", &first_number, &character, &second_number);
}
value = first_number / second_number;
printf("等于%lf\n", value);
break;
default:
printf("非法输入!\n");
}
printf("是否继续运算(Y/N)>");
fflush(stdin); // 清空缓冲区
scanf("%c", &command_begin);
}
printf("程序退出!\n");
return 0;
}
/*
----------------------------------------------------
在VC++6.0中运行结果为:
简易计算器
在'>'后按照提示进行相关操作:
是否开始?(Y/N)>y
请输入一个简单的算式:9+4
等于13.000000
是否继续运算(Y/N)>y
请输入一个简单的算式:6/2
等于3.000000
是否继续运算(Y/N)>y
请输入一个简单的算式:6/0
由于除数为0 不符合算数运算请重新输入!
6/4
等于1.500000
是否继续运算(Y/N)>y
请输入一个简单的算式:9*5.2
等于46.800000
是否继续运算(Y/N)>y
请输入一个简单的算式:96.52-43.86
等于52.660000
是否继续运算(Y/N)>n
程序退出!
----------------------------------------------------
*/
- 第五个程序:完数
/*
2021年1月19日15:23:43
1000以内所有的完数:6 = 1 + 2 + 3
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, j, sum;
for (i=1; i<=1000; i++)
{
sum = 0;
for (j=1; j<i; j++)
{
if (i % j == 0)
{
sum += j;
}
}
if (sum == i)
printf("%d 是完数\n", i);
}
return 0;
}
/*
-----------------------------------------
在VC++6.0中运行结果为:
6 是完数
28 是完数
496 是完数
-----------------------------------------
*/
- 第六个程序:一维数组的和及平均值
/*
2021年1月20日12:51:07
一维数组的和及平均值
《C语言从入门到精通》
*/
# include <stdio.h>
# define MAX 5 // 数组范围0-4
int main(void)
{
int i;
int code[MAX];
int sum = 0;
for (i=0; i<MAX; i++) // 0-4
{
printf("请输入一个数:");
scanf("%d", &code[i]);
}
for (i=0; i<MAX; i++)
{
printf("code[%d] = %d\n", i, code[i]);
sum += code[i];
}
printf("一维数组的和为%d, 平均值为 %.2f\n", sum, 1.0 * sum/MAX);
return 0;
}
/*
------------------------------------------------------------------------
在VC++6.0中运行结果为:
请输入一个数:5
请输入一个数:8
请输入一个数:9
请输入一个数:3
请输入一个数:6
code[0] = 5
code[1] = 8
code[2] = 9
code[3] = 3
code[4] = 6
一维数组的和为31, 平均值为 6.20
-------------------------------------------------------------------------
*/
- 第七个程序:截弦法求方程的根
/*
2021年1月22日16:25:20
截弦法求方程的根
求 x^3 - 5x^2 + 16x - 80 = 0 在区间[-3, 6]内的根
《C语言从入门到精通》
*/
# include <stdio.h>
# include <math.h>
float func(float x)
{
float y;
y = pow(x, 3) - 5*x*x + 16*x - 80.0f;
return y;
}
float point_x(float x1, float x2) // 两点连线与x 轴的交点
{
float y;
y = (x1 * func(x2) - x2 * func(x1)) / (func(x2) - func(x1));
return y;
}
float root(float x1, float x2)
{
float x, y, y1;
y1 = func(x);
do
{
x = point_x(x1, x2);
y = func(x);
if (y * y1 > 0)
{
y1 = y;
x1 = x;
}
else
{
x2 = x;
}
}while(fabs(y) >= 0.0001); // |f(x)| < ξ ξ为很小的数 程序中设为0.0001 此时 f(x) ≈ 0
return x;
}
void main()
{
float x1, x2;
printf("请输入两个数字:");
scanf("%f %f", &x1, &x2);
printf("x1 = %f, x2 = %f\n", x1, x2);
float t = root(x1, x2);
printf("方程的根为: %f\n", t);
}
/*
--------------------------------------------------
在VC++6.0中运行结果为:
请输入两个数字:-3 6
x1 = -3.000000, x2 = 6.000000
方程的根为: 5.000000
--------------------------------------------------
*/
- 第八个程序:该日是该年的第几天
/*
2021年1月23日22:50:38
该日是该年的第几天
《C语言从入门到精通》
目的:工程思想
*/
// control.c
# include <stdio.h>
extern int days(); // 定义外部函数
extern int year, month, day;
void main()
{
printf("输入年、月、日:\n");
scanf("%d%d%d", &year, &month, &day);
printf("%d月%d日是 %d 年的第%d天\n",month, day, year, days());
}
------------------------------------------------------------------------
// day.c
int year, month, day;
int days()
{
int i, count = 0;
int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
if ((year % 100) && (year % 4) || (year%400))
{
a[2] = 29;
}
for (i=0; i<month;i++)
{
count += a[i];
}
count += day;
return count;
}
/*
---------------------------
在VC++6.0中运行结果为:
输入年、月、日:
2804 5 30
5月30日是 2804 年的第151天
----------------------------
*/
- 第九个程序:
- 第十个程序: