c语言趣味编程实例
1、编程序求 5X+2Y+Z=50 的所有非负整数解。#include <stdio.h>int main()int x, y, z;int count = 0;for (x = 0; 5 * x <= 50;x+) for (y = 0; 2 * y <= 50; y+) for (z = 0; z <= 50; z+) if (5 * x + 2 * y + z = 50) count+; printf("%d :", count); printf("x=%d,y=%d,z=%d", x, y, z); printf("n"); return 0;2、把25个字母A、B 、C、··· 、X、Y按如下要求打印出来:从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,。 要求:初始化时按字母表顺序赋值。#include <stdio.h>int main() char x = "ABCDEFGHIJKLMNPQRST"int k;int n = 0;while (xn)n+;if (xn = 'M')k = n;break;printf("%c,",xk);for (int i = 1; i <= 12; i+)if (i <= 11)printf("%c,%c,", (xk - i), (xk + i);elseprintf("%c,%c。", (xk - i), (xk + i);printf("n");return 0;3、某单位排队形,开始排成3路纵队,末尾多出了2人。后改成5路纵队,末尾又 多出了3人,最后改成7路纵队,正好没有余数。编程序求出该单位至少有多少人。#include <stdio.h>int main() int staff_num = 7; /该单位至少有7人。while (1) if (staff_num % 3 = 2 && staff_num % 5 = 3 && staff_num % 7 = 0)printf("该单位至少有%d人。", staff_num);break;staff_num+;printf("n");return 0;4、将一个6×6数组的第一行、第六行、主对角线和副对角线上的元素都存入1,其 余的元素都存入0。请编程序实现。 要求:1)不许对数组初始化。 2)尽量少用循环。#include <stdio.h>int main(void)int a66;int count = 0;for (int i = 0; i < 6;i+)for (int j = 0; j < 6; j+)count+;if (i = j | i = 0 | i = 5)aij = 1;elseaij = 0;printf("a%d%d=%d ", i, j, aij);if (count % 6 = 0)printf("nnn");return 0;5.打印空心菱形,图形如下: 其中行数可以从控制台输入,可变的,可以打印(1-n)层。#include<stdio.h>void main()int lay;printf("请输入要打印的层数(菱形的半边):");/表示有多少层 ,层数由用户输入,图例中lay=4scanf_s("%d", &lay); /vs2010以后版本scanf安全问题会报错。/以下代码打印菱形的上半部for (int i = 1; i <= lay; i+) for (int k = 1; k <= lay - i; k+)printf(" ");/每行星号个数 for (int j = 1; j <= 2 * i - 1; j+)if (j = 1 | j = 2 * i - 1)printf("*");elseprintf(" ");/打印换行printf("n");/以下代码打印菱形的下半部for (int i = lay + 1; i <= 2 * lay - 1; i+)for (int k = 1; k <= i - lay; k+)printf(" ");for (int j = 1; j <= 2 * lay - 2 * (i - lay) - 1; j+)if (j = 1 | j = (2 * lay - 2 * (i - lay) - 1)printf("*");elseprintf(" "); /打印换行printf("n"); 6. 打印实心菱形,与5题类似,如下图例#include<stdio.h>void main()int lay;printf("请输入要打印的层数(菱形的半边): ");/表示有多少层 scanf_s("%d", &lay);/vs2010以后版本scanf安全问题会报错。/以下代码打印菱形的上半部for (int i = 1; i <= lay; i+)for (int k = 1; k <= lay - i; k+)printf(" ");/每行星号个数 for (int j = 1; j <= 2 * i - 1; j+)printf("*");/打印换行 printf("n");/以下代码打印菱形的下半部for (int i = lay + 1; i <= 2 * lay - 1; i+)for (int k = 1; k <= i - lay; k+) printf(" ");/每行星号个数 for (int j = 1; j <= 2 * lay - 2 * (i - lay) - 1; j+) printf("*");/打印换行 printf("n");