吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2428|回复: 63

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

  [复制链接]
gwgirl 发表于 2021-12-7 21:05 | 显示全部楼层 |阅读模式

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

[C] 纯文本查看 复制代码
#include<stdio.h>

//1、两数交换
void  Exchange()
{
        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[5] = { 0,1,2,3,4 };

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

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

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

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

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


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

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



        
}

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

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

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

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

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

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

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

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


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

        //for 循环
        for (int  k = 0; k < 6; k++)
        {
                sum[k] = a[k] + b[k];
                printf("%d ", sum[k]);
        }
        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[6] = { 80,10,20,90,50,30 };
        int Max;
        int i = 0;
        int j = 0;
        do
        {
                if (a[i] > a[i + 1])
                {
                        Max = a[i];
                        a[i] = a[i + 1];
                        a[i + 1] = Max;
                }
                i++;
        } while (i < 5);
        do
        {
                printf("%d ", a[j]);
                j++;
        } while (j < 6);
        printf("\n");

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

        //for 循环
        int c[6] = { 801,101,201,901,501,301 };
        int Max2;
        for (int ii = 0; ii < 5; ii++)
        {
                if (c[ii] > c[ii + 1])
                {
                        Max2 = c[ii];
                        c[ii] = c[ii + 1];
                        c[ii + 1] = Max2;
                }
        }
        for (int jj = 0; jj < 6; jj++)
        {
                printf("%d ", c[jj]);
        }
        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;
}

评分

参与人数 15HB +13 THX +6 收起 理由
花盗睡鼠 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
消逝的过去 + 2
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
pmm018 + 1
hongtashan + 1 + 1
2511460545 + 1 [通知]学破解论坛即将在近期更名为吾爱汇编论坛WWW.52HB.COM
w_xh73 + 1 + 1 [快捷评语]--积极评分,从我做起。感谢分享!
king51999 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
ffiiss + 1 [快捷评语]--积极评分,从我做起。感谢分享!
foreversos + 1
AK520 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!
kuai7758521 + 1 + 1 [通知]学破解论坛即将在近期更名为吾爱汇编论坛WWW.52HB.COM
muker + 1 [快捷评语]--2021年,我们爱0爱1
531814517 + 1 [快捷评语]--2021年,我们爱0爱1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ffiiss 发表于 2021-12-13 02:43 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| gwgirl 发表于 2021-12-13 11:21 | 显示全部楼层

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

对的,感谢提醒,已修改,忘记k=1啦!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hongtashan 发表于 2021-12-21 09:00 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zhmtao 发表于 2022-1-9 12:25 | 显示全部楼层

我来瞅瞅怎么防止OD
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小海豚0 发表于 2022-1-28 23:44 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
GtOMoVfW708 发表于 2022-1-29 12:48 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
树叶94673 发表于 2022-1-30 00:55 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LSABYgo2164 发表于 2022-1-31 04:25 | 显示全部楼层

顶帖,不仅谢谢楼主,也能赚HB
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Idiptygh194 发表于 2022-1-31 04:25 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表