gwgirl 发表于 2021-12-7 21:05

新学C的新手用三种不同的循环语句写出同样要做的运算

本帖最后由 gwgirl 于 2021-12-13 11:20 编辑

#include<stdio.h>

//1、两数交换
voidExchange()
{
      int a = 3;
      int b = 6;
      a = a + b;
      b = a - b;
      a = a - b;
      printf("a=%d b=%d\n", a, b);
}

//2、将一个数组中的数倒序输出
void ReverseOutput()
{
      int a = { 0,1,2,3,4 };

      //do--while循环      
      int k = 4;
      do
      {
                printf("%d ", a);
                k--;
      }      
      while (k>=0);
      printf("\n");

      //while循环
      int i = 4;
      while (i >= 0)
      {
                printf("%d ", a);
      }
      printf("\n");

      //for循环
      for ( int j = 4; j >=0; j--)
      {
                printf("%d ", a);
      }
      printf("\n");
}

//3、找出数组里最大的值(求最小值<换为>即可)
void OutputMax()
{
      int a = { 2,0,60,5,3,7 };

      //do--while循环
      int k = 1;
      int Max = a;
      do
      {
                if (Max<a)
                {
                        Max = a;
                }
                k++;
      } while (k<6);
      printf("%d \n", Max);


      //while 循环
      int i = 4;
      int Max1 = a;
      while (i >= 0)
      {
                if (Max1 < a)
                {
                        Max1 = a;
                }
                i--;
      }
      printf("%d \n", Max1);

      //for 循环
      int Max2 = a;
      for ( int j = 1;j < 6; j++)
      {
                if (Max2<a)
                {
                        Max2 = a;
                }
      }
      printf("%d \n", Max2);



      
}

//4、数组所有的元素想加,将结果返回
void ArrSum()
{
      int a = { 1,0,9,5,3,7 };
      int k = 0;
      int Sum1=0;
      //do--while 循环
      do
      {
                Sum1 += a;
                k++;
      } while (k<6);
      printf("%d\n", Sum1);

      //while 循环
      int i = 0;
      int Sum = 0;
      while (i < 6)
      {
                Sum += a;
                i++;
      }
      printf("%d\n", Sum);

      //for 循环
      int Sum2=0;
      for (int j = 0;j < 6; j++)
      {
                Sum2 += a;
      }
      printf("%d\n", Sum2);
}

//5、打印数组里的所以值
void Arrprinnt()
{
      int a = { 1,0,9,5,3,7 };

      //do --- while 循环
      int j = 0;
      do
      {
                printf("%d ", a);
                j++;
      } while (j<6);
      printf(" \n");

      //while 循环
      int i = 0;
      while (i < 6)
      {
                printf("%d ", a);
                i++;
      }
      printf(" \n");

      //for 循环
      for (intk = 0; k < 6; k++)
      {
                printf("%d ", a);
      }
}

//6、将两个等长数组相同的位置相加,存储到另外一个等长的数组中
void ArrsSum()
{
      int a = { 1,2,9,5,3,7 };
      int b = { 10,20,90,50,30,70 };
      int sum = { };
      
      //do --- while 循环
      int j = 0;
                do
                {
                        sum = a + b;
                        printf("%d ", sum);
                        j++;                        
                } while (j<6);
                printf("\n");


      //while 循环
      int i = 0;
      while (i < 6)
      {
                sum = a + b;
                printf("%d ", sum);
                i++;
      }
      printf("\n");

      //for 循环
      for (intk = 0; k < 6; k++)
      {
                sum = a + b;
                printf("%d ", sum);
      }
      printf("\n");
}

//7、写一个函数int prime(int x),如果x是素数返回值为1,否则返回0;素数是不能被自身和1整除的数;
                //do --- while循环 return只能只用一次do while 、while里面用printf替换
int Prime(int x)
{
      
      int j = 2;
      int r = 1;
      do
      {
                if (x % j == 0)
                {
                        r = 0;
                        break;
                }
                else
                j++;      
      } while (j < x);
      printf("%d\n", r);

      //while 循环
      int i = 2;
      int r1 = 1;
      while (i < x)
      {
                if (x % i == 0)
                {
                        r1 = 0;
                        break;
                }
                i++;                              
      }
      printf("%d\n", r1);

      //for 循环
      for (int i = 2; i < x; i++)
      {
                if (x%i==0)
                {
                        return 0;
                }
      }
      return 1;
}

//8、将数组的值两两比较,将最大的值存放到最后一个位置;
void ArrCmp()
{
      //do --- while 循环
      int a = { 80,10,20,90,50,30 };
      int Max;
      int i = 0;
      int j = 0;
      do
      {
                if (a > a)
                {
                        Max = a;
                        a = a;
                        a = Max;
                }
                i++;
      } while (i < 5);
      do
      {
                printf("%d ", a);
                j++;
      } while (j < 6);
      printf("\n");

      //while 循环
      int b = { 8,1,2,9,5,3 };
      int Max1;
      int i1 = 0;
      int j1 = 0;
      while (i1 < 5)
      {
                if (b > b)
                {
                        Max1 = b;
                        b = b;
                        b = Max1;
                }
                i1++;
      }
      while (j1 < 6)
      {
                printf("%d ", b);
                j1++;
      }
      printf("\n");

      //for 循环
      int c = { 801,101,201,901,501,301 };
      int Max2;
      for (int ii = 0; ii < 5; ii++)
      {
                if (c > c)
                {
                        Max2 = c;
                        c = c;
                        c = Max2;
                }
      }
      for (int jj = 0; jj < 6; jj++)
      {
                printf("%d ", c);
      }
      printf("\n");
}




int main()
{

      //1、两数交换
      printf("两数交换\n");
      Exchange();

      //2、将一个数组中的数倒序输出
      printf("将一个数组中的数倒序输出\n");
      ReverseOutput();

      //3、找出数组里最大的值,并返回(求最小值<换为>即可)
      printf("找出数组里最大的值,并返回(求最小值<换为>即可\n");
      OutputMax();

      //4、数组所有的元素想加,将结果返回
      printf("数组所有的元素想加,将结果返回\n");
      ArrSum();

      //5、打印数组里的所以值
      printf("打印数组里的所以值\n");
      Arrprinnt();

      //6、将两个等长数组相同的位置相加,存储到另外一个等长的数组中
      printf("将两个等长数组相同的位置相加,存储到另外一个等长的数组中\n");
      ArrsSum();

      //7、写一个函数int prime(int x),如果X是素数返回值为1,否则返回0;
      printf("写一个函数int prime(int x),如果X是素数返回值为1,否则返回0\n");
      printf("%d\n", Prime(7));

      //8、将数组的值两两比较,将最大的值存放到最后一个位置;
      printf("将数组的值两两比较,将最大的值存放到最后一个位置\n");
      ArrCmp();
      return 0;
}

ffiiss 发表于 2021-12-13 02:43

请问3的Do while 是否少比较一个数组?

gwgirl 发表于 2021-12-13 11:21

ffiiss 发表于 2021-12-13 02:43
请问3的Do while 是否少比较一个数组?

对的,感谢提醒,已修改,忘记k=1啦!{:7_236:}

hongtashan 发表于 2021-12-21 09:00

看看!学习学习!

zhmtao 发表于 2022-1-9 12:25

我来瞅瞅怎么防止OD

小海豚0 发表于 2022-1-28 23:44

谁说没有免费的午餐,这里就有啊

GtOMoVfW708 发表于 2022-1-29 12:48

谢谢分享

树叶94673 发表于 2022-1-30 00:55

谢谢分享

LSABYgo2164 发表于 2022-1-31 04:25

顶帖,不仅谢谢楼主,也能赚HB

Idiptygh194 发表于 2022-1-31 04:25

谢谢分享
页: [1] 2 3 4 5 6 7
查看完整版本: 新学C的新手用三种不同的循环语句写出同样要做的运算