在由n个整数元素组成的数组中,计算位于第一个和最后一个零元素之间的数组元素之和
#include <stdio.h>
int main()
{
int n;
// 输入数量
printf(" input n:");
scanf("%d", &n);
// 输入每个数字
int* arr = new int[n];
for (int i = 0; i < n; i++)
{
printf("input idx %d:", i);
scanf("%d", &arr[i]);
}
// 计算第一个和最后一个0元素之间的数组元素之和
int total = 0;
int firstZeroIdx = -1; // 第一个0元素的下标
int endZeroIdx = -1; // 最后一个0元素的下标
// 找到第一个0和最后一个0
for (int i = 0; i < n; i++)
{
if (arr[i] == 0)
{
if (firstZeroIdx < 0)
{
firstZeroIdx = i;
}
endZeroIdx = i;
}
}
printf("idx: start:%d, end:%d \n", firstZeroIdx, endZeroIdx);
// 有效的下标才计算
if (firstZeroIdx >= 0 && endZeroIdx >= 0)
{
for (int i = firstZeroIdx+1; i < endZeroIdx; i++)
{
total = total + arr[i];
}
}
else
{
// 无效下标
printf("err Idx!!! \n");
return;
}
// 打印结果
printf("total:%d", total);
}
#include <stdio.h>
#include <iostream>
using namespace std;
int fun(int *p,int n);
int main(){
int a[100],i = 0;
char c;
cout << "请输入一个数组用空格隔开: " << endl;
while(cin >> a[i++]){
c = getchar();
if(c == '\n'){
break;
}
}
printf("%d",fun(a,i));
return 0;
}
int fun(int *p,int n){
int i,a = 0,b = 0,sum = 0;
for(i = 0;i < n;i++){
if(p[i] == 0){
a = i;
break;
}
}
for(i = n-1;i >= 0;i--){
if(p[i] == 0){
b = i;
break;
}
}
for(i = a;i <= b;i++){
sum += p[i];
}
return sum;
}
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string>
#include<ctime>
#include<clocale>
using namespace std;
int n,a,s;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
if(i==1)s=a;
if(i==n)s=s+a;
}
cout<<s;
return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
int n;
std::cin >> n;
std::vector<int> array(n);
for (int i = 0; i < n; i++)
std::cin >> array[i];
auto itr1 = std::find(array.begin(), array.end(), 0);
auto itr2 = std::find(array.rbegin(), array.rend(), 0);
auto index1 = std::distance(array.begin(), itr1);
auto index2 = std::distance(itr2, array.rend());
int sum = 0;
for (int i = index1 + 1; i < index2; i++)
sum += array[i];
std::cout << sum << std::endl;
}