首页 > 技术文章 > C语言基础学习笔记

wangdachui-luoruhua 2020-08-15 14:17 原文

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdbool.h>
int main()
{
//    //1
//    printf("hello World!\n");
//    printf("%d\n",100+2);    
//    printf("22+5=%d\n",22+5);
     
    
//     //2
//    int price=0;
//    printf("请输入一个正整数 :");
//    scanf("%d" , &price);    //scanf函数里面后面的变量前面需要加&;
    
//    int change = 100 - price;
//    printf("找您%d元。\n",change);
    
    
//    //3
//    int m;    //需要初始化,不然值不确定
//    int l;
//    l=m+10;
//    printf("%d\n",l);
    
      
//    //4
//    const int AMOUNT =100;    //const 只读变量不能被修改
//    int price = 0;
//    printf("%d", AMOUNT);
    
    
//    //5
//    int foot;
//    int inch;
//    
//    scanf("%d %d",&foot,&inch) ;    //scanf()格式化那部分不需要逗号分隔
//    printf("%d %d",foot, inch) ;
//    
//    printf("身高是%f米。\n",(foot+inch/12)*0.3048);        //    inch/12为整型数,只取得整数部分,结果有误差
//    printf("身高是%f米。\n",(foot+inch/12.0)*0.3048);    //    inch/12.0为浮点数,即小数。scanf()中通配符为lf。


//    //6        表达式
//    int a = 9;
//    int b = 0;
//    int t;
//    t = a;
//    a = b;
//    b = t;
//    printf("a=%d, b=%d",a,b);


    //7
//    int a = 9;
//    printf("a++=%d\n",a++);
//    printf("a=%d\n",a);
    
//    printf("++a=%d\n",++a);
//    printf("a=%d\n",a);
    
    
    //8
//    int b;
//    int i;
//    printf("输入初始和结束时间,用空格隔开:");
//    scanf("%d  %d",&b,&i);
//
//    printf("%d %d\n",b,i);
//    if(b>2400)
//    {
//        return 1;
//
//     } else
//     {
//         int h = b/100;
//         int m = b%100;
//         int e = (m+i);
//         if(e<0)
//         {
//             m=e%60+60;
//             h=h+e/60-1;
//             e=h*100+m;
//         }else
//         {
//             m=e%60;
//             h=h+e/60;
//             e=h*100+m;
//         }
//         printf("结束时间:%d",e);
//      }
    
    
    //9
//    printf("%d\n",5<=6);     //1代表true,0代表false
//    printf("%d\n",7>=3+4);     //关系运算符比算术运算符优先级低
//    int r;
//    printf("%d\n", r=7>5);    //关系运算符比赋值运算符优先级高


    //10
//    int a, b;
//    printf("请输入两个整数:");
//    
//    scanf("%d %d",&a,&b);
//    int max;
//    if(a>b)
//    {
//        max=a;
//    }else
//    {    
//        max=b;
//    }        
//    printf("大的数为: %d\n", max);
    
    
    //11
//    const double RATE = 8.25;
//    const int STANDARD = 40;
//    double pay = 0.0;
//    int hours;
//    
//    printf("请输入工作的小时数:");
//    scanf("%d", &hours);
//    if (hours > STANDARD)
//        pay = STANDARD * RATE +
//        (hours-STANDARD) * (RATE * 1.5);
//    else
//        pay =hours * RATE;
//    printf("应付工资 %f\n", pay);
    
    
    //12
/*    int type = 2 ;
    switch(type) {
        case 1:
            printf("你好");
            break;
        case 1+1:
            printf("hello");
            break;
        case 3:
            printf("salaheiyou");
            break;
        default:
            printf("1");
            break;
        
    } */

    
    //13
//    while(){    //先判断再处理
//    }
//    
//    do{            ///先处理再判断;
//    }while();
    
    
    //14
    //1)
//    srand(time(0));
//    int num = rand();
//    num = num%100+1;
//    int count = 0;
//    int img = 0;
//    printf("猜一个100以内的数:\n");
//    do{
//        scanf("%d", &img);
//        count++;
//        if(img!=num){
//            if(img>num){
//                printf("猜大了\n"    );
//            }else{
//                printf("猜小了\n"    );
//            }
//        }else{
//            printf("猜对了,你猜了%d次\n",count);
//            break;
//        }    
//    }while (1);
    
    
    //2)
//    srand(time(0));
//    int a = rand();
//    a = a%100+1;
//    int count = 0;
//    int img = 0;
//    printf("猜一个100以内的数:\n");
//    do{
//        scanf("%d",&img);
//        count++;
//        if(img>a){
//            printf("猜大了\n");
//        }else if(img<a){
//            printf("猜小了\n");
//        }
//    }while(img!=a);
//        printf("恭喜你猜了%d次猜对了",count);
    
    
    //15
//    int count = 0;
//    int sum = 0;
//    int num = 0;
//    do{                                        
//        scanf("%d",&num);
//        if (num!=-1){
//            count++;
//            sum+=num;
//        }
//    }while(num!=-1);
//    printf("输入%d个数,平均数为%f",count,1.0*sum/count);
    
    
    //16        数字倒置
//    int num ;
//    int a = 0;
//    scanf("%d", &num);    
//    
//    while(num>0){
//        int t=num%10;
//        num=num/10;
//        a=a*10+t;
//    }
//    printf("倒置:%d\n",a);  
    
    
//    char l;
//    scanf("%d", l);
//    char m;
//    while(l!=''){
//        
//    }
    
    
    //17    求阶乘
//    int n;
//    printf("请输入一个正整数:");
//    scanf("%d", &n);
//    int r=1;
//    int i = 1;
//    for (i=1; i<=n; i++){
//        r *= i;
//    }
//        while(i<=n){
//        r*=i;
//        i++;
//    }
//    printf("%d!=%d\n",n,r);

    //改造                             //固定次数,用for
//    i=n;                            //必须执行一次,用do_while                    
//    for(; n>1;n--){                    //其他情况用while
//        r *= n;
//    }
//    printf("%d!=%d\n",i,r);
    

    //18 求素数
//    int x;
//    scanf("%d",&x);
//    int i;
//    for(i = x/2; i>1; i--){
//        if(x%i==0){
//            printf("%d不是
//            素数", x);
//            return 0;    
//        }
//    }
//    printf("%d是素数", x);
    
    //求100以内的素数;
//    int i;
//    printf("100以内的素数为:");
//    for(i=1; i<=100; i++){
//        int r;
//        int fl=0;
//        for(r = i/2; r>1; r--){
//            if(i%r==0){
//                fl=1;
//                break;
//            }
//        }
//        if(fl==0){
//            printf("%d ",i);
//        }    
//    }
    
    
    //19
//    double sum;
//    int i;
//    double sign = 1.0;
    //求1+1/2+1/3+1/4+......+1/1000
//    for(i=1; i<=1000; i++){
//        sum+=(sign/i);
//    }
    
    //求1-1/2+1/3-1/4+......-1/1000
//    for(i=1; i<=1000; i++){
//        sum+=(sign/i);
//        sign=-sign;
//    }
 
//    printf("%f",sum);


    //20求正序
        //    456 1                45    10        
        //    45  10                4    100    
        //    4    100                0    1000            
        //    0    1000
    //(1
//    int t;
//    printf("请输入一个正整数:");
//    scanf("%d",&t);
//    int m=t;
//    int mask = 1;
//    while(m>0){
//        m/=10;
//        mask*=10;
//    }
//    //printf("%d\n",mask);
//    while(mask>0){
//        int j;
//        mask/=10;
//        j = t/mask;
//        t%=mask;
//        printf("%d ", j);
//    }
    
    //(2  //无法输出后位的0!
//    int k=0;
//    while(t>0){
//        k = k*10+t%10;
//        t/=10;
//    }
//    printf("%d\n",k);
//    while(k>0){
//        t=k%10;
//        k/=10;
//        printf("%d ",t);
//    }


    //21 求最大公约数(辗转相除法)
//    int a,b;
//    scanf("%d %d", &a, &b);
//    do{
//        int c=a;
//        a=b%a;
//        //printf("%d ",a);
//        b=c;
//        
//    }while(a!=0);
//    //printf("\n",b);
//    printf("%d",b);
        
    
    //22
//    int a;
//    printf("输入一个不超过6的正整数:");
//    scanf("%d",&a);
//    int i,j,k;
//    int cnt = 0;
//    
//    //    (1
//    for(i=a; i<=a+3; i++)
//    {
//        for(j=a; j<=a+3; j++)
//        {
//            for(k=a; k<=a+3; k++)
//            {
//                if(i!=j)
//                {
//                    if(i!=k)
//                    {
//                        if(j!=k)
//                        {
//                            cnt++;
//                            printf("%d%d%d",i,j,k);
//                            if(cnt==6){
//                                printf("\n");
//                                cnt = 0;
//                            } else{
//                                printf(" ");
//                            }
//                        }
//                    }
//                }
//            }
//        }
//    }
    //    (2
//    i = a;
//    while( i<=a+3 ){
//        j = a;
//        while( j<=a+3 ){
//            k = a;
//            while( k<=a+3){
//                if(i!=j){
//                    if(i!=k){
//                        if(j!=k){
//                            cnt++;
//                            printf("%d%d%d",i,j,k);
//                            if(cnt==6){
//                                printf("\n");
//                                cnt = 0;
//                            }else{
//                                printf(" ");
//                            }
//                        }
//                    }
//                }
//                k++;    
//            }
//            j++;
//        }
//        i++;
//    }
    
    
    //23    求水仙花数
//    int n;
//    scanf("%d",&n);
//    int cnt = n;
//    int i=1;
//    do{
//        i*=10;
//        n--;
//    }while(n>1);
//        printf("n=%d i=%d cnt=%d\n",n,i,cnt);
//    int j;
//    for(j=i; j<i*10; j++){
//        int sum=0;
//        int x;
//        int c=j;
//        while(c>0){
//            x=c%10;
//            c/=10;
//            sum+=(int)pow(x,cnt);
//        }
//        if(sum==j){
//            printf("%d\n",j);
//        }
//    }
    
    
    //23    乘法表
//    int i,j;
//    for(i=1; i<10; i++){
//        for(j=1; j<10; j++){
//            if(i>=j){
//                int mul = j*i;
//                printf("%d*%d=%d   ",j,i,mul);
//                if(mul<10){
//                    printf(" ");
//                }
//            }
//        }
//        printf("\n");
//    }
    
    
    //24    求素数和
//    int x,y;
//    printf("请输入两个正整数:");
//    scanf("%d %d", &x,&y);
//    if(x>y){
//        int t=y;
//        y = x;
//        x = t;
//    }
//    int m;
//    int sum = 0;
//    int cnt = 0;
//    if(x==1)
//        x=2;    
//    for (m=x; m<=y; m++){
//        int i;
//        int flat=0;
//        for (i=2; i<m/2; i++){
//            if(m%i==0){
//                flat=1;                //设一个标记,记录是否存在至少一个约数。
//                break;
//            }
//        }
//        if(flat==0){
//            cnt++;
//            sum+=m;
//        }
//    }
//    printf("%d %d\n",cnt, sum);
    
    
    //25
//    int num,n;
//    srand(time(0));
//    num = rand()%100;
//    n = rand()%97+3;
//    int cnt = 0;
//    int x;
//    for(cnt=1; cnt<=n; cnt++){
//        scanf("%d", &x);
//        cnt++;
//        if(x==num){
//            if(cnt==1){
//                printf("Bingo!\n");
//                break;
//            }else if(cnt<3){
//                printf("Lucky You!\n");
//                break;
//            }else {
//                printf("Good Guess!\n");
//                break;
//            }
//        }else if(x<0){
//            printf("Game Over\n");
//            break;
//        }else{
//            if(cnt==n){
//            printf("Game Over\n");
//            break;
//            }else{
//                if(x<num){
//                    printf("Too Small\n");
//                }else{
//                    printf("Too Big\n");
//                }
//            }
//        }
//    }
    
    
    //26 2/1+3/2+5/3+······
//    int x;
//    scanf("%d",&x);
//    double sum = 0.0;
//    int i;
//    double a=2;
//    double b=1;
//    for(i=0; i<x; i++){
//        int t;
//        sum= sum+(a/b);
//        t = a;
//        a= a + b;
//        b= t;
//    }
//    printf("%.2f\n",sum);
    
    //27
//    int a,b;
//    scanf("%d/%d", &a, &b);
//    int x = a;
//    int y = b;
//    while(a!=0){        //辗转相除求最大公约数
//        int t = a;
//        a = b%a;
//        b = t;
//    }
//    printf("%d/%d\n", x/b, y/b);
    
    
    //28
//    int a, n;
//    scanf("%d %d", &a, &n);
//    int i;
//    int sum = 0;
//    for(i=1; i<=n; i++){
//        int j;
//        int x=0;
//        for(j=0; j<i; j++){
//            x=x*10+a;
//        }
//        sum+=x;
//    }
//    printf("%d",sum);

    
    //29
//    int a;
//    a = 6;
//    printf("sizeof(long double)=%ld\n",sizeof(long double));
//    printf("sizeof(a)=%ld\n",sizeof(a++));     
//    printf("sizeof(a+1.0)=%ld\n",sizeof(a+1.0));                 //sizeof()内部不会做计算
//    printf("a=%d\n",a);


    //30
//    char c = 255;
//    unsigned char ch = 255;
//    int i = 255;
//    char x = -1;
//    unsigned char f = -1;
//    unsigned int t = -1;
//    int y = -1;
//    printf("c=%d, ch=%d, i=%d\n", c, ch, i);
//    printf("x=%u, f=%d, t=%d, y=%u\n", x, f, t, y);
//    
//    
//    int a = 0;
//    int b = 0;
//    do{
//        a+=1;
//    }while (a > 0);
//    do{
//        b-=1;
//    }while (b<0);
//        printf("%d < int < %d", b+1, a-1);
    
    
    //31    浮点数            //float 有效数字为 7~8个    double    有效数字为 15~16个
//    float a =12344.5678;            
//    printf("%f , %e, %E\n", a, a, a);    //    %e或%E 表示用科学计数法
//    
//    printf("%.3f\n", 0.65436);            //%.nf ,表示指定输出小数点后n位 ,最后一位会四舍五入
//    printf("%.30f\n", -0.0049);            //由于精度问题,double 和 float在计算机中表示的数并不连续。
//    printf("%.3f\n",-0.00049);    
//    
//    printf("%f\n", 12.0/0.0);        //inf超出范围             nan不存在
//    printf("%f\n", -12.0/0.0);
//    printf("%f\n", 0.0/0.0);
    
//    //浮点计算
//    float a, b, c;                    //没有特别要求不用float,直接用double
//    a = 1.345f;                        //小数后面加f或F表示float,否则为double类型
//    b = 1.123f;                        //浮点数不能精确计算
//    c = a + b;
//    printf("%f\n",c);
//    if (c == 2.468){
//        printf("相等\n");
//    }else{
//        printf("不相等,%.10f != %f\n", a+b, c);
//    }
    
    
    //32        char可以看作整数,也可以看作字符字符用%c输入输出
//    char c;
//    char d;
//    c = 1;
//    d = '1';
//    if(c == d){
//        printf("相等\n");
//    }else{
//        printf("不相等\n");
//    }
//    printf("c=%d, d=%d\n", c, d);
//    printf("c=%c, d=%c\n", c, d);
    
//    scanf("%c", &c);
//    printf("c=%d\n", c);
//    printf("c='%c'\n", c);
//    if('1' == 49){
//        printf("ok\n");
//    }
    
//    //逃逸字符        以 \开头,\b:回退一格(并不是删除)    \n:换行     \t:到下一个表格位        
//    printf("123\b\n456\n");        //  \r:回车  \":双引号  \':单引号    \\反斜杠本身
//    printf("12\t123\n345\t456\n");                             //tab键是固定位置,到制表位
    
    
//    //33    类型转换    1.自动转换 :自动转换为范围更大的类型。
//    printf("%d\n",(char)32768);        //即char->short->int->long->long long
//                                    //int->float->double
//                                    //对于printf,任何小于int的都会转化为int; float转化为double
//                                    //scanf不会,要输入short,需要%hd
//                                    //2.强制类型转换:(类型)值    但要注意安全性,注意范围    优先级高于四则运算    
//    //bool类型:需要先    #include <stdbool.h> ,bool、true(1)、false(0)    
//    bool b = 6>5;
//    bool t = false;
//    printf("true=%d, false=%d\n", b, t);        
                                    
    
    //33    逻辑运算    !:非    &&:与    ||:或
//    char c;
//    printf("输入一个字母判断是否为大写:");
//    scanf("%c",&c);
//    printf("%d",(c>='A'&&c<='Z'));


    //34    函数
//    int isPrime(int x){    //判断是否为素数
//        int isprime = 1;
//        int i;
//        for(i=2; i<x; i++){
//            if(x%i==0){
//                isprime = 0;
//                break;
//            }
//        }
//        return isprime;
//    }
//    printf("%d",isPrime(31));
    
    
//    //求连续数的和
//    void sum(int begin, int end){
//        int sum = 0;
//        int i;
//        for(i=begin; i<=end; i++){
//            sum+=i;
//        }
//        printf("%d到%d的和为%d", begin, end, sum);
//    }
//    int begin, end;
//    scanf("%d %d", &begin, &end);
//    sum(begin, end);


    //c语言是自上而下的。需要先定义函数才能使用。如果未先定义,要先声明(即函数原型),下面还要再次定义。
    
    //35    数组
//    int x;
//    int cnt = 0;
//    double sum = 0;
//    int number[100];
//
//    do{
//        scanf("%d", &x);
//        if(x==-1)
//            break;
//        number[cnt] = x;
//        printf("%d\t", cnt);
//        int i;
//        for(i=0; i<=cnt; i++){
//            printf("%d\t", number[i]);
//        }
//        printf("\n");
//        sum+=x;
//        cnt++;
//    }while(1);
//    if(cnt>0){
//        printf("%f\n", sum/cnt);
//        int i;
//        for(i=0; i<cnt; i++){
//            if(number[i]>(sum/cnt)){
//                printf("%d ", number[i]);
//            }
//        }
//    }
//    printf("\n");


//    int search(int x, int a[], int num){
//        int i = 0;
//        int in = 0;
//        for(i=0; i<num; i++){
//            if(x==a[i]){
//                in = 1;
//            }
//        }
//        return in;
//    }
//    
//    int a[] ={1,2,3,4,7,18,31,23,67,9,10,23};
//    //printf("%d\n", sizeof(a)/sizeof(a[0]));
//    int num = sizeof(a)/sizeof(a[0]);
//    int x;
//    scanf("%d", &x);
//    printf("in is %d\n", search(x, a, num));
    
    
//    int isPrime(int x){
//        int ret = 1;
//        int i;
//        if(x==1||(x%2 == 0 && x!=2))
//            ret = 0;
//        for(i=3; i<x; i++){
//            if(x%i == 0)
//                ret = 0;
//        }
//        return ret;
//    }
//    int x;
//    scanf("%d", &x);
//    printf("%d\n", isPrime(x));
    
    
//    //求输入的数以内的素数(不包括这个数);
//    int maxNumber;
//    scanf("%d", &maxNumber);
//    int isPrim[maxNumber];
//    int i;
//    int x;
//    for(i=0; i<maxNumber; i++){
//        isPrim[i] = 1;
//    }
//    //for test
//    {    
//        int i;
//        for(i=1; i<maxNumber; i++){
//            printf("\t%d", i);
//        }
//        printf("\n");
//    }    
//    //for test
//    for(x=2; x<maxNumber; x++)
//    {
//        if(isPrim[x])
//        {
//            for(i=2; i*x<maxNumber; i++)
//            {
//                isPrim[i*x] = 0;
//            }
//        }
//        //for test
//        {
//            int j;
//            printf("%d\t", x);
//            for(j=1; j<maxNumber; j++)
//            {
//                printf("%d\t", isPrim[j]);
//            }
//            printf("\n");    
//        }
//        //for test
//    }
//    printf("\n");
//    for(i=2; i<maxNumber; i++)
//    {
//        if(isPrim[i]==1)
//            printf("%d\t", i);
//    }
//    printf("\n");
    
    
    //二元数组
//    int x,y;
//    scanf("%d %d", &x, &y);
//    int a[x][y];
//    int i, j;
//    for(i=0; i<x; i++){
//        printf("|");        
//        for(j=0; j<y; j++){
//            a[i][j] = i*j;
//            printf("%d\t",a[i][j]);
//        }
//        printf("|\n");
//    }


//    //二元数组图像规格化
//    void shuzu( int x, int y ,int a[x] [y]){
//        int i, j;
//        for(i=0; i<x; i++){
//            printf("|");        
//            for(j=0; j<y; j++){
//                printf("%d\t",a[i][j]);
//            }
//            printf("|\n");
//        }
//    }
//    
//    int a [5][6];
//    int x = sizeof(a)/sizeof(a[0]);
//    int y = sizeof(a[0])/sizeof(a[0][0]);
//    printf("x=%d, y=%d\n", x, y);
//    int i,j;
//    for(i=0; i<x; i++){
//        for(j=0; j<y; j++){
//            srand (time(0));
//            a[i][j] = rand()%100;
//        }
//    }
//    shuzu(x, y, a);
    
    
//    //井字棋     1)读入矩阵
//    const int size = 3;
//    int board [size][size];
//    int i, j;
//    int num0fx;
//    int num0f0;
//    int result = -1;    //-1:没有人赢, 1:X赢, 0:0赢
//    for(i=0; i<size; i++){
//        for(j=0; j<size; j++){
//            scanf("%d", &board[i][j]);
//        }
//    }
//    //2)判断
//    for(i=0; i<size; i++){
//        for(j=0; j<size; j++){
//            if
//        }
//    }

    
//    //36    指针:保存地址的变量        * p
//    int i =0;
//    int p;
//    p = &i;
//    printf("0x%x\n", &i);
//    printf("%p\n", &i);
    
    //指针:保存地址的变量        * p
//    int i;
//    int* p = &i;    
    //int *p,q;        *p为指针,q为int类型
    //int *p,*q;    定义两个指针
    
    
    
    
    
    
        return 0;
}

推荐阅读