C++学习笔记(25)

三、循环计数
有两个任务:
1)采用一个 while 循环,把 1 到 100 之间的数值累加起来。
2)采用一个 for 循环,把用户每次从键盘输入的数值累加起来,如果总和超过了 5000,循环结束。
示例:
#include <iostream>
using namespace std;
int main()
{
// 用一个 while 循环,把 1 到 100 之间的数值累加起来。
/*int ii = 1;
int sum = 0;
while (ii<=100)
{
sum = sum + ii;
ii++;
}
cout << "sum=" << sum << endl;*/
// 采用一个 for 循环,把用户每次从键盘输入的数值累加起来,如果总和超过了 5000,循环结
束。
int sum = 0;
for (sum=0; sum<=5000; )
{
int val = 0;
cout << "请输入一个数字:"; cin >> val;
sum = sum + val;
}
}
四、循环选数
有两个任务:
1)用一个 while 循环,接受从键盘输入的整数,如果输入的整数不在 1 到 100 之间(包括 1 和 100),
认为无效,丢弃;如果输入的整数在 1 到 100 之间,则把每次输入的值累加起来;如果输入的整数为 0,
跳出循环。最后,显示有效数据的个数和总和。
2)输出 1 到 100 之间(包括 1 和 100)的能整除 5 的数字。
示例一:
#include <iostream>
using namespace std;
int main()
{
// 1)用一个 while 循环,接受从键盘输入的整数,
// 如果输入的整数不在 1 到 100 之间(包括 1 和 100),认为无效,丢弃;
// 如果输入的整数在 1 到 100 之间,则把每次输入的值累加起来;
// 如果输入的整数为 0,跳出循环。
// 最后,显示有效数据的个数和总和。
int val; // 存放从键盘输入的整数。
int ii = 0; // 存放有效数据(1 到 100 之间)的个数。
int sum = 0; // 存放有效数据的总和。
while (true)
{
cout << "请输入一个整数:"; cin >> val;
if (val == 0) break;
else if (val < 1 || val>100) continue;
else
{
// 整数在 1 到 100 之间的有效数据。
ii++;
sum += val;
}
}
cout << "有效数据的个数=" << ii << ",有效数据的总和=" << sum << endl;
}
示例二:
#include <iostream>
using namespace std;
int main()
{
// 输出 1 到 100 之间(包括 1 和 100)的能整除 5 的数字。
for (int ii = 5; ii <= 100; ii = ii + 5)
{
cout << ii << " ";
}
cout << endl;
for (int ii = 1; ii <= 100; ii++)
{
if (ii%5==0) cout << ii << " ";
}
cout << endl;
}
五、玩转字符
有三个任务:
1)从界面上输入一个字母,显示该字母后面的字母,如果后面没有字母,给出提示。不允许用 if…e
lse if…和 switch 语句。a b A B
2)自定义一个函数,把字符的'0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'转换为整数的 0、1、2、
3、4、5、6、7、8、9。不允许用 if…else if…和 switch 语句。
函数原型:
int ctoi(const char ch); // ch 为字符'0'、'1'、'2'、…'9',返回值为整数 0、1、2、…9。
调用示例:
cout << ctoi('0') << endl; // 输出结果是 0。
cout << ctoi('1') << endl; // 输出结果是 1。
cout << ctoi('9') << endl; // 输出结果是 9。
3)实现字符操作常用库函数的功能,如下:
int isalpha(int ch); // 若 ch 是字母('A'-'Z','a'-'z')返回非 0,否则返回 0。
int isalnum(int ch); // 若 ch 是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非 0,否则返回 0。
int isdigit(int ch); // 若 ch 是数字('0'-'9')返回非 0,否则返回 0。
int islower(int ch); // 若 ch 是小写字母('a'-'z')返回非 0,否则返回 0。
int isupper(int ch); // 若 ch 是大写字母('A'-'Z')返回非 0,否则返回 0。
int tolower(int ch); // 若 ch 是大写字母('A'-'Z'),则返回它的小写字母('a'-'z')。
int toupper(int ch); // 若 ch 是小写字母('a'-'z'),则返回它的大写字母('A'-'Z')。
示例一:
#include <iostream>
using namespace std;
int main()
{
// 1)从界面上输入一个字母,显示该字母后面的字母,如果后面没有字母,给出提示。
// 不允许用 if…else if…和 switch 语句。
char ch;
cout << "请输入一个字母:"; cin >> ch;
// 判断输入字符的合法性,如果不是字母,提示并退出。
if (!((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))) { cout << "输入的字符不是字母。
"; return 0; }
// 如果输入字符是'Z'和'z',后面没有字母,提示并退出。
if (ch == 'Z' || ch == 'z') { cout << "后面没有字母了。"; return 0; }
// 显示 ch 后面的字母。
cout << ch << "后面的字母是:" << (char)(ch + 1) << endl;
}
示例二:
#include <iostream>
using namespace std;
int ctoi(const char ch) // ch 为字符'0'、'1'、'2'、…'9',返回值为整数 0、1、2、…9。
{
return ch - '0';
}
int main()
{
// 2)自定义一个函数,把字符的'0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9' // 转换为整数的 0、1、2、3、4、5、6、7、8、9。不允许用 if…else if…和 switch 语句。
cout << ctoi('0') << endl;
cout << ctoi('1') << endl;
cout << ctoi('2') << endl;
cout << ctoi('3') << endl;
cout << ctoi('8') << endl;
cout << ctoi('9') << endl;
}
示例三:
#include <iostream>
using namespace std;
int _isalpha(int ch); // 若 ch 是字母('A'-'Z','a'-'z')返回非 0,否则返回 0。
int _isalnum(int ch); // 若 ch 是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非 0,否则返
回 0。
int _isdigit(int ch); // 若 ch 是数字('0'-'9')返回非 0,否则返回 0。
int _islower(int ch); // 若 ch 是小写字母('a'-'z')返回非 0,否则返回 0。
int _isupper(int ch); // 若 ch 是大写字母('A'-'Z')返回非 0,否则返回 0。
int _tolower_(int ch); // 若 ch 是大写字母('A'-'Z'),则返回它的小写字母('a'-'z')。
// 若 ch 是小写字母('a'-'z'),则返回它的大写字母('A'-'Z')。
int _toupper_(int ch) {
if (ch >= 'a' && ch <= 'z') return ch - 32;
return ch;
}
int main()
{
char CC = _toupper_('x'); cout << "CC=" << CC << endl;
}
六、计算字符串的长度
从界面上输入一个字符串(C 风格),计算字符串的长度。如果输入的是"abcde",显示的结果是 5。
其它要求:
1)把计算字符串长度的功能封装成一个函数。
2)采用 for 循环,用数组表示法和临时变量计数。
3)采用 while 循环,用指针表示法和临时变量计数。
4)不用临时变量计数,用递归实现(奇巧淫技)。
示例:
#include <iostream>
using namespace std;
// 采用 for 循环,用数组表示法和临时变量计数。
//int length(char* str)
//{
// int len = 0;
// for (len = 0; str[len] != 0; len++)
// ;
//
// return len;
//}
// 采用 while 循环,用指针表示法和临时变量计数。
//int length(char* str)
//{
// int len = 0;
// char* ptr = str; // 指向字符串的开始。
//
// while (*ptr++) len++;
//
// return len;
//}
// 不用临时变量计数,用递归实现(奇巧淫技)。
int length(char* str)
{
if (*str == 0) return 0; // 递归中止的条件。
str++; // 后移一个字符。
int len = length(str) + 1; // 递归调用自己,递归每增加一层,字符串长度加 1。
return len;
// return length(++str) + 1;
}
int main()
{
// 从界面上输入一个字符串(C 风格),计算字符串的长度。
char str[31];
memset(str, 0, sizeof(str)); // 初始化是个好习惯。
cout << "请输入一个字符串:"; cin >> str;
cout << "字符串的长度是:" << length(str) << endl;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值