(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);//结果除去最大最小
}
相关文章
|
13天前
|
C语言
【c语言】指针就该这么学(1)
本文详细介绍了C语言中的指针概念及其基本操作。首先通过生活中的例子解释了指针的概念,即内存地址。接着,文章逐步讲解了指针变量的定义、取地址操作符`&`、解引用操作符`*`、指针变量的大小以及不同类型的指针变量的意义。此外,还介绍了`const`修饰符在指针中的应用,指针的运算(包括指针加减整数、指针相减和指针的大小比较),以及野指针的概念和如何规避野指针。最后,通过具体的代码示例帮助读者更好地理解和掌握指针的使用方法。
39 0
|
1天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
11 3
|
9天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
16 1
|
14天前
|
存储 编译器 C语言
【c语言】数组
本文介绍了数组的基本概念及一维和二维数组的创建、初始化、使用方法及其在内存中的存储形式。一维数组通过下标访问元素,支持初始化和动态输入输出。二维数组则通过行和列的下标访问元素,同样支持初始化和动态输入输出。此外,还简要介绍了C99标准中的变长数组,允许在运行时根据变量创建数组,但不能初始化。
31 6
|
12天前
|
C语言
【c语言】指针就该这么学(3)
本文介绍了C语言中的函数指针、typedef关键字及函数指针数组的概念与应用。首先讲解了函数指针的创建与使用,接着通过typedef简化复杂类型定义,最后探讨了函数指针数组及其在转移表中的应用,通过实例展示了如何利用这些特性实现更简洁高效的代码。
11 2
|
12天前
|
C语言
如何避免 C 语言中的野指针问题?
在C语言中,野指针是指向未知内存地址的指针,可能引发程序崩溃或数据损坏。避免野指针的方法包括:初始化指针为NULL、使用完毕后将指针置为NULL、检查指针是否为空以及合理管理动态分配的内存。
|
12天前
|
C语言
C语言:哪些情况下会出现野指针
C语言中,野指针是指指向未知地址的指针,通常由以下情况产生:1) 指针被声明但未初始化;2) 指针指向的内存已被释放或重新分配;3) 指针指向局部变量,而该变量已超出作用域。使用野指针可能导致程序崩溃或不可预测的行为。
|
18天前
|
存储 C语言
C语言32位或64位平台下指针的大小
在32位平台上,C语言中指针的大小通常为4字节;而在64位平台上,指针的大小通常为8字节。这反映了不同平台对内存地址空间的不同处理方式。
|
18天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
18天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。