C语音,求整数1-100的累加值,但要求跳过所有个位为3的数,用FOR循环语句实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语音,求整数1-100的累加值,但要求跳过所有个位为3的数,用FOR循环语句实现相关的知识,希望对你有一定的参考价值。
#include<stdio.h>int main()int i;
int sum = 0;
for(i = 0;i <= 100;i++) //从1循环至100
if(i%10 == 3) //如果i除以10的余数为3,也就是个位数为3
continue; //继续下个循环,后面代码不执行,不能用break,否则此循环遇到个位数为3就不再执行
else //如果个位数不为3
sum += i; //把i的值加进sum里
printf("%d\n",sum);
return 0;
参考技术A 楼上的我想问,知道break表示什么??要是这样你后面就不会执行。 把break改成continue就可以搞定: #include<stdio.h>
void main()
int i,sum;
sum=0;
for(i=1;i<=100;i++)
if(i%10==3) continue;
sum=sum+i;
printf("%d ",i);
printf("%d ",sum);
参考技术B #include<cstdio>
void main(void)
int result=0;
for(int i=1;i<=100;i++)
if(i%10==3) //余数为3,不执行累加
continue;
else
result+=i;
printf("结果为:%d\n",result);
不懂再问哈 参考技术C 核心代码如下!for(i=1;i<=100;i++)if(k%10==3) break;else sum+=i; 参考技术D int num=0
for(int i=1;i<=100;i++)
num +=i
println("累加="num);
未排序数组中累加和为给定值的最长子数组长度
未排序数组中累加和为给定值的最长子数组长度
描述
给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度
输入描述:
第一行两个整数N, k。N表示数组长度,k的定义已在题目描述中给出
第二行N个整数表示数组内的数
输出描述:
输出一个整数表示答案
示例1
输入:
5 0
1 -2 1 1 1
输出:
3
#include<iostream>
#include<unordered_map>
using namespace std;
int getSubArray(int array[], int n, int k)
{
//key:和 value:当前位置索引
unordered_map<int, int> sum_index_map;
sum_index_map[0] = -1; //sum与k相等时,长度为索引差+1,所以初始value为-1
int sum = 0;
int maxLength = 0;
for(int i=0; i<n; ++i)
{
sum+=array[i];
int diff = sum - k;
if(sum_index_map.find(diff)!=sum_index_map.end())//这里sum-k其实也是和,若sum与k的差在表里存在,即可以减去之前的得到该和(差值)达到目标
{
int index = sum_index_map[diff];
maxLength = max(i-index,maxLength);//此时长度为当前索引位置减去之前和(差值)的索引位置
}
if(sum_index_map.find(sum)==sum_index_map.end()) //每次将表中没有存的和存入
{
sum_index_map[sum] = i;
}
}
return maxLength;
}
int main()
{
int n,k;
cin>>n>>k;
int array[n];
for(int i=0; i<n; ++i)
{
cin>>array[i];
}
int res = getSubArray(array, n, k);
cout<<res;
}
以上是关于C语音,求整数1-100的累加值,但要求跳过所有个位为3的数,用FOR循环语句实现的主要内容,如果未能解决你的问题,请参考以下文章