-------
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指向下一个字符
}