c++初步探索

2022/3/20 14:27:58

本文主要是介绍c++初步探索,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!


输出 This is a C program.
//#include <stdio.h>                         //这是编译预处理指令
//int main()                                //定义主函数
//{                                        //函数开始的标志      
//    printf("This is a C program.\n");   //输出所指定的一行信息
//    return 0;                           //函数执行完毕时返回函数值0
//}                                       //函数结束的标志
//

//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//    int a = 0;
//    int b = 0;
//    int sum = 0;
//    printf("请输入a=");
//    scanf("%d", &a);   //&取上面定义的a
//    printf("请输入b=");
//    scanf("%d", &b);
//    sum = a + b;
//    printf("sum is %d\n", sum);
//    return 0;
//
//}


//-----------------------------------------------------------------------------------------------------------------------------------------


dfine定义函数      ?是判断 :是选择
//#define max(x,y) ((x)>(y)?(x):(y))
//#define  _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//
主函数
//int main()
//{
//    int a,b,c;
//    scanf("%d,%d", &a,&b); //scanf 中的输入格式应该严格按照字符顺序来,如有","则一定要加上","  (%d,%d)
//    c = max(a,b);
//    printf("max=%d\n", c);
//    printf("%d\n", a);
//    printf("%d", b);
//    return 0;
//}

//#define  _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//    int max(int x, int y);
//    int a, b, c;
//    printf("请输入a,b的值:");
//    scanf("%d,%d", &a,&b);
//    c = max(a, b);
//    printf("max is %d\n", c);
//    return 0;
//}
//int max(int x, int y)    //用c++的方式自行定义max函数
//{
//    int z=(0);
//        if (x > y)z = x;
//        else z = y;
//    return (z);          //将z的值作为max的函数值,返回到调用max函数的位置
//}

//#include<stdio.h>
//int main()
//{
//    int sign = 1;
//    double deno = 2.0, sum = 1.0, term;
//    while (deno <= 100)
//        {
//            sign = -sign;
//            term = sign / deno;
//            sum = sum + term;
//            deno = deno + 1;
//        }
//        printf("%f\n", sum);
//            return 0;
//}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

//字符输入输出函数    putchar--输出一个字符   getchar---输入一个字符
//#include <stdio.h>
//  int main()
//{

    putchar 输出
    //char a = 'B', b = 'O', c = 'Y';    //因为B的ASCII为66,O为79,C为89      故可以用  int a=66,b=79,c=89;  代替。
    //putchar(a);
    //putchar(b);
    //putchar(c);
    //putchar('\n');
    //
    //putchar('\'');
    //putchar('\015');   //015八进制等于13十进制 ,13是“回车”在ASCII代码
    //return 0;


    getchar 输入
    //char e, f, g;
    //e = getchar();
    //f = getchar();
    //g = getchar();           //输入完后需要按Enter键
    //putchar(e);
    //putchar(f);
    //putchar(g);
    //putchar('\n');
    //return 0;

//    //getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量。
//    putchar(getchar());
//    putchar(getchar());
//    putchar(getchar());
//    putchar('\n');
//    return 0;        //输入完在按Enter键
//
//}

//#include<stdio.h>
//int main()
//{
//    char c1, c2;
//    printf("这是大写的字母:");
//    c1 = getchar();
//    c2 = c1 + 32;        //在ASCII中大小写十进制表示:小写字符比大写的多32
//    printf("这是小写的字母:");
//    putchar(c2);
//    putchar('\n');
//    return 0;
//}


//-----------------------------------------------------------------------------------------------------------------------------------------


//求解二元一次方程组
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    double a,b,c,disc,x1,x2,p,q;
//    scanf("%f,%f,%f,",&a,&b,&c);
//    disc =b*b-(4*a*c);
//    if (disc < 0)
//        printf("此方程无解\n");
//    else
//    {
//        p = -b / (2.0 * a);
//        q = sqrt(disc) / (2.0 * a);
//        x1 = p + q; 
//        x2 = p - q;
//    }
//        printf("方程的两个根:\nx1=%7.2f\nx2=%7.2f\n", x1, x2);
//    return 0;
//}

//-----------------------------------------------------------------------------------------------------------------------------------------

//求解三角形面积
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    float a,b,c,d,S;
//    printf("请输入三角形的三个边长a,b,c\n");
//    scanf("%f,%f,%f", &a,&b,&c);
//    if ((a >= b + c )|| (b >= a + c) || (c >= a + b))
//    {
//        printf("三角形不成立,故无解");
//    }
//    else
//    {
//        d = (a + b + c) / 2;
//        S = sqrt(d * (d - a) * (d - b) * (d - c));
//        printf("三角形的面积为%1f\n",S);
//    }
//    return 0;
//}


//-----------------------------------------------------------------------------------------------------------------------------------------


// 求解两个数的最大公约数
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    int a, b, c,t;
//    printf("请输入两个正整数");
//    scanf("%d,%d", &a, &b);
//    if (a < b)
//    {
//        t = b;
//        b = a;
//        a = t;
//    }
//    do
//    {
//        c = a % b;
//        a = b;
//        b = c;
//    } while (c);
//    printf("最大公约数:%d\n", a);
//    return 0;
//}


//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//switch 的使用 (break)。

//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//    char grade;
//    printf("请输入你的成绩等级(例:A,B,C,D ):");
//    scanf("%c", &grade);      //char 字符变量
//    printf("Your score:");
//    switch (grade)                                        //switch接连在printf下面 , 没有换行符。
//    {
//    case'A': printf("85-100\n"); break;
//    case'B': printf("70-84\n"); break;
//    case'C': printf("60-69\n"); break;
//    case'D': printf("<60\n"); break;
//    default:printf("enter data error!\n");
//    
//    }
//    return 0;
//}

//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//    void action1(int, int), action2(int, int);                         //viod定义函数时不需要返回值,int定义函数时需要返回值(即需要return 0;)
//    char ch,sh;
//    int a, b; 
//    printf("请输入两个值:");
//    scanf("%d,%d", &a,&b);
//    printf("请选择你需要运算的类型:(A,a为加法/B,b为乘法)\n");
//    getchar();                                                                  //如果有换行符需要用gerchar吃掉,例如在scanf后面自动有一个换行符,在后面接getchar用来吃掉这个换行符。
//    ch = getchar();
//    printf("%c,%d,%d\n", ch,a,b);
//
//    switch(ch)
//        {
//        case'a':
//        case'A':action1(a, b); break;
//        case'b':
//        case'B':action2(a, b); break;
//        default:putchar('\a');
//        }
//    return 0;
//}
//    void action1(int x, int y)                 //int 与viod 函数定义对比 65行        
//    {
//        printf("x+y=%d\n", x + y);
//
//    }
//    void action2(int x, int y)
//    {
//        printf("x*y=%d\n", x * y);
//
//    }

//------------------------------------------------------------------------------------------------------------------------------

//for 语句的循环

 /*    for(i=1;i<=100;i++)                     i=1;
                             =====     while(i<=100)
                             =====        {
    sum=sum +i                              sum=sum+i;
                                          i++;
                                            }
 */                                     
// i=1;for(;i<=100;i++);  等效于 for(i=1;i<=100;i++)             
/*for里面有三个解析表达式.
* 若有循环变量i,则:省略发生
 表达式1可以被省略,但是没有对i循环变量赋值。
 表达式2可以被省略,但是此时表达式将无限循环下去。
 表达式3可以被省略,但是for循环可能无法停止。

 在for循环前后可以对i循环变量进行定义
  */

 //for(sum=0,i=1;i<=100;i++)sum=sum+i;
 //表达式1和表达式2都可以是逗号表达式,即包含一个以上的简单表达式
//表达式2可以是关系表达式,逻辑表达式,数值表达式,字符表达式。其值为非零。


//#include<stdio.h>
//int main()
//{   
//    
//    int i,c;
//    for (i=0; (c = getchar())!='\n';i+=c );                //不断输入字符,将他们的ASCII码相加,直到输入一个“换行符”为止。
//    return 0;
//}


//#include<stdio.h>
//int main()
//{
//    int c;
//    for (; (c = getchar())!='\n';)
//    printf("%c", c);
//    return 0;
//}

//------------------------------------------------------------------------------------------------------------------------------

//continue 的使用

//#include<stdio.h>
//int main()
//{
//    int n;
//    for (n = 100; n <= 200; n++)
//    {
//        if (n % 5 == 0)
//        {
//            printf("\n");
//        }
//        if (n % 5== 0)
//            continue;
//                //执行continue时会跳过printf  到右花括号}的前面  返回for循环
//        printf("%d\t", n);
//    }
//    printf("\n");
//    return 0;
//}
//


//--------------------------------------------------------------------------------------------------------------------------

//例子
// 
//求Π,格雷戈里公式

//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    int sign = 1;
//    double pi = 0.0, n = 1.0, term = 1.0;                                 // fab()函数为取绝对值函数
//    while (fabs(term) >= 1e-6)                                           //检查当前项term的绝对值是否大于或等于10负六次方
//    {
//        pi = pi + term;
//        n = n + 2;
//        sign = -sign;
//        term = sign / n;
//    }
//    pi = pi * 4;
//    printf("pi=%10.8f\n", pi);
//    return 0;
//
//}    


//------------------------------------------------------------------------------------------------------------------------------------------


//算法题 斐波那契数列

//方案一
#include<stdio.h>
//int main()
//{
//    int f1 = 1, f2 = 1,f3;
//    int i;
//    printf("%12d%12d", f1, f2);
//    for (i = 3; i <= 40; i++)
//    {
//        f3 = f1 + f2;
//        printf("%12d", f3);
//        f1 = f2;
//        f2 = f3;
//        if (i % 5 == 0)printf("\n");
//    }
//    return 0;
//} 


//方案二
//#include<stdio.h>
//int main()
//{
//    int f1 = 1, f2 = 1;
//    int i;
//    for (i = 1; i <= 20; i++)
//    {
//        printf("%12d%12d", f1, f2);
//        if (i % 2 == 0)printf("\n");
//        f1 = f1 + f2;
//        f2 = f2 + f1;
//
//    }
//    return 0;
//}

//-------------------------------------------------------------------------------------------------------------------------------------------------


//数组是一组有序数据的集合,数组中的每一个元素都属于同一种数据类型。     
//方括号[]中的数字来表示下标,如s[15]表示s中第15个。

//定义一维数组

//#include<stdio.h>
//int main()
//{                                            // int a[n];   是不合法的,数组的大小不作动态定义。
//    int i, a[10];                          //定义数组是由a[0]开始算第一个。
//    for (i = 0; i <= 9; i++)              //for循环中的表达式间隔用:分号!
//        a[i] = i;
//    for (i = 9; i >= 0;i--)
//        printf("%d\t", a[i]);
//    printf("\n");
//    return 0;
//}


//用数组求解斐波那契数列

//#include<stdio.h>
//int main()
//{
//    int i;
//    int f[20] = { 1,1 };                      //对最前面两个元素f[0]和f[1]赋初值1
//    for (i = 2; i < 20; i++)
//        f[i] = f[i - 2] + f[i - 1];           //先后求出f[2]-f[19]的值
//    for (i = 0; i < 20; i++)
//    {
//        if (i % 5 == 0)printf("\n");
//        printf("%12d", f[i]);
//
//    }
//    printf("\n");
//    return 0;
//}


//起泡法排序实现数组大小排列

//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//    int a[10];
//    int i, j, t;
//    printf("input 10 numbers:\n");
//    for (i = 0; i < 10; i++)
//        scanf_s("%d", &a[i]);                  //地址符&
//    printf("\n");                             //定义完成数组
//    for(j=0;j<9;j++)
//        for(i=0;i<9-j;i++)
//            if (a[i] > a[i + 1])
//            {
//                t = a[i];
//                a[i] = a[i + 1];
//                a[i+1] = t;
//            }
//    printf("the sorted numbers;\n");
//    for (i = 0; i < 10; i++)
//        printf("%-2d", a[i]);                    //printf输出时 %d 默认为左最齐 ,%-d改成右对齐
//    printf("\n");
//    return 0;
//}

//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    float C, F;
//    printf("请输入华氏温度:");
//    scanf_s("%f", &F);
//    C = (F - 32) * 5 / 9;
//    printf("对应的摄氏温度为:%f", C);
//    return 0;
//}


//pow函数的使用,是用来求x的y次方的

//#include <stdio.h>
//#include <math.h>
//void main()
//{
//    int x, y;
//    scanf_s("%d,%d",&x, &y);
//    int data = pow(x, y);
//    printf("%d", data);
//}


斐波那契数列求解
//#include <stdio.h>
//#include <math.h>
//
//int optimizeFibonacci(int first, int second, int n)
//{
//    if (n > 0) {
//        if (n == 1) {    // 递归终止条件
//            return first;       // 简单情景
//        }
//        else if (n == 2) {            // 递归终止条件
//            return second;      // 简单情景
//        }
//        else if (n == 3) {         // 递归终止条件
//            return first + second;      // 简单情景
//        }
//        return optimizeFibonacci(second, first + second, n - 1);  // 相同重复逻辑,缩小问题规模
//    }
//
//
//    return -1;             //用返回-1来表示失败
//}
//int main()
//{
//    int optimizeFibonacci( int first, int second, int n);            //调用函数optimizeFibonacci( int first, int second, int n)
//    int x,y,z,D;
//    printf("请输入斐波那契数列前两个数字以及第X所需要的数:\n");
//    scanf_s("%d,%d,%d", &x, &y, &z);
//    D= optimizeFibonacci(x,y,z);
//    printf("第X个数为:\n%d", D);
//    return 0;
//}


//求出3X4矩阵中最大元素的值,以其所在的行号和列号
//#include<stdio.h>
//int main()
//{
//    int i, j, row = 0, colum = 0, max;
//    int a[3][4] = { {1,2,3,4 }, {9,8,7,6},{ -10,10,-5,2 } };
//    max = a[0][0];                                                                  //先认为a[0][0]最大
//    for(i=0;i<=2;i++)
//        for(j=0;j<=3;j++)
//            if (a[i][j] > max)                                                     //如果某元素大于max,就取代max的原值
//            {
//                max = a[i][j];
//                row = i;                                                                        //行号        
//                colum = j;                                                                      //列号
//            }
//    printf("max=%d\nrwo=%d\ncolum=%d\n", max, row, colum);
//    return 0;
//}

//-----------------------------------------------------------------------------------------------------------------------------------------


//字符数组

//#include<stdio.h>
//int main()
//{                                                                                       //注意定义字符串的时候使用的是花括号{}
//    char c[15]={'I', ' ', 'L', 'o', 'v', 'e', ' ', 'Y', 'o', 'u', '.'};              //只有11给字符,但是剩下的自动填充成空字符'\0'(代表结束符)
//    int i,j;
//    for (i = 0; i < 15; i++)                                 //for循环后面若没有花括号{}就执行一个语句
//        printf("%c", c[i]);                                //用格式符"%c"输入或输出一个字符
//        printf("\n");
//    printf("%s\n", c);                                      //用格式符"%s"输入或输出一次字符串
//    printf("\n");      
//    return 0;
//}

//#include<stdio.h>
//int main()
//{
//    char str1[6],str2[6],str3[6];                                           //需要的数组大小比输入的字符大小 多一  因为最后一个需要放"\0"终止符
//    scanf_s("%s%s%s",str1,6,str2,6,str3,6);                                 //此处不需要加地址符 &    其中str,6中的6是用来指定缓冲区大小的参数,表示最多读取n-1个字符(4)
//    printf("%s%s%s\n", str1,str2,str3);
//    printf("%s\n",str1);
//    printf("%s\n",str2);
//    printf("%s\n",str3);                                                  //注意数组的大小,过小会导致内存越界
//    return 0;
//}


//#include<stdio.h>
//int main()
//{
//    int a[10][10],i,j;
//    
//    for (i = 0; i < 10; i++)
//    {
//        a[i][i] = 1;
//        a[i][0] = 1;
//    }
//    for (i = 2; i < 10; i++)
//        for (j = 1; j <= i - 1; j++)
//            a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
//    for (i = 0; i < 10; i++)
//    {
//        for (j = 0; j <= i; j++)
//            printf("%6d", a[i][j]);
//        printf("\n");
//    }
//    printf("\n\t程序结束");
//    return 0;
//    
//}


#include<stdio.h>
void main()
{
    int a[10][10];
    int i, j, k, n, m;

    for (i = 0; i < 10; i++)                   /*给备用的数组做初始化*/
    {
        for (j = 0; j < 10; j++)
            a[i][j] = 0;
    }

    k = 0;                                  /*限定输入的数必须满足要求*/
    while (k == 0)
    {
        printf("Please input a number as the value of n:(必须是10以内的奇数)\n");
        scanf("%d", &n);
        if (n % 2 != 0 && n > 0 && n < 10)
            k = 1;
        else
            k = 0;
    }

    i = 0;
    j = n / 2;
    a[i][j] = 1;
    for (m = 2; m <= n * n; m++)                  /*因为1已经放好了,所以我们从2开始放*/
    {

        if ((i == 0) && (j != n - 1))            /*算法中的第3步*/
        {
            i = n - 1;
            j = j + 1;
            if (a[i][j] == 0)                  /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = 1;
                j = j - 1;
                a[i][j] = m;
            }
        }

        else if ((i != 0) && (j == n - 1))      /*算法中的第4步*/
        {
            i = i - 1;
            j = 0;
            if (a[i][j] == 0)                /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = i + 1;
                j = n - 1;
                a[i][j] = m;
            }
        }

        else if ((i == 0) && (j == n - 1))       /*算法中的第5步*/
        {
            i = n - 1;
            j = 0;
            if (a[i][j] == 0)                 /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = 1;
                j = n - 1;
                a[i][j] = m;
            }
        }

        else                                 /*算法中的第6步*/
        {
            i = i - 1;
            j = j + 1;
            if (a[i][j] == 0)                 /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = i + 2;
                j = j - 1;
                a[i][j] = m;
            }
        }
    }

    printf("%d阶魔方阵:\n", n);
    for (i = 0; i < n; i++)                        /*输出数组*/
    {
        for (j = 0; j < n; j++)
        {
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }



这篇关于c++初步探索的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程