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总结
本题需注意题目所说的重复字符输出,并且写的代码需要注重前后的通顺。