C 中的数组,添加对并比较以找到最大值
Arrays in C that adds pairs and compares to find the max
所以我写代码有问题。
我刚刚接触编程世界,我需要创建一个包含 2 到 20 个整数的数组,然后将第一个和最后一个整数相加以获得最大值;例如在这个 [23; 12; 78; 52; 76; 15; 21; 82; 64; 91],程序相加23 + 91,然后12 + 62,然后78 + 82,然后打印出最大和,只有输入的数组数量为偶数时才有效,如果为奇数则获胜没用。
请问代码是怎样的?
这是我目前能够编写的部分代码
int m, a[20], sum, K, temp;
printf("Enter size of array:\n");
scanf_s("%d", &m);
if (m > 20 || m < 2 || m % 2 != 0)
{
error_printf("Invalid input data");
WAIT_ANY_KEY
return 0;
}
for (int i = 0; i < m; i++) {
printf("Enter Number [%d] : ", i + 1);
scanf_s("%d", &a[i]);
if (a[i] > 1000 || a[i] < 0)
{
error_printf("Invalid Input data");
WAIT_ANY_KEY
return 0;
}
}
printf("\n The largest sum of pairs is : [%d]\n\n", max);
return 0;
}
如果有人能解释,我将不胜感激,而不是输入 10 个固定整数,我可以只输入数组中我想要的位数,以及如何确定总和并找到最大值。
谢谢
只是一个工作示例:
#include<stdio.h>
int printMatrix ( const char *d, int mtp[], int n ) {
printf ( "\n The matrix [ %s ] is : ", d );
for ( int i=0; i<n-1; i++ ) {
printf ( "%d - ", mtp[i] );
}
printf ( "%d", mtp[n-1] );
return 0;
}
int main () {
const int N = 20;
int max=0;
int n=0;
while ( n == 0 ) {
printf ( " Number of Items should be even, between 2 and 20\n" );
printf ( " Enter the number of items : " );
scanf ( "%d", &n );
if ( n>20 || n%2 != 0 || n<2 ) n = 0;
}
int M[N] = {0};
int mM[int(N/2)] = {0};
for ( int i=0; i<n; i++ ) {
printf ( "Enter Number [%d] : ", i+1 );
scanf ( "%d", &M[i] );
}
for ( int i=0; i<n/2; i++ ) {
mM[i] = M[i] + M[n-1-i];
}
for ( int i=0; i<n/2; i++) {
if (mM[i] > max) max = mM[i];
}
printMatrix ( "Starting ", M, n );
printMatrix ( "Couples Sum", mM, n/2 );
printf ( "\n The max is : [%d]\n\n", max );
return 0;
}
所以我写代码有问题。
我刚刚接触编程世界,我需要创建一个包含 2 到 20 个整数的数组,然后将第一个和最后一个整数相加以获得最大值;例如在这个 [23; 12; 78; 52; 76; 15; 21; 82; 64; 91],程序相加23 + 91,然后12 + 62,然后78 + 82,然后打印出最大和,只有输入的数组数量为偶数时才有效,如果为奇数则获胜没用。
请问代码是怎样的?
这是我目前能够编写的部分代码
int m, a[20], sum, K, temp;
printf("Enter size of array:\n");
scanf_s("%d", &m);
if (m > 20 || m < 2 || m % 2 != 0)
{
error_printf("Invalid input data");
WAIT_ANY_KEY
return 0;
}
for (int i = 0; i < m; i++) {
printf("Enter Number [%d] : ", i + 1);
scanf_s("%d", &a[i]);
if (a[i] > 1000 || a[i] < 0)
{
error_printf("Invalid Input data");
WAIT_ANY_KEY
return 0;
}
}
printf("\n The largest sum of pairs is : [%d]\n\n", max);
return 0;
}
如果有人能解释,我将不胜感激,而不是输入 10 个固定整数,我可以只输入数组中我想要的位数,以及如何确定总和并找到最大值。
谢谢
只是一个工作示例:
#include<stdio.h>
int printMatrix ( const char *d, int mtp[], int n ) {
printf ( "\n The matrix [ %s ] is : ", d );
for ( int i=0; i<n-1; i++ ) {
printf ( "%d - ", mtp[i] );
}
printf ( "%d", mtp[n-1] );
return 0;
}
int main () {
const int N = 20;
int max=0;
int n=0;
while ( n == 0 ) {
printf ( " Number of Items should be even, between 2 and 20\n" );
printf ( " Enter the number of items : " );
scanf ( "%d", &n );
if ( n>20 || n%2 != 0 || n<2 ) n = 0;
}
int M[N] = {0};
int mM[int(N/2)] = {0};
for ( int i=0; i<n; i++ ) {
printf ( "Enter Number [%d] : ", i+1 );
scanf ( "%d", &M[i] );
}
for ( int i=0; i<n/2; i++ ) {
mM[i] = M[i] + M[n-1-i];
}
for ( int i=0; i<n/2; i++) {
if (mM[i] > max) max = mM[i];
}
printMatrix ( "Starting ", M, n );
printMatrix ( "Couples Sum", mM, n/2 );
printf ( "\n The max is : [%d]\n\n", max );
return 0;
}