文档库 最新最全的文档下载
当前位置:文档库 › c语言趣味编程实例

c语言趣味编程实例

c语言趣味编程实例
c语言趣味编程实例

1、编程序求5X+2Y+Z=50 的所有非负整数解。

#include

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

int main()

{

char x[] = "ABCDEFGHIJKLMNPQRST";

int k;

int n = 0;

while (x[n])

{

n++;

if (x[n] == 'M')

{

k = n;break;

}

}

printf("%c,",x[k]);

for (int i = 1; i <= 12; i++)

if (i <= 11)

printf("%c,%c,", (x[k] - i), (x[k] + i));

else

printf("%c,%c。", (x[k] - i), (x[k] + i));

printf("\n");

return 0;

}

3、某单位排队形,开始排成3路纵队,末尾多出了2人。后改成5路纵队,末尾又多出了3人,最后改成7路纵队,正好没有余数。编程序求出该单位至少有多少人。

#include

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

int main(void)

{

int a[6][6];

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)

a[i][j] = 1;

else

a[i][j] = 0;

printf("a[%d][%d]=%d ", i, j, a[i][j]);

if (count % 6 == 0)

printf("\n\n\n");

}

return 0;

}

5.打印空心菱形,图形如下:

其中行数可以从控制台输入,可变的,可以打印(1-n)层。

#include

void main(){

int lay;

printf("请输入要打印的层数(菱形的半边):");

//表示有多少层,层数由用户输入,图例中lay=4

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++)

{

if (j == 1 || j == 2 * i - 1)

printf("*");

else

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++)

{

if (j == 1 || j == (2 * lay - 2 * (i - lay) - 1))

printf("*");

else

printf(" ");

}

//打印换行

printf("\n");

}

}

6.打印实心菱形,与5题类似,如下图例

#include

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");

}

}

相关文档