c课堂笔记 day-5

冒泡排序

     int arr[5]={11,23,2,66,34};
     参加数据个数     比较次数
         5               4 -------------------arr[4]
     arr[0]   arr[1] ----->arr[1]
     arr[1]   arr[2] ----->arr[2]
     arr[2]   arr[3] ----->arr[3]
     arr[3]   arr[4] ----->arr[4]
     
     第二次比较
         4              3  -------------------arr[3]  
     arr[0]   arr[1]----->arr[1]
     arr[1]   arr[2]----->arr[2]
     arr[2]   arr[3]----->arr[3]
     
     第三次比较
         3              2  -------------------arr[2]  
     arr[0]   arr[1]----->arr[1]
     arr[1]   arr[2]----->arr[2]
     
     第三次比较
         2              1  -------------------arr[1]  
     arr[0]   arr[1]----->arr[1]
     
        普通排序
        #include<stdio.h>
        int main()
        {
           int arr[5]={2,3,1,4,5};
           int i,j,temp;
           
           for(i=0;i<5;i++)
              for(j=0;j<5;j++)
              {
                  if(arr[i]<arr[j])
                  {
                    temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                  }
               } 
                for(i=0;i<5;i++)
                printf("%d\n",arr[i]);
         
        }

        //冒泡排序
        #include<stdio.h>
        int main()
        {
           int arr[5]={2,3,1,4,5};
           int i,j,temp;
           
           for(i=0;i<4;i++) //控制轮数
              for(j=0;j<4-i;j++) //控制参与比较的元素个数
              {
                  if(arr[j]<arr[j+1])
                  {
                    temp=arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                  }
               } 
                for(i=0;i<5;i++)
                printf("%d\n",arr[i]);
         
        }

2.获取随机数

//获取0~100之间的随机数

srand(time(NULL));//此语句不能放在循环中,否则产生的随机数相同

int num = rang()%100;

3.字符串
(1)字符串常量
字符串是由双引号括起来的字符序列集合
"a" "hhh" "sadfgfda"
字符串的结束标志:'\0',其不显示但是存在!!!
(2) c中没有字符串所对应的数据类型,通常使用字符数组保存字符串
字符串
char arr[32]={"hello"}
char buf[32]="hjkadshkjfhdl*8968";

//字符数组
char af[32]={'q','a','r'};
//字符串数组
char arr[32]={"hello"};
注意:字符数组保存字符和保存字符串是有区别的;
字符串有‘\0’
(3) 字符串的输入和输出
scanf()/printf()----------> 占位符:%s
scanf()不能接受字符串中的空格
#include<stdio.h>
int main()
{

                     char ch;
                    printf("input blank:\n");
                    scanf("%c",&ch);
                    printf("hh%chh",ch);
                     char arr[32]={};
                   // char buf[5]={"hello"};
                    printf("input string:\n");
                    //字符串scanf() 不能接受空格
                    //字符类型单个空格用scanf可以输入
                    scanf("%s",arr);
                    printf("arr:%s\n",arr);
                    getchar()  吸收回车
                    
                }  
                

       (4)  gets/puts
             gets():从键盘输入
                 可以接受输入的空格
                 此函数有bug,不建议使用,
             puts():输出字符串
                 自动换行,无须换行符
                 
                 
       (5)  fgets()/fpus()   没有bug
            fgets():获得数据
                arr;数组名,即一个地址
                stdin:标准输入
                sizeof(读取数据的大小,也可以直接用数字代替)
                
            fputs():输出数据
             stdout:标准输出
             
            例子: 用法
            #include<stdio.h>
            int main()
            {
                char arr[128];
                printf("input string:");
                fgets(arr,sizeof(arr),stdin);
                //读取数据的大小,也可以直接用数字代替
                //fgets(arr,100,stdin);
                fputs(arr,stdout);
                return 0;
                
            }

4.指针和字符串

            #include<stdio.h>
            int main()
            {
                char arr[32] = "hello";
                char *p = arr;
                printf("%s\n",arr);
                printf("%s\n",p);
                //常量可以直接使用,无需声明
                //此处为指针重定向,即指向一个新地址
                //原来的字符串“hello world‘并没有被改变
                            //常量字符串
                char *pa = "hello,world";
                printf("%s\n",pa);
                
                //常量字符串 值不能被
                pa[2]='t';
                printf("%s\n",pa);
            }                

5.字符串相关函数
头文件:#include<string.h>
(1) strlen():计算字符串长度
'\0' 不计入字符串长度
注意区分和sizeof()的区别!!!
s

        #include<stdio.h>
        #include<string.h>
        int main()
        {
            char arr[32]="hello,world";
            printf("%s\n",arr);
               //'\0'不计入   strlen的用法
            int len_arr=strlen(arr);
            printf("len = %d\n",len_arr);
            printf("sizeof(arr) =%ld\n",sizeof(arr));
            
            int str_len=strlen{"hello,world"};
            printf("len = %d\n",str_len);
            
        }
        
       (2) trcpy(): 字符串拷贝
            strcpy(buf,arr)
            将arr的内容拷贝到buf中!!!
            
            #include<stdio.h>
            #include<string.h>
            int main()
            {
                char arr[32]={"sadfdsga"};
                char buf[32];
                
                //原样拷贝   可查找man手册用法
                //将arr的内容拷贝给buf
                strcpy(buf,arr);
                printf("%s\n",arr);
                printf("%s\n",buf);
                
                
                strcpy(buf,arr);
            }
        (3) strcmp():字符串的比较
            int ret = strcmp(arr,buf)
            若ret=0;则两字符串相等
            若ret>0;则arr大于buf
            若ret<0;则arr小于buf
            #include<stdio.h>
            #include<string.h>
            int main()
            {
                char arr[16]="hello";
                char buf[16]="world";
                
                //比较   buf和arr比较  依次比较 大的减小的
                //这里w的ascii码值大于h的  所以buf>arr
                int ret=strcmp(arr,buf);
                printf("ret1=%d\n",ret);  
                
                ret=strcmp(buf,arr);
                printf("ret2=%d\n",ret);  
                
                //这里是一样的所以是0
                char  buf1[16]="world";   
                ret=strcmp(buf,buf1);
                printf("ret3=%d\n",ret);
            }

            登陆密码:
            #include<stdio.h>
            #include<unistd.h>

            int main()
            {
                char name[16]="123";
                char passwd[16]="234";
                 
                char name_user[32];
                char passwd_user[32];
                
                printf("input name:");
                scanf("%s",name_user);
                printf("input passwd:");
                scanf("%s",passwd_user);
                if(strcmp(name,name_user)==0 && 
                  strcmp(passwd,passwd_user)==0)
                {
                    printf("正在开机,请稍候、、、、\n");
                    sleep(3);
                    printf("welcome\\!");
                }
                else
                {
                    printf("滚\n");
                }
            }

             (4)  strcat 字符串的拼接
                 将 后面数组的拼接到前面数组中
                     #include<stdio.h>
                     #include<string.h>

                    int main()
                    {
                        char arr[16]="123";
                        char buf[16]="234";
                         
                        printf("arr:%s\n",arr);
                        printf("buf:%s\n",buf);
                        printf("=================\n");
                        strcat(arr,buf);
                        printf("arr:%s\n",arr);
                        printf("buf:%s\n",buf);
                    }

二、函数

            //这是一个统计字符串的函数
             #include<stdio.h>
             #include<string.h>
            int mylen(char *p)  //形参  //函数名是随意的 
            {               // 但不能和系统函数重名
                //char *pa = p;
                int len=0;
                while(*p!='\0')  //这里是函数的定义
                {                //这里是正常的语句
                    len++;
                    p++;
                }
           return len-1; //因为fgets带回车符 会计入输出里面
                                 //所以返回时可以减1  
            }
            int main()
            {
                char arr[32];
                printf("input num:\n");
                //scanf("%s",arr); //scanf输入不能有空格
               fgets(arr,32,stdin);//fgets自带回车符
                //函数的调用
                int str_len=mylen(arr);
                printf("str_len = %d\n",str_len);
                return 0;
            }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容