c课堂笔记 day-5

2016-12-16  本文已影响0人  努力活得更好

冒泡排序

     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;
            }
上一篇下一篇

猜你喜欢

热点阅读