分享

NOIP普及组初赛阅读题(续):看最近六年不懂算法行不?

 长沙7喜 2018-04-16

阅读程序写结果(共题,每题分,共计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;

}

输出=




 NOIP 2017 复习专题
WELCOME

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约