2025.12.24代码分析

1.1题目

1.2代码

复制代码
void reverseStr(char *s){
    char *start=s;
    char *end=s;
    while(*end!='\0'){
        end++;
    }
    end--;
    while(start<end){
        char temp=*start;
        *start=*end;
        *end=temp;
        start++;
        end--;
    }
}

1.3解题思路

这个题是简单的逆转字符串,有很多的方法。这里是根据题目补全函数的代码,让程序成功运行。

1.根据题目的要求以及代码,我们需要补全逆转字符串函数的代码。

2.这里利用指针来交换字符,我们先让开始和结束指针都是第一个字符,然后想办法让结束指针是最后一个字符,这样就可以让开始和结束指针指向的值交换,实现字符串逆序。

综上所有代码完成之后,检查程序是否能够运行,可以将所有代码打出来试试。

1.4总结

本题利用指针字符串。

2.1题目

2.2代码

复制代码
char* getEpithet(struct HerbMedicine *pHerb, int i){
    if(i<1||i>pHerb->epithetNum)
        return errorMsg;
    else 
        return pHerb->epithet[i-1];
}

2.3解题思路

这个题利用结构体,指针函数来写题。

1.根据输入的数字,匹配结构体里面的中药别名,将别名输出,那么利用结构体指针来写题。当然需要注意用户输入的编号万一不符合要求,那么就可以输出前面定义的字符串(没有那么多别名),否则就输出编号对应的别名。

综上所有代码完成之后,检查程序是否能够运行,可以将所有代码打出来试试。

2.4总结

这个题考察指针的各种运用。

3.1题目

3.2代码

复制代码
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n--){
        char s[20];
        scanf("%s",s);
        int len=strlen(s);
        if('a'<=s[0]&&s[0]<='z'){
            s[0]=toupper(s[0]);
        }
        for(int i=1;i<len;i++){
            s[i]=tolower(s[i]);
        }
        printf("%s\n",s);
    }
    return 0;
}

3.3解题思路

本题是将字符串开头变为大写字母,当然如果不是字母那就不用改变,从第一个字符之后,后面的所有字母全是小写。

1.先确定测试样例数,然后输入字符串,对这个字符串进行改变,如果第一个字符是字母并且是小写字母,就将它变成大写字母,这里利用函数(在ctype这个标准库里面),其实也可以不用函数,大写与小写之间差32,利用这个也可以来更改。将第一个字符确定后,来将后面所有的字母都变成小写。

2.最后将改变后的字符串输出。

综上所有代码完成之后,检查程序是否能够运行,可以将所有代码打出来试试。

3.4总结

是在考察字符串的改变,字符串涉及多个函数,可以多记并使用。

4.1题目

4.2代码

复制代码
#include<stdio.h>
#include<string.h>
int main()
{
   char s[101];
   while(scanf("%s",s)!=EOF){
    int len=strlen(s);
    for(int i=0;i<len;i++){
        int is=1;
        for(int j=0;j<i;j++){
            if(s[j]==s[i]){
                is=0;
                break;
            }
        }
    if(is==1){
        int f=1;
        int count=0;
        for(int k=0;k<len;k++){
            if(s[k]==s[i])count++;
        }
        if(count>1){
            for(int k=0;k<len;k++){
                if(s[k]==s[i]){
                    if(!f)printf(",");
                    printf("%c:%d",s[i],k);
                    f=0;
                }
            }
            printf("\n");
        }
    }
   }
   }
    return 0;
}

4.3解题思路

遍历字符串,若重复出现需要输出位置(注意:如果只出现了一次那就不需要输出位置,题目说的是重复的字符,所以不是每个字符都需要输出位置的)。

1.这题需要多组输入,那么利用while循环不断输入输出,直到达到条件。

2.从第一次输入开始,讲解一下:先确定输入的字符串的长度,然后从第一个字符开始,先认为它是新出现的字符(is=1),然后开始看该字符前面是否已经出现过,因为在下面的代码中,我们如果确定一个字符是新出现的那就会遍历所有的字符,将相同字符的位置按照格式输出,就是说如果这个字符不是新出现的就不用管了,因为前面早就输出过了。那么说回去,如果这个字符不是新出现的,那么直接结束本次循环,并且is变为0(is只是一个标识,代表字符是不是新出现的),如果is不变,那么就会进行代码后面的运行,这就错了。

3.如果这是一个新的字符(is==1),那就需要开始遍历循环了,接下来循环计算该字符在字符串中出现的次数,那就遍历整个字符串,记下数量,前面说了每个新字符必须重复出现过才能输出位置,那么数量必须大于1才可以输出位置。不过这里还要注意逗号,那么也就是需要一个逗号的标识(f),代表是第一个输出,如果不是第一个输出那就需要先输出逗号。注意输出语句的格式。并且遍历完之后就到下一个新字符了,需要换行。

综上所有代码完成之后,检查程序是否能够运行。

4..4总结

本题需注意题目所说的重复字符输出,并且写的代码需要注重前后的通顺。

相关推荐
永远睡不够的入2 小时前
直接插入排序、希尔排序、选择排序
数据结构·算法·排序算法
历程里程碑2 小时前
hot 206
java·开发语言·数据结构·c++·python·算法·排序算法
Tipriest_3 小时前
C++ 的 ranges 和 Python 的 bisect 在二分查找中的应用与实现
c++·python·算法·二分法
晨晖24 小时前
顺序查找:c语言
c语言·开发语言·算法
LYFlied4 小时前
【每日算法】LeetCode 64. 最小路径和(多维动态规划)
数据结构·算法·leetcode·动态规划
Salt_07284 小时前
DAY44 简单 CNN
python·深度学习·神经网络·算法·机器学习·计算机视觉·cnn
货拉拉技术4 小时前
AI拍货选车,开启拉货新体验
算法
MobotStone5 小时前
一夜蒸发1000亿美元后,Google用什么夺回AI王座
算法
Wang201220135 小时前
RNN和LSTM对比
人工智能·算法·架构