收纳整理C语言各类经典例题并给出实例代码和运行结果,力求代码最精简,供大家参考~~
开发及测试环境:Win11 + CLion(2024.1版)/ Win7 + VC6.0
#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= %dn",sum); // b用来回退一格
}
运行结果:
#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);
}
}
}
运行结果:
#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("%dn", x);
}
sum = 0; //将因数和复原到0,以便下次使用
}
}
运行结果:
#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("对角线元素之和为%dn", sum);
}
运行结果:
#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);
}
运行结果:
#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);
}
运行结果:
#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);
}
运行结果:
#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("%dn", i);
}
}
运行结果:
#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]);
}
}
运行结果:
#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;
}
}
}
}
运行结果:
#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的最大值是:%dn", x, y, max(x, y));
}
运行结果:
1 2 3-----------1 4 7
4 5 6-----------2 5 8
7 8 9-----------3 6 9
#include <stdio.h>
void main() {
int a[3][3] = {1, 2, 3,
4, 5, 6,
7, 8, 9};
int i, j, x; //x为第三方变量,起到交换值的作用
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
if (j >= i) //为什么要j>=i呢?仔细看图,例如 2的位置是a[0][1],4的位置是a[1][0]
{
x = a[i][j];
a[i][j] = a[j][i];
a[j][i] = x;
}
printf("%d ", a[i][j]);
}
printf("n");
}
}
运行结果:
90分以上为A
80-89分为B
70-79分为C
60-69分为D
60分以下为E
#include <stdio.h>
void main() {
int a;
printf("请输入分数:");
scanf("%d", &a);
if (a >= 90 && a <= 100) {
printf("您的成绩是An");
} else if (a >= 80 && a <= 89) {
printf("您的成绩是Bn");
} else if (a >= 70 && a <= 79) {
printf("您的成绩是Cn");
} else if (a >= 60 && a <= 69) {
printf("您的成绩是Dn");
} else if (a >= 0 && a < 60) {
printf("您的成绩是En");
} else {
printf("您的输入有问题,请仔细检查n");
}
}
运行结果:
#include <stdio.h>
void main() {
int i;
int x = 2; //自然数
int sum = 0; //质数的数量
while (sum < 100) {
for (i = 2; i < x; i++) // 如果这个数能被2到X-1整除开的话,这个数就不是质数
{
if (x % i == 0) //如果能除开,就没有继续算下去的必要了
{
break; //所以就可以跳出来了
}
}
if (x == i) //什么时候x才能和i相等呢? 只有上面x%i==0不成立的情况下才会发生
{
sum++; //每次得到一个质数,就把计数器加上一个
printf("%dt", x);
if (sum % 10 == 0) //每10个质数分一行,便于观察
{
printf("n");
}
}
x++; //别忘了这里,自然数是要自然增长的
}
}
运行结果:
#include <stdio.h>
void main() {
int a[100] = {2}; //存放已知质数的数组
int i;
int j;
int p = 1; //数组中目前有多少个质数
printf("百以内的质数有:n");
for (i = 3; i < 101; i++) {
for (j = 0; j < p; j++)
if (i % a[j] == 0)
break;
if (j == p) {
printf("%d ", a[p - 1]);
a[p++] = i;
}
}
}
运行结果:
#include <stdio.h>
void main() {
int i, j;
int a[10][10] = {1}; //在这里,最多显示到第10行
for (i = 0; i < 10; i++) {
a[i][0] = 1;
for (j = 0; j <= i; j++) {
printf("%5d ", a[i][j]);
if (i != 9)
a[i + 1][j + 1] = a[i][j] + a[i][j + 1];
}
}
}
运行结果:
#include <stdio.h>
#include <string.h>
void cat(char a[], char b[]) {
int i, j, k;
i = strlen(a);
j = strlen(b);
for (k = 0; k < j; k++) {
a[i++] = b[k];
}
a[i] = '