_Fallen_Star 2021-11-03 15:45 采纳率: 73.3%
浏览 192
已结题

一个C#代码转换为C++代码

C#要求转换为一般可看懂的C++格式,可运行和原来输出的答案一样
我手翻了一遍,用转译又翻了一遍,都没有给通过,

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            int n, i, max = 0, elem = 0, sum = 0, k = 0, ax, bx;

            Console.WriteLine("输入数组元素数Введите количество элементов массива:");

            n = Convert.ToInt32(Console.ReadLine());

            if (n < 1)

                Environment.Exit(0);

            int[] a = new int[n];

            Console.WriteLine("输入数组元素Введите элементы массива:");

            for (i = 0; i < n; i++)

                a[i] = Convert.ToInt32(Console.ReadLine());

            max = a[0];

            Console.Clear();

            Console.WriteLine("原始数组Исходный массив:");

            for (i = 0; i < n; ++i)

                if (i == 0) Console.Write(a[i]);

                else Console.Write("\t" + a[i]);

            Console.WriteLine();



            Console.WriteLine("左边区间Введите левую границу интервала a:");

            ax = Convert.ToInt32(Console.ReadLine());

            do

            {

                Console.WriteLine("右边区间Введите правую границу интервала b, причём b > " + ax + ":");

                bx = Convert.ToInt32(Console.ReadLine());

            }

            while (bx < ax);

            a = a.Where(x => (Math.Abs(x) > ax) || (Math.Abs(x) < bx)).ToArray();

            Console.WriteLine("Массив, сжатый удалением элементов, модуль которых находится в интервале [" + ax + ";" + bx + "]");

            for (i = 0; i < a.Length; ++i)

                if (i == 0) Console.Write(a[i]);

                else Console.Write("\t" + a[i]);



            for (i = 0; i < n; i++)

            {

                if (a[i] > max)

                { max = a[i]; }

            }

            Console.WriteLine("最大数组元素Максимальный элемент массива: " + max);

            for (i = 0; i < n; ++i)

                if (a[i] > 0)

                {

                    elem = a[i];

                    k = i;

                }

            if (elem <= 0) Console.WriteLine("没有正元素Положительных элементов в массиве нет!");

            else Console.WriteLine("最后一个正元素Последний положительный элемент в массиве: " + elem);

            for (i = 0; i < k; i++)

                sum += a[i];

            Console.WriteLine("位于最后一个正元素之前数组的总和: " + sum);

            Console.ReadKey();

        }

    }

}



  • 写回答

1条回答 默认 最新

  • 於黾 2021-11-03 16:05
    关注
    int n, i, max = 0, elem = 0, sum = 0, k = 0, ax, bx;
                printf("输入数组元素数Введите количество элементов массива:");
                scanf("%d",&n);
                if (n < 1)
                    return 0;
                int a[n];
                printf("输入数组元素Введите элементы массива:");
                for (i = 0; i < n; i++)
                    scanf("%d",&a[i]);
                max = a[0];
                
                printf("原始数组Исходный массив:");
                for (i = 0; i < n; ++i)
                    if (i == 0) printf("%d",a[i]);
                    else printf("\t%d" , a[i]);
                printf("\n");
     
     
                printf("左边区间Введите левую границу интервала a:");
                scanf("%d",&ax);
                do
                {
                    printf("右边区间Введите правую границу интервала b, причём b > %d:",ax);
                    scanf("%d",&bx);
                }
                while (bx < ax);
                     //这里lambda表达式很烦,自己用循环实现去
                printf("Массив, сжатый удалением элементов, модуль которых находится в интервале [%d;%d]",ax,bx);
                for (i = 0; i < sizeof(a); ++i)
                    if (i == 0) printf("%d",a[i]);
                    else printf("\t%d" , a[i]);
     
     
                for (i = 0; i < n; i++)
                {
                    if (a[i] > max)
                    { max = a[i]; }
                }
                printf("最大数组元素Максимальный элемент массива: " + max);
                for (i = 0; i < n; ++i)
                    if (a[i] > 0)
                    {
                        elem = a[i];
                        k = i;
                    }
                if (elem <= 0) printf("没有正元素Положительных элементов в массиве нет!");
                else printf("最后一个正元素Последний положительный элемент в массиве:%d " , elem);
                for (i = 0; i < k; i++)
                    sum += a[i];
                printf("位于最后一个正元素之前数组的总和:%d " , sum);
                system("pause");
            }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月3日

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛