zoukankan      html  css  js  c++  java
  • 《黑马程序员》 字符串 (C语言)

    字符串的基本使用

    定义方法:

    char name[10] ="jack";   此时字符串中共包含‘j’,’a‘,'c','k',''

    中括号中的10代表该字符串最多存放10个字符

    字符串的输出

    1.printf("jack");

    2.printf(name);              //把数组传入printf语句输出会出现警告        

    这两种方法输出结果相同,但printf语句默认情况下只认字符串常量,所以第二种方法在编译时会出现警告

    字符串的存储细节:

    数组name中共占用8个字节,含有三个元素分别为'i','t',''

    char name[8] ="it";

    char name2[8] = {'i','t',''};

    char name3[8] = {'i','t',0};

    三种写法效果相同

    注:因’‘的ASCII值为0,故’‘与0等价

    修改数组内元素的值

    name[1] = 'q';      //把数组内第2个元素的值改为q;

    的作用

    为字符串的结束标志

    #include <stdio.h>  
    int main()
    {
      char name[] ="it";
      char name2[] ={'o','k'};
      printf("%s
    ",name2);
      return 0;
    }
    
    运行结果:okit

    数据内存如下所示

    strlen函数

    作用:用来计算字符串的长度,strlen函数声明在<string.h>文件中,计算的是字符数并不是字数,计算的字符不包括尾部的""

    #include <stdio.h>  
    #include <string.h>
    int main()
    {
    	char name[] ="haha";                 //定义一个字符串数组
    	int size1 =strlen(name);             //计算字符串的长度      不包含""
    	int size2 =sizeof(name);             //计算字符串的占用字节数,包含""
            printf("%d	%d
    ",size1,size2);      //输出
            return 0;
    }
    
    运行结果:4 5

     代码练习1:

    #include<stdio.h>
    //字符串数组
    int main()
    { 
    	//一维数组
    	char  name[] ="haha";
    	char name1[] ="rose";
    	char name2[] ="jim";
    	char name3[] ="jake";
    	//二维数组
    	//第一种方法
    	char name[2][10] = {"jake","rose"};
    	//第二种方法
    	char name[2][10] = 
    	{
    		{'j','a','k','e',''};
    		{'r','o','s','e',''}; 
    	};
            return 0;
    }
    

      代码练习2:

    #include <stdio.h>
    #include <string.h>
    /*编写一个函数char_contains(char str[],char c),如果字符串中str中包含字符C,
    则返回数值1,否则返回数值0.
    */
    int char_contains(char str[],char c)
    {
    	int i;
    	//遍历数组内所有元素,检测数组内是否包含字符C
    	for(i = 0;i < strlen(str);i++){
    		if(str[i] ==c){
    		//返回数值1
    		return 1;
    		}
    	}
    	return 0;
    }
    int main()
    {   
    	char  str[]="itcast";
    	int result = char_contains(str,'c');
    	printf("%d
    ",result);
    	return 0;
    }
    

     代码练习3

    #include <stdio.h>
    #include <string.h>
    int main()
    {
    	int i;
        char str[] = "cha zhao zui  chang de  zifuchuan  danci ";
        int maxCount = 0;                                      // 记录最长单词的长度
        int GB = 0;                                            // 记录单词尾字符下标
        for (i = 0; i < strlen(str); ++i) {
            int count = 0;                                     // 记录新单词长度
            while (str[i] != ' ' && str[i]) {                  // 字符不是空格也不是的时候开始记录单词长度
                ++i;                                           
                ++count;                                     
            }
            if (count > maxCount) {                             //此段if语句的最用是更新最长单词的长度     
                maxCount = count;
                GB = i - 1;
            }
        }
        printf("最长单词是:");
    	for (i = GB - maxCount + 1; i <= GB; ++i){
            printf("%c", str[i]);                                //输出最长单词
    	}
        printf("
    ");                                            //换行
        return 0;
    }
    
  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/shtz/p/4439543.html
Copyright © 2011-2022 走看看