C++例题

1.整数反转输出

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n, _n, newname = 0;  // int取值范围:0 到 4294967295(232 - 1)
 6     cout << "请输入一个小于9位的数,我帮你输出倒数!" << endl;
 7     cin >>n;
 8     cout << n << "的倒数是:";
 9     do
10     {
11         _n = n % 10;
12         n /= 10;
13         cout << _n;
14     } while (n!=0);
15     cout << endl;
16     return 0;
17 }
复制代码

扩展:1000位以内的正整数的加法运算,见原文:https://zhidao.baidu.com/question/1820080074929553788.html

声明两个能容纳1000位十进制数的char型数组存储输入数字字符串,以长的做被加数和结果,短的长度控制加法循环次数。在加法过程中判断和处理进位。举例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "string.h"
int main(void){
    char a[1002]={'0'},b[1002]={'0'},*pl=a,*ps=b;
    int i,j,la,lb;
    while(1){//保证输入是正确的        
        printf("Input a & b(length<=1000)...\n");
        scanf("%[1234567890] %[1234567890]",a+1,b+1);//最前面留1位做进位
        if((la=strlen(a))<1002 && (lb=strlen(b))<1002)
            break;
        printf("Error, redo: ");
    }
    if(la<lb){//找出长的做被加数和结果
        ps=a,pl=b;
        j=la,la=lb,lb=j;
    }
    for(i=lb-1,j=la-1;i>0;i--,j--)//从末位向前对应加
        if((pl[j]+=ps[i]-'0')>'9')//某位>'9'则处理进位
            pl[j]-=10,pl[j-1]++;
    for(;j>0;j--)//若被加数有进位则继续做完
        if(pl[j]>'9')
            pl[j]-=10,pl[j-1]++;
    printf("The result is %s\n",pl[0]=='1' ? pl : pl+1);//有进位则第0位输出
    return 0;
}

2.星期

复制代码
 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int day;
 6     cout << "请在1~7之间输入一个代表星期的数:(1:星期一;2:星期二;3:星期三;4:星期四;5:星期五;6:星期六;7:星期天)";
 7     cin >> day;
 8     switch (day)
 9     {
10     case 1:
11         cout << "星期一"<<endl;
12     case 2:
13         cout << "星期二"<<endl;
14     case 3:
15         cout << "星期三"<<endl;
16     case 4:
17         cout << "星期四"<<endl;
18     case 5:
19         cout << "星期五"<<endl;
20     case 6:
21         cout << "星期六"<<endl;
22     case 7:
23         cout << "星期天"<<endl;
24     default:
25         break;
26     }
27 }
复制代码

3.在楼梯上打印笑脸

复制代码
 1 #include <stdio.h>
 2 int main()
 3 {
 4     int i, j;
 5     printf_s("\1\1\n");
 6     for ( i = 1; i < 11; i++)
 7     {
 8         for (j = 1; j <= i;j++) {
 9             printf_s("%c%c", 219, 219);  // ASCII码表里219代表“空格”
10         }
11     printf_s("\n");
12     }
13 }
复制代码

4.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析:规律为:11,2,3,5,8,13,21 ...

复制代码
 1 #include <stdio.h>
 2 int main()
 3 {
 4  long f1, f2;
 5  int i;
 6  f1 = f2 = 1;
 7  for (i = 1; i <= 20; i++)
 8  {
 9   printf("%12ld %12ld", f1, f2);
10   if (i % 2 == 0)  
11    printf("\n");/*控制输出,每行四个*/
12   f1 = f1 + f2;  /*前两个月加起来赋值给第三个月*/
13   f2 = f1 + f2;  /*前两个月加起来赋值给第三个月*/
14  }
15  return 0;
16 }
复制代码

5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

  程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。求其各位数字立方和

复制代码
 1 #include <stdio.h>
 2 int main()
 3 {
 4     int j, d, k,num;
 5     printf_s("所有的水仙数是:\n");//
 6     for (num = 100; num < 1000; num++) {
 7         j = num / 100;  /*分解出百位*/
 8         d = num / 10 % 10;  /*分解出十位*/
 9         k = num % 10;  /*分解出个位*/
10         if (num == j * j * j + d * d * d + k * k * k)
11         {
12             printf_s("%d ",num);
13         }
14     }
15     printf_s("\n");
16     return 0;
17 }
复制代码

6.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

  (1)用辗转相除法求最大公因数,

    辗转相除法:

      假设有两整数m和n:

      ①m%n得余数r

      ② 若r=0,则n即为两数的最大公约数

      ③ 若r≠0,则m=n,n=r,再回去执行①

      流程图为:

      

  (2)再用两数相乘再除以最大公因数来求最小公倍数。

复制代码
 1 #include <stdio.h>
 2 int main()
 3 {
 4  int m, n, r, a, b;
 5  int temp;
 6  printf_s("请输入两个数,我帮你输出最大公因数和最小公倍数:\n");
 7  scanf_s("%d %d",&m,&n);
 8  if (m<n)
 9  {
10   temp = m;
11   m = n;
12   n = temp;
13  }
14  a = m; b = n;
15  while (a % b != 0)
16  {
17   r = a % b;
18   a = b;
19   b = r;
20  }
21  printf_s("最大公因数%d,\n 最小公倍数%d \n", b,m*n/ b);
22  return 0;
23 }
复制代码
posted @   ꧁执笔小白꧂  阅读(310)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示