我是靠谱客的博主 甜蜜砖头,这篇文章主要介绍NOIP 普及组 2011 阅读程序写结果题,现在分享给大家,希望可以做个参考。

2011题目一

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream> using namespace std; int main(){ int i,n,m,ans; cin>>n>>m; i=n; ans=0; while(i<=m){ ans+=i; i++; } cout<<ans<<endl; return 0; }

输入:10 20
输出:165

解析:
本题主要考察了while循环

n的值是10,m的值是20,当i小于20的时候,每次用ans来计算求和,用i++来计算循环次数
循环判断时i的值为: 10 11 12 13 14…20
每次while循环后i的值是: 11 12 13 14 15…21
每次while循环后ans的值是: 10 21 33 46 60…165
其实根据上面的变化规律就能看出ans的值为之前值的和,33是21+10,46是33+21+10

2011题目二

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream> #include<string> using namespace std; int main(){ string map= "2223334445556667778889999"; string tel; int i; cin>>tel; for(i=0;i<tel.length();i++) if((tel[i]>='0') && (tel[i]<='9') ) cout<<tel[i]; else if( (tel[i]>='A') && (tel[i]<='Z')) cout<<map[tel[i]-'A']; cout<<endl; return 0; }

输入: CCF-NOIP-2011
输出:223 6647 2011

解析:
本题主要考察了for循环,if条件判断,逻辑运算

tel字符串赋值为CCF-NOIP-2011,字符串的长度为13,
if((tel[i]>=‘0’) && (tel[i]<=‘9’) ) 表明了字符串里的值在字符0-9之间有2011,因此最后输出了2011
if( (tel[i]>=‘A’) && (tel[i]<=‘Z’)) 满足这个的字符有CCF和NOIP
map[tel[i]-‘A’] 输出了map[]数组中下标为C-‘A’ …P-'A’的值
数组下标分别为 2、2、5、13、14、8、15
对应字符串的值为 2、2、3、6、 6、 4、 7

2009题目三

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream> #include<cstring> using namespace std; const int SIZE = 100; int main(){ int n,i,sum,x,a[SIZE]; cin>>n; memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x; a[x]++; } i=0; sum=0; while(sum<(n/2+1)){ i++; sum+=a[i]; } cout<<i<<endl; return 0; }

输入:11
输入:4 5 6 6 4 3 3 2 3 2 1
输出: 3

解析:
主要考察for循环

n = 11,p = 2; s = 0;t=1;
外层for循环一共循环10次,里层for循环一共循环1 ,2,3…10次
每次的变化如下:
t = 1 * 2 % 2009 = 2 S = 2 % 2009 = 2
t = 2 * 2 % 2009 = 4 S = 6 % 2009 = 6 S =10 % 2009 = 10

每次 for循环中 t 的值分别为:2、4、8、16、32、64、128、256、512、1024、39
这里%的优先级比 * 高
每次 for循环后 s 的值分别为:2、10、34、98、258、642、1538、1577、158、353、782

2011题目四

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream> using namespace std; int solve(int n,int m){ int i,sum; if(m==1) return 1; sum=0; for(i=1;i<n;i++) sum+= solve(i,m-1); return sum; } int main(){ int n,m; cin>>n>>m; cout<<solve(n,m)<<endl; return 0; }

输入:7 4
输出:20

解析:
主要考察

最后

以上就是甜蜜砖头最近收集整理的关于NOIP 普及组 2011 阅读程序写结果题的全部内容,更多相关NOIP内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部