全篇都是很多书上的源码和一些自己模仿的代码
- 第一个程序:计算圆的周长
/*
2021年1月14日18:33:47 自己所写
计算圆周长.c
*/
# include <stdio.h>
# define PI 3.14
int main(void)
{
float circle;
float R;
printf("请输入一个圆的半径:");
scanf("%f", &R);
circle = 2 * PI * R;
printf("圆的周长为:%.3f\n", circle);
return 0;
}
/*
-----------------------------------------
在VC++6.0中运行结果为:
请输入一个圆的半径:20.3
圆的周长为:127.484
-----------------------------------------
*/
/*
2021年1月14日19:00:37
计算圆周长.c 《C语言从入门到精通》
*/
# include <stdio.h>
# include <math.h>
# define PI 3.14
int main(void)
{
int radius;
float circum;
radius = 2;
circum = 2 * PI * radius;
printf("变量 radius 地址是:%d\n", &radius);
printf("半径开方值:%f\n", sqrt(radius));
printf("半径是%d 周长是%f\n", radius, circum);
return 0;
}
/*
---------------------------------------------------
在VC++6.0中运行的结果为:
变量 radius 地址是:1703724
半径开方值:1.414214
半径是2 周长是12.560000
---------------------------------------------------
*/
- 第二个程序:平均成绩、分数等级
/*
2021年1月15日14:56:38
题目:输入不确定个数的学生的成绩,输入负数时程序结束。
根据输入的数据计算全班的平均成绩,并统计90分以上的学生
的个数,80-90分学生的个数,70-80分学生的个数,60-70学
生的个数,以及不及格的学生的个数。
编程过程中的错误:非输出控制符与scanf连用
例:scanf("%d\n", &m)
*/
# include <stdio.h>
int main(void)
{
float sum = 0.0, avg = 0.0;
int count, num, c91, c81, c71, c61,c0;
count = num = c91 = c81 = c71 = c61 = c0 = 0;
scanf("%d", &num);
while (num >= 0 && num < 101) // 输入负数时程序结束
{
sum += num; // 总成绩
count += 1; // 人数
if (num >= 90)
c91 += 1;
else if (num >= 80 && num < 90)
{
c81 += 1;
}
else if (num >= 70 && num < 80)
{
c71 += 1;
}
else if (num >= 60 && num < 70)
{
c61 += 1;
}
else
{
c0 += 1;
}
scanf("%d", &num); // 再次输入成绩
}
avg = sum / count; // 平均值
printf("本班的平均值为:%f\n", avg);
printf("90分以上的人数是:%d\n", c91);
printf("80分以上的人数是:%d\n", c81);
printf("70分以上的人数是:%d\n", c71);
printf("60分以上的人数是:%d\n", c61);
printf(" 不及格的人数是:%d\n", c0);
return 0;
}
/*
-----------------------------------------------
在VC++6.0中运行结果为:
96
86
84
98
75
65
68
92
84
73
-5
本班的平均值为:82.100000
90分以上的人数是:3
80分以上的人数是:3
70分以上的人数是:2
60分以上的人数是:2
不及格的人数是:0
-----------------------------------------------
*/
/*
2021年1月15日14:56:38
题目:输入不确定个数的学生的成绩,输入负数时程序结束。
根据输入的数据计算全班的平均成绩,并统计90分以上的学生
的个数,80-90分学生的个数,70-80分学生的个数,60-70学
生的个数,以及不及格的学生的个数。
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
float sum = 0.0, avg = 0.0;
int count, num, c91, c81, c71, c61,c0;
count = num = c91 = c81 = c71 = c61 = c0 = 0;
scanf("%d", &num);
while (num >= 0 && num < 101)
{
sum += num; // 总成绩
count += 1; // 人数
if (num >= 90)
c91 += 1;
else
{
if (num >= 80 && num < 90)
c81 += 1;
else
{
if (num >= 70 && num < 80)
c71 += 1;
else
{
if (num >= 60 && num < 70)
c61 += 1;
else c0 += 1;
}
}
}
scanf("%d", &num); // 再次输入成绩
}
avg = sum / count; // 平均值
printf("本班的平均值为:%f\n", avg);
printf("90分以上的人数是:%d\n", c91);
printf("80分以上的人数是:%d\n", c81);
printf("70分以上的人数是:%d\n", c71);
printf("60分以上的人数是:%d\n", c61);
printf(" 不及格的人数是:%d\n", c0);
return 0;
}
/*
-----------------------------------------------
在VC++6.0中运行结果为:
96
98
97
65
45
72
82
-6
本班的平均值为:79.285714
90分以上的人数是:3
80分以上的人数是:1
70分以上的人数是:1
60分以上的人数是:1
不及格的人数是:1
-----------------------------------------------
*/
- 第三个程序:是否为闰年
/*
2021年1月16日10:08:48
判断是不是闰年
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int year;
printf("请输入年份:");
scanf("%d", &year);
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
printf("%d 是闰年!\n", year);
else
printf("%d 不是闰年!\n", year);
return 0;
}
/*
------------------------------------------------
在VC++6.0中运行结果为:
请输入年份:2028
2028 是闰年!
------------------------------------------------
*/
- 第四个程序:方程的计算
a=1 , b=5 x由用户自定义
/*
2021年1月16日14:25:35
计算给定方程的值
《C语言从入门到精通》
*/
# include <stdio.h>
int main()
{
int a = 1;
int b = 5;
float x, y;
printf("请输入任意一个数字:");
scanf("%f", &x);
y = x >= -10 ? (-a * (b + x)) : (3.0/((a*a*a + x*x*x) * b)); // 三目运算符
printf("y = %f\n", y);
return 0;
}
/*
------------------------------------------------------------------------
在VC++6.0中运行结果为:
请输入任意一个数字:4
y = -9.000000
请输入任意一个数字:-20
y = -0.000075
------------------------------------------------------------------------
*/
- 第五个程序:鸡兔同笼问题
/*
2021年1月16日15:33:08
鸡兔同笼问题(顺序结构)
《C语言从入门到精通》
*/
# include <stdio.h>
int main()
{
int m; // 鸡的个数
int n; // 兔的个数
int h; // 鸡兔总头数
int f; // 鸡兔总脚数
printf("输入一共有多少头鸡和兔:");
scanf("%d", &h);
printf("输入鸡和兔一共有多少脚:");
scanf("%d", &f);
m = (4 * h - f) / 2;
n = (f - 2 * h) / 2;
printf("共有鸡 %d 只 共有兔 %d 只\n", m, n);
return 0;
}
/*
-------------------------------------------------
在VC++6.0中运行结果为:
输入一共有多少头鸡和兔:10
输入鸡和兔一共有多少脚:32
共有鸡 4 只 共有兔 6 只
-------------------------------------------------
*/
- 第六个程序:水仙花数 153= 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
/*
2021年1月17日11:51:32
判断输入的数字是否为水仙花数
*/
# include <stdio.h>
void main()
{
int n, a, b, c;
printf("请输入一个三位数:");
scanf("%d", &n);
a = n / 100;
b = n % 100 / 10;
c = n % 10;
if (a * a * a + b * b * b + c * c * c == n)
printf("%d 是水仙花数!\n", n);
else
printf("%d 不是水仙花数!\n", n);
}
/*
-------------------------------------------------------
在VC++6.0中运行结果为:
请输入一个三位数:153
153 是水仙花数!
请输入一个三位数:370
370 是水仙花数!
请输入一个三位数:250
250 不是水仙花数!
-------------------------------------------------------
*/
/*
2021年1月17日12:01:39
找出 100 -999 之间所有的水仙花数
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, a, b, c;
for (i=100; i<999; i++)
{
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if (a*a*a+b*b*b+c*c*c == i)
printf("水仙花数有:%d\n", i);
}
return 0;
}
/*
---------------------------------------------
在VC++6.0中运行结果为:
水仙花数有:153
水仙花数有:370
水仙花数有:371
水仙花数有:407
---------------------------------------------
*/
- 第七个程序:一个数的阶乘
/*
2021年1月17日12:16:00
一个数的阶乘
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int n, i;
int sum = 1;
printf("轻输入任意一个数字用于计算这个数的阶乘:");
scanf("%d", &n);
for (i=1; i<=n; i++)
{
sum *= i;
}
printf("这个数的阶乘为:%d\n", sum);
return 0;
}
/*
------------------------------------------
轻输入任意一个数字用于计算这个数的阶乘:5
这个数的阶乘为:120
------------------------------------------
*/
累加与累乘是最常见的一类算法,这类算法需要设置两个变量,一个用来作为循环变量控制自然数的增减变化,另一个作为存放累加累乘的结果,通过循环变量变成下一个数的累加或累乘。所以一般求阶乘时存放阶乘的变量初值为1,求累加初值应设置为0。
- 第八个程序:计算1/2 + 2/3 + 3/4…… 前20项的和
/*
2021年1月17日15:57:25
计算1/2 + 2/3 + 3/4 …… 前20项的和
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
double i;
double sum = 0;
i = 1.0;
while (i <= 20)
{
sum += i / (i+1);
i++;
}
printf("前20项和是:%f\n", sum);
return 0;
}
/*
---------------------------------------
在VC++6.0中运行结果为:
前20项和是:17.354641
---------------------------------------
*/
- 第九个程序:求两数的最大公约数、最小公倍数
/*
2021年1月17日18:10:59
辗转相除法求两数的最大公约数、最小公倍数
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int m, n, t, r;
int m1, n1, d;
printf("请输入第一个数:");
scanf("%d", &m);
printf("请输入第二个数:");
scanf("%d", &n);
// 保存原始数据
m1 = m;
n1 = n;
if (m < n)
{
t = m;
m = n;
n = t;
}
// 辗转相除法求最大公约数
do
{
r = m % n;
m = n;
n = r;
}while(r != 0);
d = m1 * n1 / m; // 最小公倍数
printf("%d和%d的最大公约数是:%d 最小公倍数是:%d\n", m1, n1, m, d);
return 0;
}
/*
---------------------------------------------------------
在VC++6.0中运行结果为:
请输入第一个数:24
请输入第二个数:36
24和36的最大公约数是:12 最小公倍数是:72
---------------------------------------------------------
*/
- 第十个程序:金字塔
/*
2021年1月17日18:35:37
*型金字塔
《C语言从入门到精通》
*/
# include <stdio.h>
int main(void)
{
int i, j, k;
// 控制行数
for (i=1; i<=5; i++)
{
// 输出空格
for (j=1; j<=5-i; j++)
printf(" ");
// 输出* 号
for (k=1; k<=2*i-1; k++)
printf("*");
printf("\n"); // 回车
}
return 0;
}
/*
-----------------------------------
在VC++6.0中运行结果为:
*
***
*****
*******
*********
-----------------------------------
*/