第五天-第七天

这几天都没有新的课程,都在讲解不同的题目以及重要的知识点,甚至昨天进行了一波残酷的测试,题目真的事不动声色,

动静则退,令人头皮发麻的题目,真的恐怖,差点掉坑

下面是这几天的练习题目

/*1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。
  完成*/
 /*int x, a, b, c, d, e;//
 cin >> x;//输入一个数
 if (x > 0 && x < 10)//如果是一位数,直接输出
  cout << x << endl;
 else if (x >= 10 && x < 100)//如果是两位数,求出个位十位,然后输出
 { 
  a = x / 10;
  b = x % 10;
  cout << a + 10 * b << endl;
 }
 else if (x >= 100 && x < 1000)//如果是三位数,求出个十百位,然后输出
 {
  a = x / 100;
  b = x / 10 %10;
  c = x % 10;
  cout << (a + 10 * b + 100 * c) << endl;
 }
 else if (x >= 1000 && x < 10000)//如果是四位数,求出个十百千位,然后输出
 {
  a = x / 1000;
  b = x / 100 % 10;
  c = x / 10 % 10;
  d = x % 10;
  cout << (a + 10 * b + 100 * c + 1000 * d) << endl;
 }
 else if (x >= 10000 && x < 100000)//如果是五位数,求出个十百千万位,然后输出
 {
  a = x / 10000;
  b = x / 1000 % 10;
  c = x / 100 % 10;
  d = x / 10 % 10;
  e = x % 10;
  cout << (a + 10 * b + 100 * c + 1000 * d+10000*e) << endl;
 }*/
 //2.计算1 + 2 + 3… + n的值,n是从键盘输入的自然数。
 /*int n,s=0;
 cin >> n;
 for (int i = 1; i <= n; i++)
 {
  s += i;//将i的值累加起来
 }
 cout << s << endl;*/
 //5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,
 //每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。
 /*int x5, x2, x1, x;
 for (x5 = 1; x5 <= 9; x5++)//50元的可能取法
 {
  for (x2 = 1; x2 <= 21; x2++)//20元的可能取法
  {
   for (x1 = 1; x1 <= 42; x1++)//10元的可能取法
   {
    for (x = 1; x <= 84; x++)//5元的可能取法
    {
     if (50*x5 + 20*x2 + 10*x1 +5* x == 500)//判断总的是否等于500
      cout << x5 << " " << x2 << " " << x1 << " " << x << endl;
    }
   }
  }
 }*/
 //6.求n以内(不包括n)同时能被3和7整除的所有自然数之和的平方根s,
  //n从键盘输入。例如若n为1000时,函数值应为:s = 153.909064。
 /*int n,t=0;
 double s;
 cin >> n;
 for (int i = 21; i < =n; i++)//最小的值为3*7,一直循环到n
 {
  if (i % 3 == 0 && i % 7 == 0)
  {
   t += i;
  }
 }
 s = sqrt(t);
 printf("%.6lf\n", s);*/
 /*7.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,
  只记下车号的一些特征。甲说:牌照的前两位数字是相同的;
  乙说:牌照的后两位数字是相同的,但与前两位不同;
  丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。*/
 /*int x, y,k,i;//x和y分别代表前两个和后两个的值
 for (x = 0; x < 10; x++)
 {
  for (y = 0; y < 10; y++)
  {
   if (x != y)//与前两位不同
   {
    k = x * 1000 + x * 100 + 10 * y + y;//求出总的可能的数出来
    for (i = 3; i*i <= k; i++)//最小的数为0011,最大为k
    {
    //判断是否满足
     if (i*i == k)
     {
      cout << k << endl;
     }
    }
   }
  }
 }*/
 //8.输入1~10之间的一个数字,输出它对应的英文单词。
 /*int x;
 cin >> x;//输入x的值,判断x
 switch (x)
 {
 case 1:
  cout << "one" << endl;
  break;
 case 2:
  cout << "two" << endl;
  break;
 case 3:
  cout << "three" << endl;
  break;
 case 4:
  cout << "four" << endl;
  break;
 case 5:
  cout << "five" << endl;
  break;
 case 6:
  cout << "six" << endl;
  break;
 case 7:
  cout << "seven" << endl;
  break;
 case 8:
  cout << "eight" << endl;
  break;
 case 9:
  cout << "nine" << endl;
  break;
 case 10:
  cout << "ten" << endl;
  break;
 }*/
//9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些?
  /*int x,y,s;
  for (x = 1; x <= 9; x++)//百位
  {
   for (y = 0; y <= 9; y++)//十位
   {
    s = x * 100 + y * 10 + 6;//个位数已经固定为6
    if (s % 3 == 0 && s % 5 != 0)
     cout << s << '\t';
   }
  }
  cout << endl;*/
//10.用自然语言描述程序逻辑如下,试写程序。
//① 设置环境;
//② 定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0;
//③ i = 1;
//④ 如果i≤100,则转⑤,否则转⑧;
//⑤ 令s = 0,求前i个自然数之和,并放于变量s之中;
//⑥ sum = sum + s;
//⑦ i增加1,转④;
//⑧输出和sum,结束。
 /* int  i, j, s,sum=0;
  for (i = 1; i <= 100; i++)
  {
   s = 0;
   s += i;
   sum = sum + s;
  }
  cout << sum << endl;
*/
//11.用自然语言描述的程序逻辑为:
//① 设置环境;
//② 定义变量i、flag和password,并令flag = 0,i = 0;
//③ 用户回答口令,将其赋于password变量;
//④ 口令正确?如果是,则flag = 1,转⑥。否则转⑤;
//⑤ 回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥;
//⑥ 根据flag之值输出相应信息。
  /*int i, flag = 0, password;
  for (i = 0; i < 3; i++)
  {
   cin >> password;
   if (password == 100)
   {
    flag = 1;//flag标记
    break;
   }
   else
    continue;
  }
  if (flag==1)
  cout << "回答正确" << endl;*/
  
//12.用自然语言描述的程序逻辑如下:
//① 设置环境;
//② 定义变量digit、x、y分别表示原始数的个位、原始数数和逆数;
//③ 输入原始正整数x;
//④ 从x中分解出个位数字digit;
//⑤ 合并个位digit至逆数y中;
//⑥ 原始数x缩小10倍:x = x / 10;
//⑦ 如果x非零,则转④;
//⑧ 输出逆数y,结束
 /* int digit, x, y=0;
  cin >> x;
  while(x)
  {
  digit = x % 10;
  y += digit;
  x = x / 10;
  }
  cout << y << endl;*/
//13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。
 /*int a, b, c;
 cout << "请输入三角形的三条边" << endl;
 cin >> a >> b >> c;
 if ((a + b) > c || (a + c)>b || (b + c)>a)//两边大于第三边则为三角形
 {
  if (a == b && b == c && a == c)//三边相等为等边三角形
  {
   cout << "三角形为等边三角形" << endl;
  }
  else if (a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b)//勾股定理
  {
  cout << "三角形为直角三角形" << endl;
  }
  else if (a == b || a == c || b == c)//两边相等为等腰三角形
  {
   cout << "三角形为等腰三角形" << endl;
  }
  else
  {
   cout << "三角形为任意三角形" << endl;
  }
}*/
//14.输入10个数,分别统计其中正数、负数、零的个数。
 // int x,a=0,b=0,c=0;//a,b,c分别表示正负零的个数
 // for (int i = 0; i < 10; i++)
 // {
 //  cin >> x;
 //  if (x>0)a++;//统计正数
 //  else if (x < 0)b++;//统计负数
 //  else if (x == 0)c++;//统计0的个数
 // }
 // cout << a << b << c << endl;
 //return 0;
//15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)
          /*srand(time(NULL));
            int i,x,a[100];
   for (i = 0; i < 100; i++)
   {
    a[i] = rand() % 900 + 100;//产生随机数
    cout << a[i] << " ";//存入数组a[100]中
   }
   cout << endl;
   for (i = 0; i < 100; i++)
   {
    if (a[i] % 3 == 0 && a[i] % 5 == 0 && a[i] % 7 == 0)//判断是否满足3、5、7倍数的数
    {
     cout << a[i] << '\t';
    }
   }
   cout << endl;*/
//16.用for编程找出100~200中的完全平方数。
 /*for (int i = 100; i <= 200; i++)//在100-200中查找
 {
  for (int j = 10; j <= 14; j++)//开平方在100-200中最小的为10-14
  {
   if (j*j == i)判断是否相等
    cout << i << '\t';
  }
 }
 cout << endl;*/
//17.从终端输入三个正实数,判断这三个数能否构成直角三角形
 /*double a, b, c;
 cin >> a >> b >> c;//a,b,c分别代表三角形的三条边
 if (a + b > c || a + c > b || b + c > a)
 {
  if (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a)
   cout << "可以构成一个直角三角形" << endl;
  else
  {
   cout << "不能够成一个直角三角形" << endl;
  }
 }*/
//23.若ax2 + bx + c = 0有实根,则求之。
  /*double x1, x2, t, a, b, c;
  cin >> a >> b >> c;//输入a,b,c的值
  t = b*b - 4 * a*c;
  if (t == 0)判断b*b - 4 * a*c,等于0有两个相等的实根,大于0有两个不同的实根;
   x1 = x2 = -b / 2 * a;
  else if (t > 0)
  {
   x1 = -b / 2 * a + sqrt(t) / 2 * a;
   x2 = -b / 2 * a - sqrt(t) / 2 * a;
  }
  cout << x1 << '\t' << x2 << endl;*/
//33.“百钱百鸡”问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何?
  //int x, y, z;//x代表鸡翁,y代表鸡母,z代表鸡雏
  //for (x = 0; x <= 33; x++)//x取得的范围
  //{
  // for (y = 0; y <= 50; y++)//y取得的范围
  // {
  //  for (z = 0; z <= 300; z++)z取得的范围
  //  {
  //   if (x + y + z == 100 && 3 * x + 2 * y + z/ 3   == 100 && z%3==0)//z必须的3的倍数
  //    cout << x << '\t' << y << '\t' << z << endl;
  //  }
  // }
  //}
//34.有三个小孩,一个比一个大2岁,已知其年龄之和为39,问这三个小孩各几岁?
 /* int a, b, c;//a,b,c分别代表三个小孩的年龄
  for (a = 1; a < 20; a++)
  {
   for (b = 1; b < 20; b++)
   {
    for (c = 1; c < 20; c++)
    {
     if (  a==b+2 && a==c+4 && a + b + c == 39)//一个比一个大2岁,年龄之和为39
      cout << c << '\t' << b << '\t' << a << endl;
    }
   }
  }*/
//36.计算:1 / 2 + 1 / 4 + …… + 1 / n,设n是由键盘输入的正偶数。
  /*int n,i;
  cin >> n;
  double s = 0;
  for ( i = 2; i <= n; i =i+2)//正偶数要加2
  {
   s = s+(double)1/i;//输出结果为double类型
  }
  cout << s << endl;*/
//37.计算:1 / 1 + 1 / 3 + …… + 1 / n,设n是由键盘输入的正奇数。
  /*int n, i;
  cin >> n;
  double s = 0;
  for (i = 1; i <= n; i = i + 2)//初值为1,按奇数递增
  {
   s = s + 1.0 / i;
  }
  cout << s << endl;*/
//38.计算:1 / 2 - 2 / 3 + 3 / 4 - 4 / 5……,前100项。
   /*int a , b ,i;//a代表分子,b代表分母;
   double s = 0;
   for (a = 1, b = 2, i = 0; i < 100; i++,a++,b++)
   {
    s +=(double)a / b;//求出总和
   }
   cout <<s<< endl;*/
//39.从终端输入3个数a、b、c,按从大到小的顺序输出。
  /* int a, b, c,t;
   cin >> a >> b >> c;
   if (a < b)//比较a和b的大小,并交换
   {
    t = a;
    a = b;
    b = t;
   }
   if (a < c)//比较a和c的大小,并交换
   {
    t = a;
    a = c;
    c = t;
   }
   if (b < c)//比较b和c的大小,并交换
   {
    t = b;
    b = c;
    c = t;
   }
   cout << a << " " << b << " " << c << endl;*/
//40.公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,
//要么总是说谎的。在回答公安人员的问题中:甲说“乙没有偷,是丁偷的”,  乙说“我没有偷,是丙偷的”,
//丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。请根据这四人的答话判断谁是盗窃者。
  /* int a, b, c, d;
   for ( a = 0; a <= 1; a++)
   {
    for ( b = 0; b <= 1; b++)
    {
     for ( c = 0; c <= 1; c++)
     {
      for (d = 0; d <= 1; d++)
      {
      }
     }
    }
   }*/
   
//41.求s = a + aa + aaa + aaaa + ...... + aa...a的值,其中a是1~9之间的一个数字,
//表达式项数从键盘输入(设不超过10项)。例如2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),
//几个数相加由键盘控制。
   //int a,i,n;
   //int s = 0,t=0;
   //cin >> a >> n;
   //for (i = 1; i <= n; i++)//n表示次数
   //{
   // s = s * 10 + a;//公式为a+10*a+a+10*(10*a+a)+a
   // t += s;//t来统计总的和
   //}
   //cout << t << endl;
//42.设N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。
//例如:1234的反序数是4321。
  /* int N,x;
   for (N = 1000; N < 10000; N++)//大于1000和小于10000表示四位数
   {
              x = 9 * N;
   if (N / 1000 == x % 10 && N / 100 % 10 == x / 10 % 10 && N / 10 % 10 == x / 100 % 10 && N % 10 == x / 1000)//判断拆开后的千位等于个位,百位等于十位,十位等于百位,个位等于千位
    cout << N << endl;
   }*/
//43.爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,
//则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。
//请问这条阶梯至少有多少阶?
   /*int x=0;
   for (x = 0;;x++)//从0开始判断
   {
    if (x % 2 == 1 && x % 3 == 2 && x % 5 == 4 && x % 6 == 5 && x % 7 == 0)//判断是否满足
    {
     cout << x << endl;
     break;
    }
   }*/ 
//48.求1 + 12 + 123 + ……前n项之和,其中n是从键盘输入的一个数字(1~9)。
   /*int n,s=0,t=0,sum=0;
   cin >> n;
   for (int i = 1; i <= n; i++)//n表示循环的次数
   {
    t = s * 10 + i;//t用来统计每次得到的结果
    s = t;
    sum += s;//sum来表示总的结果
   }
   cout << sum << endl;*/
//49.小学生智商测试。让电脑随机出十道100以内整数的加法题(10分 / 题),
//小学生从键盘回答答案,统计小学生最后得分。
  //srand(time(NULL));随机种子,确保每次随机的数字不同
  //int a, b,c,count=0,d=0;//a,b代表加数,c代表小学生输入的数
  //while (1)
  //{
  //a = rand() % 100;//随机100之内的数
  //b = rand() % 100;
  //if (a + b < 100)//总数小于100可以继续下面的才做
  //{
  // d++;//用来统计几道题
  // cout << a << "+" << b << "=";
  // cin >> c;
  // if (a + b == c)//答对了,次数++
  // {
  //  count++;
  // }
  //}
  //else//else进行下一次循环
  // continue;
  //if (d > 9)//d的次数为10,输出总分,跳出循环
  //{
  // cout << "总分为:"<<count * 10 << endl;
  // break;
  //}
  //}
//50.斐氏数列是公元13世纪数学家斐波拉契发明的。即:1,2,3,5,8,13,21,34,55,89,……,输出其前15项。
  /*int i,x1=1,x2=2,s;//x1,x2表示第一和第二两个数
  cout << x1 << "," << x2 << ",";
  for (i = 3; i <=15; i++)//统计第三位到第15的数
  {
   s = x1 + x2;
   if (i == 15)
   {
    cout << s << endl;
   }
   else
   {
    cout << s << ",";
   }
   //交换变量,求出其他的数
   x1 = x2;
   x2 = s;
  }*/

猜你喜欢

转载自www.cnblogs.com/1448560633yang/p/11221984.html