阅读程序写结果(共4 题,每题8 分,共计32 分) 不懂算法?跟踪变量!列表模拟! 遇到递归?画树形图!注意边界! 找到规律了?还会流程图?恭喜你,32分到手了! NOIP2014-1. #include using namespace std; int main() { int a, b, c, d, ans; cin>> a >> b >> c; d = a - b; //将a-b=-1赋值给d a = d + c; //将d+c=3赋值给a ans = a * b; //ans=a*b=3*3=9 cout<< 'Ans = ' << ans << endl; return 0; } 输入:2 3 4 输出: Ans=9 NOIP2014-2. #include using namespace std; int fun(int n) { if (n == 1) return 1; //边界fun(1)=1 if (n == 2) return 2; //边界fun(2)=2 return fun(n - 2) - fun(n - 1); } //fun(n)=fun(n-2)-fun(n-1) int main() { int n; cin >> n; cout << fun(n) << endl; //fun(7)=fun(5)-fun(6)=-11 return 0; } 输入: 7 输出: -11 NOIP2014-3. #include #include using namespace std; int main() { string st; int i, len; getline(cin, st); len = st.size(); for(i = 0; i < len; i++){ if (st[i] >= 'a' && st[i] <= 'z') st[i] = st[i] - 'a' + 'A'; } //如果字符串st中字母小写,则替换成大写 cout<< st << endl; return 0; } 输入: Hello, my name is Lostmonkey. 输出: HELLO, MY NAME IS LOSTMONKEY. NOIP2014-4. #include using namespace std; const int SIZE =100; int main() { int p[SIZE]; int n, tot, i, cn; tot= 0; cin>> n; for(i = 1; i <= n; i++) p[i] = 1; //p[1]-p[30]中所有元素赋值1 for(i = 2; i <= n; i++){ if (p[i] == 1) tot++; //计数 cn = i * 2; //找出2-30中所有2i while (cn <= n) { p[cn] = 0; cn += i; //找出2-30中所有3i } }//对2-30中素数计数,并输出个数 cout<< tot << endl; return 0; } 输入: 30 输出: 10 NOIP2015-1. #include using namespace std; int main() { int a, b, c; a = 1; b = 2; c = 3; if(a > b) //不符合循环条件,不执行 if(a > c) cout << a << ' '; else cout << b << ' '; cout << c << endl; return 0; } 输出: 3 NOIP2015-2. #include using namespace std; struct point { int x; int y; }; //声明结构体类型point int main() { int a, b, c; struct EX { int a; int b; point c; }e; //声明结构体类型EX e.a = 1; //结构体变量e中变量a e.b = 2; //结构体变量e中变量b e.c.x = e.a + e.b; //结构体变量e中的结构体变量c中的变量x e.c.y = e.a * e.b; //结构体变量e中的结构体变量c中的变量y cout << e.c.x << ','<< e.c.y << endl; return 0; } 输出: 3,2 NOIP2015-3. #include #include using namespace std; int main() { string str; int i; int count; count = 0; getline(cin, str); for(i = 0; i < str.length();i++) if(str[i] >= 'a' &&str[i] <= 'z') count++; //统计字符串中小写字母数量 cout << 'It has '<< count << ' lowercases' << endl; return 0; } 输入: NOI2016will be held in Mian Yang. 输出: It has 18 lowercases NOIP2015-4. #include #include using namespace std; void fun(char *a, char *b) { a = b; (*a)++; } //指针题 int main() { char c1, c2, *p1, *p2; c1 = 'A'; c2 = 'a'; p1 = &c1; p2 = &c2; fun(p1, p2); //p1=p2=&c2,把c2的地址赋值给指针变量p1 //p1++,则有&’a’+1=&’b’, 所以,c2=’b’, cout << c1 << c2<< endl; return 0; } 输出: Ab
NOIP2016-1. #include using namespace std; int main() { int max, min, sum, count = 0; int tmp; cin>> tmp; if(tmp == 0) return0; //如果输入的数字是0,程序退出 max= min = sum = tmp; count++; while(tmp != 0) { cin>> tmp; if(tmp != 0) { sum += tmp; //求和 count++;//计数 if(tmp > max) max = tmp; //找出最大值 if(tmp < min) min = tmp; //找出最小值 } } cout<< max << ',' << min << ','<< sum / count << endl; //输出“最大值, 最小值, 平均值” return 0; } 输入: 1 2 3 4 5 6 0 7 输出: 6,1,3
NOIP2016-2. #include using namespace std; int main() { int i = 100, x = 0, y = 0; while (i > 0) { i--; x = i % 8; if (x == 1) y++; } //统计1-100中有多少数是“8的倍数+1” cout << y << endl; return 0; } 输出: 13 NOIP2016-3. #include using namespace std; int main() { int a[6] = {1, 2, 3, 4, 5, 6}; int pi = 0; int pj = 5; int t , i; while(pi < pj) { t =a[pi]; a[pi]= a[pj]; a[pj]= t; pi++; pj--; } //把数组a[6]中的数字顺序颠倒过来 for(i = 0; i < 6; i++) cout<< a[i] << ','; cout<< endl; return 0; } 输出: 6,5,4,3,2,1, NOIP2016-4. #include using namespace std; int main() { int i, length1, length2; strings1, s2; s1= 'I have a dream.'; s2 = 'I Have A Dream.'; length1 = s1.size(); length2 = s2.size(); for (i = 0; i < length1; i++) if (s1[i] >= 'a' && s1[i]<= 'z') s1[i] -= 'a' - 'A'; //把s1里的小写字母全部换成大写 for (i = 0; i < length2; i++) if (s2[i] >= 'a' && s2[i]<= 'z') s2[i] -= 'a' - 'A'; //把s2里的小写字母全部换成大写 if (s1 == s2) cout << '=' < else if (s1 > s2) cout << '>' < else cout << '<' < return 0; } 输出: = |
|