【黑马程序员】---C语言经典编程实例分析

------- android培训ios培训、期待与您交流! ----------


C语言经典编程题


题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

int main()
{
    // 用数组定义一个字符串
    char array[50] = "zha  junju  zhamengjun z mengjun";
    
    char *str = array;      // 定义指针变量str,指向数组array
    int len = 0;            // 定义变量len,用于计数
    int max = 0;            // 定义变量max,存放最长单词的长度
    char *p = 0;            // 定义指针变量p,指向最长单词的首字符
    
    // 判断指针当前指向的字符是不是'\0'
    while(*str != '\0')
    {
        if(*str != ' ')     // 判断字符是不是空格
        {
            len++;          // 计数加1
            
            // 判断最大长度跟len长度的大小
            if(max < len){
                max = len;    // 如果max小于len,将len赋值给max
                p = str - len + 1;    // 将单词的首字符的地址赋值给指针变量p
            }
            
            str++;       // 让指针str指向下一个字符
        }
        else
        {
            len = 0;     // 如果当前的字符为空格,将len初始化为0,重新计数
            str++;       //让指针str指向下一个字符
        }
    }
    
    // 给最大单词后面添加一个字符串结束标记'\0'
    *(p + max) = '\0';

    printf("最长的单词是%s\n", p);    // 在屏幕上输出最长的单词
    return 0;
}

心得体会:

(1)首先定义一个记录单词长度的变量len和存放最长单词的长度的整形变量max,并初始化max为0;

(2)通过while循环,遍历整个字符串,当遍历到的字符非空格时,变量len依次加1,若len的长度大于max,就将len赋值给max,同时用指针变量p记录单词的首字符地址。并且每判断依次,让指针指向下一个字符。

(3)当遍历到的字符是空格时就将len的长度赋值为0,重新计数,并且让指针str指向下一个字符。

(4)通过给最大单词后面一个字符赋值为‘\0’,以便输出最长单词。


题目02:编写一个int string_len(char *s),返回字符串s的字符长度(不包括\0)。

int string_len(char *s);    // 声明函数string_len(char *s)

int main()
{
    char *str = "zhamengjun哈哈";    // 利用指针定义一个字符串
    
    // 定义一个变量length,存储函数string_len返回的字符串的字符长度
    int length = string_len(str);
    
    // 在屏幕上输出打印字符串的字符长度
    printf("字符串%s的长度为%d\n", str, length);
    return 0;
}

int string_len(char *s)     // 定义函数string_len(char *s)
{
    int count = 0;          // 记录字符的个数
    
     // 判断指针当前指向的字符是不是'\0',
    while(*s != '\0')
    {
        count++;            // 字符个数增加1
        s++;                // 让指针s指向下一个字符
    }
    
   
  • 12
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值