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

简介: (C语言)玩转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);//结果除去最大最小
}
相关文章
|
2月前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
46 3
|
1月前
|
传感器 算法 安全
【C语言】两个数组比较详解
比较两个数组在C语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
150 6
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
87 5
|
2月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
2月前
|
容器
在使用指针数组进行动态内存分配时,如何避免内存泄漏
在使用指针数组进行动态内存分配时,避免内存泄漏的关键在于确保每个分配的内存块都能被正确释放。具体做法包括:1. 分配后立即检查是否成功;2. 使用完成后及时释放内存;3. 避免重复释放同一内存地址;4. 尽量使用智能指针或容器类管理内存。
|
2月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
70 4
|
2月前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
54 2
|
2月前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
43 1