文章目录
- 总结
- 前言
-
- 例题1、求sn=a+aa+aaa+...的值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),a和n由键盘输入。
- 例题2、打印出所有的“水仙花数“。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=1^3^+5^3^+3^3^
- 例题3、一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如6=1+2+3。编程找出1000以内的所有完数。
- 例题4、求解3X3矩阵对角线元素之和
- 例题5、中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
- 例题6、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘下多少个桃子
- 例题7、一个球从100M高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹有多高?
- 例题8、求出所有的4位数,符合abcd=(ab+cd)的平方
- 例题9、从键盘上输入一个正整数,将其以二进制形式输出
- 例题10、歌德巴赫猜想。每个不小于6的偶数都可以表示为两个奇素数之和;例如:5=2+3 , 8=3+5 ,验证100以内的自然数
- 例题11、写一函数,打印出输入的两个数中最大值,输出过程在main函数内实现
- 例题12、矩阵反置,例如将左面的矩阵变换成右面的矩阵模样
- 例题13、输入分数,按分数输出成绩等级 A B C D E
- 例题14、求前100个质数(不是100以内质数)
- 例题15、求前100以内的质数,用数组完成。求解思想:数学上规定,如果一个数不能被小于它的所有质数整除开的话,则这个数也一定是质数
- 例题16、二维数组实现杨辉三角
- 例题17、写一函数,实现两字符串的连接
- 例题18、定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题
- 例题19、编写一个函数,打印学生成绩,该数组中有3个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,输入学号,将该学号的学生记录输出
- 例题20、输入3个数,按由大到小的顺序输出
- 例题21、求 2/1+3/2+5/3+8/5+... 的前20项的和
- 例题22、用指针方式实现strlen函数的功能
- 例题23、输入两个数,求其最大公约和最小公倍数
- 例题24、给一个不超过5位的正整数,要求:
- 例题25、一维数组实现杨辉三角
- 例题26、有 1、2、3、4 四个数字,组成互不相同且无重复数字的三位数都是多少?总数是多少个?
- 例题27、打印99乘法口诀表
- 例题28、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假设兔子都不死,问每个月的兔子总数为多少?(输出前40个月)
- 例题29、在屏幕上显示一个等腰三角形
- 例题30、将一个正整数分解质因数,例如100=2*2*5*5
- 例题31、在屏幕上显示一个菱形
- 例题32、求1!+2!+3!+...+N!的和(自己编写计算N!阶乘的函数)
- 例题33、求1!+2!+3!+...+N!的和(递归函数实现)
- 例题34、反向输出字符串(递归方式),例如:输入abcde,输出edcba
- 例题35、反向输出字符串(指针方式),例如:输入abcde,输出edcba
- 例题36、判断一个数是否是回文数,例如12321就是回文数
- 例题37、输入三组数字,按照从小到大的顺序排列输出
- 例题38、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,最后留下来的是原来第几号人员?
- 例题39、输入一个正整数,将其反方向逆序输出
- 例题40、海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
- 例题41、八进制转换为十进制
- 例题42、打印金字塔
- 例题43、打印倒金字塔
- 例题44、输出楼梯图形
- 例题45、一个偶数总能表示为两个素数之和
- 例题46、根据公式π/4=1-1/3+1/5-1/7+1/9-1/11+......,计算π的近似值,当最后一项的绝对值小于0.000001为止
- 例题47、从键盘输入一个正整数n,计算1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) 的值
- 例题48、打印沙漏图案
总结
未完~~,持续更新中,可收藏…
有错误,请指出;有疑问,请留言…
嗯,别忘了顺手帮我点个赞~~
多为中高级例题,小白请先研懂谭老师的书~~
前言
收纳整理C语言各类经典例题并给出实例代码和运行结果,力求代码最精简,供大家参考~~
开发及测试环境:Win11 + CLion(2024.1版)/ Win7 + VC6.0
例题1、求sn=a+aa+aaa+…的值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),a和n由键盘输入。
#include <stdio.h>
void main() {
int a; //数字
int n; //长度
int i;
int sum = 0; //sn的值,初始化为0
int temp; //保存a或aa、aaa等的值
printf("请输入一个1~9的数字:");
scanf("%d",&a);
printf("请输入长度:");
scanf("%d",&n);
temp = a;
for(i = 0; i < n; i++) {
sum += a;
printf(" %d +",a);
a = a*10 + temp;
}
printf("\b= %d\n",sum); // \b用来回退一格
}
运行结果:
例题2、打印出所有的“水仙花数“。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如:153是一水仙花数,因为153=13+53+33
#include <stdio.h>
void main() {
int i;
int a, b, c; //分别代表这个三位数的百位、十位、个位
for (i = 100; i < 1000; i++) {
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d是水仙花数;\n", i);
}
}
}
运行结果:
例题3、一个数如果恰好等于它的因子之和,这个数就称为“完数”。 例如6=1+2+3。编程找出1000以内的所有完数。
#include <stdio.h>
void main() {
int x; //从2到1000的自然数
int i;
int sum = 0;
for (x = 2; x < 1000; x++) {
for (i = 1; i < x; i++) {
if (x % i == 0) //找出x的因子,是因子就累加
{
sum += i;
}
}
if (x == sum) //因数和与这个自然数x是否相等,是则输出
{
printf("%d\n", x);
}
sum = 0; //将因数和复原到0,以便下次使用
}
}
运行结果:
例题4、求解3X3矩阵对角线元素之和
#include<stdio.h>
void main() {
int i;
int sum = 0;
int a[3][3] = {
1, 2, 3,
2, 2, 3,
3, 2, 3};
for (i = 0; i < 3; i++) {
sum += a[i][i] + a[i][2 - i];
}
printf("对角线元素之和为%d\n", sum);
}
运行结果:
例题5、中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
#include <stdio.h>
void main() {
//方法一
int x, y, z; //公鸡、母鸡、鸡崽各花掉的钱数
printf("方法一计算结果:\n");
for (x = 0; x <= 100; x += 5) //买公鸡的钱要能被5整除
for (y = 0; y <= 100; y += 3) //买母鸡的钱要能被3整除
for (z = 0; z <= 33; z++) //花33块钱买鸡崽足够了
if (x + y + z == 100 && x / 5 + y / 3 + 3 * z == 100)
printf("公鸡%d只,母鸡%d只,鸡雏%d只\n", x / 5, y / 3, 3 * z);
//方法二
int a, b, c; //公鸡、母鸡、鸡崽数量
printf("方法二计算结果:\n");
for (a = 0; a <= 20; a++)
for (b = 0; b <= 33; b++)
for (c = 0; c <= 100; c += 3)
if (a + b + c == 100 && a * 5 + b * 3 + c / 3 == 100)
printf("公鸡%d只,母鸡%d只,鸡雏%d只\n", a, b, c);
}
运行结果:
例题6、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,就只剩一个桃子了。求第一天共摘下多少个桃子
#include <stdio.h>
void main() {
int i;
int s = 1; //第10天的桃子数
for (i = 0; i < 9; i++) //每次循环,都是其前一天的桃子数
{
s = (s + 1) * 2;
}
printf("猴子第一天共摘下%d颗桃子\n", s);
}
运行结果:
例题7、一个球从100M高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹有多高?
#include <stdio.h>
void main() {
int i;
double s = 100; //第一次落地时经过的总长
double h = 100; //第一次落地前的高度
for (i = 0; i < 14; i++) {
s = s + h;
h = h / 2;
}
printf("10次落地共经过%f米\n第10次反弹高度是%f米\n", s, h / 2);
}
运行结果:
例题8、求出所有的4位数,符合abcd=(ab+cd)的平方
#include <stdio.h>
void main() {
int i;
int a;
printf("符合abcd=(ab+cd)的平方的数字有:\n");
for (i = 1000; i < 10000; i++) {
a = i / 100 + i % 100; // i/100取得ab值,i%100取得cd值
if (a * a == i)
printf("%d\n", i);
}
}
运行结果:
例题9、从键盘上输入一个正整数,将其以二进制形式输出
#include <stdio.h>
void main() {
int x; //接收输入的整数
int k = 0; //数组中定位
int a[32]; //这里最多能显示32位以内的整数
printf("请输入一个正整数: ");
scanf("%d", &x); //这里没有对错误输入进行判断
printf("\n%d的二进制形式是:", x);
while (x != 0) //利用二进制的辗转相除法
{
a[k++] = x % 2;
x /= 2;
}
while (k != 0) //将存于数组中的二进制数倒序输出
{
k--;
printf("%d", a[k]);
}
}
运行结果:
例题10、歌德巴赫猜想。每个不小于6的偶数都可以表示为两个奇素数之和;例如:5=2+3 , 8=3+5 ,验证100以内的自然数
#include<stdio.h>
void main() {
int a, b, i, j, m;
int n = 0;
for (m = 6; m <= 100; m++) //m是大于等于6的自然数
{
for (a = 2; a <= m / 2; a++) {
b = m - a;
for (i = 2; i <= a; i++) //求解第一个奇素数
if (a % i == 0) //如果能够整除,则其不是素数
break;
for (j = 2; j <= b; j++) //求解第二个奇素数
if (b % j == 0)
break;
if (i == a && j == b) //当a、b都是素数的时候,并且前面已经确定了m=a+b
{
printf("%2d=%2d+%2d ", m, a, b);
if (++n % 6 == 0) //每输出6次换行,删除此代码,系统自动换行
printf("\n");
break;
}
}
}
}
运行结果:
例题11、写一函数,打印出输入的两个数中最大值,输出过程在main函数内实现
#include <stdio.h>
int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
void main() {
int x, y;
printf("请连续输入两个整数\n");
scanf("%d %d", &x, &y);
printf("答:%d和%d的最大值是:%d\n", x, y, max(x, y));
}
运行结果:
例题12、矩阵反置,例如将左面的矩阵变换成右面的矩阵模样
1 2 3-----------1 4 7
4 5 6-----------2 5 8
7 8 9-----------3 6 9
#