二、代碼
#include <stdio.h>
char upper(char value);
void upperCase(char *p);
//void ts(char *temp);
void ts(char *temp,void(*funtionP)(char *));
int main()
{
#pragma 1.要求用戶輸入一段英文,將用戶輸入的英文單詞所有的首字母大寫
// hello world ---> Hello world
// 1.接收用戶輸入的字符串
// 2.遍歷字符串,判斷當前字符串是不是空格,如果是空格 就將下一個字符 轉換為大寫
// 1.先實現接收字符串
// 2.在實現 字母的大小寫轉換
// 3.在實現 替換字符串的單詞首字母
// char *str; 指針沒有初始化,不能隨便使用
// char str[100];
// scanf("%s",str);
// gets(str);
// printf("str = %s\n",str);
/*
char c = 'a'; //
// printf("c = %c\n",upper(c));
upperCase(&c);
// *p == c
printf("c = %c\n",c);
*/
// 1.接收用戶輸入的數據
printf("請輸入一句英文,單詞之間用空格隔開\n");
char str[100];
gets(str);
// 注意 : 數組名稱 不能做+1操作,只有指針才可以
/*
char *temp = str;
upperCase(temp);
// 2.遍歷字符串
while (*temp !='\0') {
// 2.1 取出當前的字符, 判斷是否等于 空格 ,如果等于空格 就需要將下一個 字符轉換為大寫
if ((*temp) == ' ') {
// 2.2 將下一個字符 轉換為大寫
upperCase(++temp);
}
else
{
temp++;
}
}
*/
ts(str,upperCase);
printf("str = %s\n",str);
return 0;
}
// void(*funtionP)(char *) 可以提供大小寫的方法
void ts(char *temp,void(*funtionP)(char *))
{
// 1.不管三七二十一 先將第一個字母轉換為大寫
upperCase(temp);
// 2.遍歷字符串
while (*temp !='\0') {
// 2.1 取出當前的字符, 判斷是否等于 空格 ,如果等于空格 就需要將下一個 字符轉換為大寫
if ((*temp) == ' ') {
// 2.2 將下一個字符 轉換為大寫
// upperCase(++temp);
(funtionP)(++temp);
}
else
{
temp++;
}
}
}
void upperCase(char *p)
{
if (*p >='a' && *p <= 'z') {
*p = *p - ('a' - 'A'); // 32 小寫的ASCII 大于 大寫的
}
}
char upper(char value)
{
// 1.判斷是不是小寫字母
if (value >='a' && value <= 'z') {
value = value - ('a' - 'A'); // 32 小寫的ASCII 大于 大寫的
}
return value;
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。