(C语言)玩转for循环(利用for循环打印多种图形)利用指针操作数组以及多组输入去最大最小值之后求其平均值

文章目录

  • 一、操作for循环打印菱形
  • 二、利用指针操作数组
    • 三、多组输入去最大最小值之后求其平均值


提示:以下是本篇文章正文内容,下面案例可供参考

一、操作for循环打印菱形

先打印上面的三角形,然后再根据规律打印下面的三角形

#include<stdio.h>
int main()
{
	int n, i, j, k,m;
	scanf("%d", &n);
	for (i = 1; i<=n;i++)//第一个for循环设置行数
	{
		for (k = 1; k <= n - i; k++)第二个for循环设置每一行要打印的空格数
			printf(" ");
		for (j = 1; j <= 2 * i - 1; j++)第三个for循环打印*
		{
			printf("*");
		}
		printf("\n");
	}
//倒着打印
	for (i = n - 1; i >= 0; i--)打印剩下的n-1行
	{
		for (k = n-i; k >0; k--)
			printf(" ");
			for (j = 2 * i - 1; j > 0; j--)
			{
				printf("*");
			}
		
		printf("\n");
	}

	return 0;
}

2利用for循环打印杨辉三角

1
1 1
1 2 1
1 3 3 1

.....

#include<stdio.h>
//定义一个大的数组,用来存每一行的数,因为杨辉三角上一行和下一行存在联系
int a[1000][1000];
int main()
{
	int n, i, j, k;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)//第一个for循环打印多少行
	{
		for (j = 1; j <= i; j++)//j用来控制每一行打印的元素个数
		{
			if (i == j || j==1) a[i][j] = 1;//行号=列号或者列号为1的都为1
			if (i != j)
			{
				a[i][j] = a[i - 1][j - 1] + a[i - 1][j];//如果行不等于列,则a[i][j],会等于同一列的上一个数加行号和列数都减一的数
			}
			printf("%d", a[i][j]);
		}
		printf("\n");
	}
	return 0;

二、利用指针操作数组

输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。

void print(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}
void move(int arr[], int sz)
{
	int* left = arr;
	int* right = arr + sz - 1;
	while (left < right)
	{
		//从左往右找一个偶数,停下来
		while (left<right && (*left) % 2 == 1)
		{
			left++;
		}
		//从右往左找一个奇数,停下来
		while ((*right) % 2 == 0)
		{
			right--;
		}
		//奇数和偶数交换
		if (left < right)
		{
			int tmp = *left;
			*left = *right;
			*right = tmp;
		}
	}
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	print(arr, sz);
	move(arr, sz);
	print(arr, sz);

	return 0;
}

 三多组输入去最大最小值之后求其平均值

#include<stdio.h>
int main() {
    int arr[7] = { 0 };//输入7个数
    int i = 0;
    int min = 100;
    int max = 0;
    while (~scanf("%d %d %d %d %d %d %d", arr, arr + 1, arr + 2, arr + 3, arr + 4, arr + 5, arr + 6))
    {
        if (arr[i] > max) {//同时找出最大数
            max = arr[i];
        }
        if (arr[i] < min) {//最小数
            min = arr[i];
        }
    }
    float sum = 0.0;
    for (int j = 0; j < 7; j++) {//计算总和
        sum += arr[j];
    }
    printf("%.2f", (sum - max - min) * 1.0 / 5.0);//结果除去最大最小
}


猜你喜欢

转载自blog.csdn.net/qq_62662919/article/details/121777896