zoukankan      html  css  js  c++  java
  • 经典算法(31~60)

    【程序31】
    题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
       判断第二个字母。

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     char c;
     6     cin>>c;
     7     switch(c)
     8     {
     9     case 'M':
    10         cout<<"Monday"<<endl;
    11         break;
    12     case 'T':
    13         cout<<"input another letter: ";
    14         cin>>c;
    15         if(c=='u')        cout<<"Tuesday"<<endl;
    16         else if(c=='h')        cout<<"Thursday"<<endl;
    17         break;
    18     case 'W':
    19         cout<<"Wendesday"<<endl;
    20         break;
    21     case 'F':
    22         cout<<"Friday"<<endl;
    23         break;
    24     case 'S':
    25         cout<<"input another letter: ";
    26         cin>>c;
    27         if( c=='a')        cout<<"Saturday"<<endl;
    28         else if( c=='u')        cout<<"Sunday"<<endl;
    29         break;
    30     default:
    31         cout<<"input error"<<endl;
    32         break;
    33     }
    34     system("pause");
    35     return 0;
    36 }

    ==============================================================
    【程序32】(TC中可以添加头文件“conio.h”,但VC中没有,只能手动添加textbackground())
    题目:Press any key to change color, do you want to try it. Please hurry up!

     1 #include<iostream>
     2 #include "windows.h"
     3 using namespace std;
     4 int textbackground(short iColor)
     5 {
     6     HANDLE hd = GetStdHandle(STD_OUTPUT_HANDLE);
     7     CONSOLE_SCREEN_BUFFER_INFO csbInfo;
     8     GetConsoleScreenBufferInfo(hd, &csbInfo);
     9     return SetConsoleTextAttribute(hd, (iColor<<4)|(csbInfo.wAttributes&~0xF0));
    10 }
    11 int main()
    12 {
    13     int color;
    14     char c;
    15     for( color=0; color<8; color++)
    16     {
    17         textbackground(color);
    18         cout<<"This is color "<<color<<endl;
    19         cout<<"Please press any key to continue."<<endl;
    20         cin>>c;
    21     }
    22     system("pause");
    23     return 0;
    24 }

    ==============================================================
    【程序33】(略)
    题目:学习gotoxy()与clrscr()函数 

    ==============================================================
    【程序34】
    题目:练习函数调用

     1 #include<iostream>
     2 using namespace std;
     3 void hello_world();
     4 void triple_hello_world();
     5 int main()
     6 {
     7     triple_hello_world();
     8     system("pause");
     9     return 0;
    10 }
    11 void hello_world()
    12 {
    13     cout<<"Hello World!"<<endl;
    14 }
    15 void triple_hello_world()
    16 {
    17     for(int i=0; i<3; i++)
    18         hello_world();
    19 }

    ==============================================================
    【程序35】(略)
    题目:文本颜色设置

    ==============================================================
    【程序36】
    题目:求100之内的素数 

     1 #include<iostream>
     2 #include"math.h"
     3 using namespace std;
     4 int test(int i);
     5 int main()
     6 {
     7     for( int i=2; i<100; i++)
     8     {
     9         if(test(i))
    10             cout<<i<<"  ";
    11     }
    12     system("pause");
    13     return 0;
    14 }
    15 int test(int i)
    16 {
    17     int max=(int)sqrt(i+1);
    18     for(int j=2; j<=max; j++)
    19     {
    20         if(i%j==0)
    21             return 0;
    22     }
    23     return 1;
    24 }

    ==============================================================
    【程序37】(冒泡排序)
    题目:对10个数进行排序

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5      int a[10];
     6      for(int i=0; i<10; i++)
     7          cin>>a[i];
     8      for(int i=0; i<9; i++)
     9      {
    10          for(int j=i+1; j<10; j++)
    11          {
    12              if(a[i]>a[j])
    13              {
    14                  a[i]=a[i]^a[j];
    15                  a[j]=a[i]^a[j];
    16                  a[i]=a[i]^a[j];
    17              }
    18          }
    19          cout<<a[i]<<" ";
    20      }
    21      cout<<a[9];
    22      system("pause");
    23      return 0;
    24 }

    ==============================================================
    【程序38】
    题目:求一个3*3矩阵对角线元素之和

     1 #include<iostream>
     2 #include<math.h>
     3 using namespace std;
     4 int main()
     5 {
     6     int a[3][3];
     7     int sum=0;
     8     for(int i=0; i<3; i++)
     9     {
    10         for(int j=0; j<3; j++)
    11         {
    12             cin>>a[i][j];
    13             if(i==j)        sum+=a[i][j];
    14         }
    15     }
    16     cout<<"sum="<<sum;
    17     system("pause");
    18     return 0;
    19 }

    ==============================================================
    【程序39】(复习数组及数组长度的获取)
    题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

     1 //加深对数组的理解
     2 #include<iostream>
     3 #include<math.h>
     4 using namespace std;
     5 int main()
     6 {
     7     int a[20]={1, 2, 3, 5, 8, 13, 21, 34, 55, 89};        //如果不指定大小,数组长度可以通过sizeof(a)/sizeof(a[0])得到,但最后添加后会溢出
     8     int insert;
     9     int length=10; //sizeof(a)/sizeof(a[0]);        
    10     cin>>insert;
    11     //cout<<sizeof(a)<<endl;
    12     if(insert>a[length-1])        a[length]=insert;
    13     else if(insert<a[0])
    14     {
    15         for( int j=length; j>0; j--)
    16         {
    17             a[j]=a[j-1];
    18         }
    19         a[0]=insert;
    20     }
    21     else
    22     {
    23         for(int i=0; i<length-1; i++)
    24         {
    25             if(insert>=a[i] && insert<=a[i+1])
    26             {   //插入,依次后移
    27                 for( int j=length; j>i+1; j--)
    28                 {    a[j]=a[j-1];
    29                    //cout<<"a["<<j<<"]="<<a[j]<<endl;
    30                 }
    31                 a[i+1]=insert;
    32                 break;
    33             }
    34         }
    35     }
    36     length++;
    37     for(int i=0; i<length; i++)
    38         cout<<a[i]<<" ";
    39     system("pause");
    40     return 0;
    41 }

    ==============================================================
    【程序40】(逗比了)
    题目:将一个数组逆序输出。

     1 //逗比算法
     2 #include<iostream>
     3 #include<math.h>
     4 using namespace std;
     5 int main()
     6 {
     7     int a[]={1,2,3,5,8,13,21,34,55,89};
     8     int length=sizeof(a)/sizeof(a[0]);
     9     cout<<"顺序: ";
    10     for(int i=0; i<length; i++)
    11         cout<<a[i]<<" ";
    12     for(int i=0; i<length/2; i++)
    13     {
    14         a[i]=a[i]^a[length-1-i];
    15         a[length-1-i]=a[i]^a[length-1-i];
    16         a[i]=a[i]^a[length-1-i];
    17     }
    18     cout<<endl<<"逆序: ";
    19     for( int i=0; i<length; i++)
    20         cout<<a[i]<<" ";
    21     system("pause");
    22     return 0;
    23 }
     1 //倒着输出不就行了
     2 #include<iostream>
     3 #include<math.h>
     4 using namespace std;
     5 int main()
     6 {
     7     int a[]={1,2,3,5,8,13,21,34,55,89};
     8     int length=sizeof(a)/sizeof(a[0]);
     9     cout<<"顺序: ";
    10     for(int i=0; i<length; i++)
    11         cout<<a[i]<<" ";
    12     cout<<endl<<"逆序: ";
    13     for( int i=0; i<length; i++)
    14         cout<<a[length-1-i]<<" ";
    15     system("pause");
    16     return 0;
    17 }

     ==============================================================

    【程序41】(复习static,静态局部变量,输出0 0 0,0 1 2) 
    题目:学习static定义静态变量的用法

     1 #include<stdio.h>
     2 void varfunc() 
     3 { 
     4 int var=0; 
     5 static int static_var=0; 
     6 printf("40:var equal %d 
    ",var); 
     7 printf("40:static var equal %d 
    ",static_var); 
     8 printf("
    "); 
     9 var++; 
    10 static_var++; 
    11 } 
    12 void main() 
    13 {int i; 
    14 for(i=0;i<3;i++) 
    15 varfunc(); 
    16 system("pause");
    17 } 

    ==============================================================
    【程序42】 (auto用于声明变量的生存期为自动,在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。输出2 3 4,1 1 1)
    题目:学习使用auto定义变量的用法

     1 #include "stdio.h" 
     2 void main() 
     3 {
     4     int i,num; 
     5     num=2; 
     6     for (i=0;i<3;i++) 
     7     { 
     8         printf("40: The num equal %d 
    ",num); 
     9         num++; 
    10         { 
    11              int num=1; 
    12             printf("40: The internal block num equal %d 
    ",num); 
    13             num++; 
    14         }         
    15     }
    16     system("pause");
    17 } 

    ==============================================================
    【程序43】 (static,输出 2 3 4,1 2 3)
    题目:学习使用static的另一用法。

     1 #include "stdio.h" 
     2 void main() 
     3 { 
     4     int i,num; 
     5     num=2; 
     6     for(i=0;i<3;i++) 
     7     { 
     8         printf("40: The num equal %d 
    ",num); 
     9         num++; 
    10         { 
    11             static int num=1; 
    12             printf("40:The internal block num equal %d
    ",num); 
    13             num++; 
    14         } 
    15     } 
    16     system("pause");
    17 } 

    ==============================================================
    【程序44】 (输出c=7)
    题目:学习使用external的用法。

     1 #include "stdio.h" 
     2 int a,b,c; 
     3 void add() 
     4 {  int a; 
     5   a=3; 
     6   c=a+b; 
     7 } 
     8 void main() 
     9 {  a=b=4; 
    10   add(); 
    11   printf("The value of c is equal to %d
    ",c); 
    12 } 

    ==============================================================
    【程序45】 (输出5050,和不加register没区别)
    题目:学习使用register定义变量的方法。

     1 #include "stdio.h" 
     2 void main() 
     3 { 
     4    register int i; 
     5   int tmp=0; 
     6   for(i=1;i<=100;i++) 
     7     tmp+=i; 
     8   printf("The sum is %d
    ",tmp); 
     9   system("pause");
    10 } 

    ==============================================================
    【程序46】
    题目:宏#define命令练习(1)

     1 #include "stdio.h" 
     2 #define TRUE 1 
     3 #define FALSE 0 
     4 #define SQ(x) (x)*(x) 
     5 void main() 
     6 { 
     7     int num; 
     8     int again=1; 
     9     printf("40: Program will stop if input value less than 50.
    "); 
    10     while(again) 
    11     { 
    12     printf("40:Please input number==>"); 
    13     scanf("%d",&num); 
    14     printf("40:The square for this number is %d 
    ",SQ(num)); 
    15     if(num>=50) 
    16         again=TRUE; 
    17     else 
    18         again=FALSE; 
    19     } 
    20     system("pause");
    21 } 

    ==============================================================
    【程序47】(不明白此处#define用法) 
    题目:宏#define命令练习(2)

     1 #include "stdio.h" 
     2 #define exchange(a,b) {  /*宏定义中允许包含两道以上命令的情形,此时必须在最右边加上""*/ 
     3   int t; 
     4   t=a; 
     5   a=b; 
     6   b=t; 
     7 } 
     8 void main(void) 
     9 { 
    10   int x=10; 
    11   int y=20; 
    12   printf("x=%d; y=%d
    ",x,y); 
    13   exchange(x,y); 
    14   printf("x=%d; y=%d
    ",x,y); 
    15 } 

    ==============================================================
    【程序48】
    题目:宏#define命令练习(3)

     1 #include<stdio.h>
     2 #define LAG > 
     3 #define SMA < 
     4 #define EQ == 
     5 int main() 
     6 { 
     7     int i=10; 
     8     int j=20; 
     9     if(i LAG j) 
    10         printf("40: %d larger than %d 
    ",i,j); 
    11     else if(i EQ j) 
    12         printf("40: %d equal to %d 
    ",i,j); 
    13     else if(i SMA j) 
    14         printf("40:%d smaller than %d 
    ",i,j); 
    15     else 
    16         printf("40: No such value.
    ");
    17     system("pause");
    18     return 0;
    19 } 

    ==============================================================
    【程序49】(关于本题的知识点亟待补充) 
    题目:#if #ifdef和#ifndef的综合应用。

     1 #include "stdio.h" 
     2 #define MAX 
     3 #define MAXIMUM(x,y) (x>y)?x:y 
     4 #define MINIMUM(x,y) (x>y)?y:x 
     5 void main() 
     6 { int a=10,b=20; 
     7 #ifdef MAX 
     8     printf("40: The larger one is %d
    ",MAXIMUM(a,b)); 
     9 #else 
    10     printf("40: The lower one is %d
    ",MINIMUM(a,b)); 
    11 #endif 
    12 #ifndef MIN 
    13     printf("40: The lower one is %d
    ",MINIMUM(a,b)); 
    14 #else 
    15     printf("40: The larger one is %d
    ",MAXIMUM(a,b)); 
    16 #endif 
    17 #undef MAX 
    18 #ifdef MAX 
    19     printf("40: The larger one is %d
    ",MAXIMUM(a,b)); 
    20 #else 
    21     printf("40: The lower one is %d
    ",MINIMUM(a,b)); 
    22 #endif 
    23 #define MIN 
    24 #ifndef MIN 
    25     printf("40: The lower one is %d
    ",MINIMUM(a,b)); 
    26 #else 
    27     printf("40: The larger one is %d
    ",MAXIMUM(a,b)); 
    28 #endif 
    29 } 

    ==============================================================
    【程序50】 (,以后补充)
    题目:#include 的应用练习

    ============================================================== 

    【程序51】 (输出为3 3,看注释)
    题目:学习使用按位与 & 。

     1 #include "stdio.h" 
     2 main() 
     3 { 
     4     int a,b; 
     5     a=077;                    //八进制077对应二进制是111111
     6     b=a&3; 
     7     printf("40: The a & b(decimal) is %d 
    ",b); 
     8     b&=7; 
     9     printf("40: The a & b(decimal) is %d 
    ",b); 
    10     system("pause");
    11 } 

    ==============================================================
    【程序52】 (输出63 63)
    题目:学习使用按位或 | 。

     1 #include "stdio.h" 
     2 main() 
     3 { 
     4     int a,b; 
     5     a=077;    
     6     b=a|3; 
     7     printf("40: The a & b(decimal) is %d 
    ",b); 
     8     b|=7; 
     9     printf("40: The a & b(decimal) is %d 
    ",b); 
    10     system("pause");
    11 } 

    ==============================================================
    【程序53】 (输出60 59)
    题目:学习使用按位异或 ^ 。

     1 #include "stdio.h" 
     2 main() 
     3 { 
     4     int a,b; 
     5     a=077; 
     6     b=a^3; 
     7     printf("40: The a & b(decimal) is %d 
    ",b); 
     8     b^=7; 
     9     printf("40: The a & b(decimal) is %d 
    ",b); 
    10     system("pause");
    11 } 

    ==============================================================
    【程序54】 (理解分析,学会构造,移位补充位知识不足)
    题目:取一个整数a从右端开始的4~7位。
    程序分析:可以这样考虑:
    (1)先使a右移4位。
    (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
    (3)将上面二者进行&运算。

     1 #include "stdio.h" 
     2 main() 
     3 { 
     4     int a,b; 
     5     a=0x9c;                  //a的值为十进制的156,十六进制9c
     6     //printf("%d
    ",a);        
     7     b=0xf;                    //b的值为十进制的15,十六进制f,低四位全为1
     8     //printf("%d
    ",b);
     9     a=a>>4;
    10     b=a&b;
    11     printf("%d
    ",b);
    12     system("pause");
    13 } 

    参考代码:

     1 #include<stdio.h>
     2 main() 
     3 { 
     4     unsigned a,b,c,d; 
     5     scanf("%o",&a); 
     6     b=a>>4; 
     7     c=~(0<<4); 
     8     printf("c=%x
    ",c);
     9     d=b&c; 
    10     printf("%o
    %o
    ",a,d); 
    11     system("pause");
    12 } 

    ==============================================================
    【程序55】 (输出-235 ffffff15)(值得思考)
    题目:学习使用按位取反~。

     1 #include "stdio.h" 
     2 main() 
     3 { 
     4     int a,b; 
     5     a=234; 
     6     b=~a; 
     7     printf("40: The a's 1 complement(decimal) is %d 
    ",b); 
     8     a=~a; 
     9     printf("40: The a's 1 complement(hexidecimal) is %x 
    ",a); 
    10     system("pause");
    11 } 

    (之后绘图的部分省略)

  • 相关阅读:
    【python 待做】
    【python 第13日】网络通信socket socketserver
    【python第11日】自动生成项目目录 安全插入本文件夹下文件,即使别人引用也可以
    【python 第12日】 except异常
    【python 第10日】打飞机的小游戏 pygame
    【python 第9日】上下文 类装饰器 元类 属性描述符扩展
    Python(2.7)-字符串
    Python(2.7)-字典(dict)
    Python(2.7)-列表(list)
    mysql linux centos yum 安装
  • 原文地址:https://www.cnblogs.com/anthozoan77/p/4032632.html
Copyright © 2011-2022 走看看