c语言suma是什么意思,sum在c语言里是什么意思

发布时间:2023-01-08

本文目录一览:

c语言程序

int suma=0,sumb=0,i,j;

第一种

for(i=1;i=100;i++){

suma=suma+i;

i=i+1;

sumb=sumb+i;

}

第二种

for(i=1;i=99;i=i+2){

suma=suma+i;

}

for(j=2;j=100;j=j+2){

sumb=sumb+j;

}

第三种

for(i=1;i=99;i=i+2){

suma=suma+i;

}

sumb=suma+50;

C语言求几个数和

没想到这道题还挺有难度的,看起来不怎么样,还花了我几小时时间。暂时写出一个程序,可以得出结果,但是不能给出两边的数如何分。等我想到再告诉楼主,下面是代码,经过很多组数据测试,均无问题:

#include iostream

using namespace std;

//冒泡排序,整理数组顺序

void mpSort(int* arr,int size)

{

bool flag = true;

for(int i = 0; i size -1; i++)

{

for(int j = 0; j size - 1 - i; j++)

{

if(arr[j] arr[j+1])

{

int tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

flag = false;

}

}

if(flag)

{

break;

}

}

}

//求数组所有数的和

int GetTotal(int* input, int size)

{

int total = 0;

for(int i = 0; i size; i++)

{

total += input[i];

}

return total;

}

//判断是否可以将数组最大数拆分成倒数第二个数以及另外一个数

bool divideNum(int* input, int size, int total)

{

//取一半值,如果是小数,取较大的整数

int half = total / 2;

if(half total/2.f)

{

half++;

}

//如果最后两个值不等于总和的一半,则返回真,表示允许拆分最大数

if(input[size-1] + input[size-2] != half)

{

return true;

}

return false;

}

//求最大积函数

int MaxSum(int* input, int size)

{

int SameSum = 0;

mpSort(input,size);

int total = 0;

int temp = 0;

while(size 2)

{

total = GetTotal(input,size);

//如果允许拆分最大数,则拆分

if(divideNum(input,size,total))

{

temp = input[size-1] - input[size-2];

SameSum += input[size-2];

input[size-2] = temp;

size--;

mpSort(input,size);

}

else

{

return (input[size-1]+input[size-2]+SameSum)*(total-input[size-1]-input[size-2]+SameSum);

}

}

return (input[0]+SameSum)*(input[1]+SameSum);

}

//用户输入

void GetInput()

{

int* input = new int[21]();

int index = 0;

cout"请输入数字,最后输入-1结束输入,要退出程序请直接输入-1:"endl;

while(true)

{

cininput[index++];

if(input[index-1] == -1)

{

if(index == 1)

{

exit(0);

}

break;

}

}

for(int i = 0; i index-1; i++)

{

coutinput[i]" ";

}

coutendl;

cout"最大乘积结果为:"MaxSum(input,index-1)endl;

delete[] input;

}

int main()

{

while(true)

{

GetInput();

}

return 0;

}

补充:

全排列是不可取的,你知道20个数全排列有多少种么?那绝对不是几分钟之内可以做出来的。我的程序哪里有问题呢,麻烦楼上指下。我已经测试过数据,不是空写的。

你说的不会是main函数里的参数吧?那个去掉就可以。我是在VC++里编译的。

C语言 输入10个数,统计正数,负数及零的个数并输出正数累加和与个数累加和

main()

{ int a,i,j,k,suma,sumb;

b=0;/*b用来统计输入数据的个数*/

i=j=k=0; /*i,j,k分别用来统计正数,负数和零的个数*/

suma=sumb=0; /*suma,sumb分别用来计算正数和负数的和*/

do{ /*循环体的内容是输入数据后,判断再累加*/

scanf("%d",a);

if(a0) {i++; suma+=a;} /*正数*/

else if(a0) { j++; sumb+=a; } /*负数*/

else k++; /*零*/

} while(++b10); /*循环控制10次*/

printf("zhengshu is %d ge ,the sum is %d\n",i,suma); /*输出*/

printf("fushu is %d ge ,the sum is %d\n",j,sumb);

printf("0 is %d ge \n",k);

}