练习5.15
a)条件语句if应该在for循环的循环体内,因为ix的声明和定义是在for循环的init-statement中;
b)init-statement部分少了个分号,就算其是空语句,也不能将分号省略;
c)ix和sz的值同时增加,循环将无法结束,去掉++sz;
练习5.16
1 int main() 2 { 3 int sum = 0; 4 for (int i = 0; i != 100; i++) 5 { 6 sum += i; 7 } 8 cout << sum << endl; 9 system("pause"); 10 return 0; 11 }
while版本
1 int main() 2 { 3 int sum = 0; 4 int i = 0; 5 while (i != 100) { 6 sum += i; 7 ++i; 8 } 9 cout << sum << endl; 10 system("pause"); 11 return 0; 12 }
两种各有自己的优点和用处,但是在两种都可以使用的情况下,使用for循环明显比while循环更加简洁,程序清晰且简短。
练习5.17
1 int main() 2 { 3 vector<int> num1{ 0,1,1,2 }; 4 vector<int> num2{ 1,0,1,1,2,3,5,8 }; 5 int i = 0;int j = 1; 6 for (; i != num2.size() - num1.size() + 1; ++i) 7 { 8 if (num1[0] == num2[i]) 9 { 10 11 while (j != num1.size()) 12 { 13 if (num1[j] == num2[i + 1]) 14 { 15 ++j; 16 ++i; 17 if (j == num1.size()) 18 cout << true << endl; 19 } 20 else 21 break; 22 } 23 } 24 else 25 continue; 26 } 27 28 system("pause"); 29 return 0; 30 }
此方法更通用的为两个num型匹配,看其中一个是否是例外的一个的子串。还可以不初始化两个vector对象,往里面添加元素变成更加通用的方法。