块是指用花括号括起来的语句和声明的序列,也称为复合语句。一个块就是一个作用域,其作用域中所定义的变量在其他的定义域中将无法使用。因为在这个作用域结束之际会将所定义的变量自动进行销毁。块不需要以分号结束。
由上述练习题可知我们可以使用循环以及上一篇vector所学到的内容和if-else语句对其成绩进行相关的处理。
90-100分为A,80-90分为B,70-80分为C,60-70分为D,60分为F。
且个位数字超过7则有一个+号,小于3则有一个-号。
其练习题的代码如下所示:
#include
#include
using namespace std;
int main()
{
int n;
cout<<"请输入您班级学生人数->";
cin>>n;
vector garde;
int g;
cout << "请输入您班级学生的成绩:"<>g;
garde.push_back(g);
}
int i=1;
for(int j=0;j100)
cout<<"您输入的成绩有误!"<7)
level = "+";
else
level="";
scorelevel=score+level;
cout<<"第"<
由上述代码可知字符串的形式可以进行相加也就是将其链接起来!
运行之后的结果如下图所示:
也可以使用条件运算符对该题进行相关操作只须更改判断除100和60分一下的数据即可,其更改后的代码如下所示:
score = (iu == 9) ? "A"
: (iu ==8) ? "B"
: (iu == 7) ? "C" : "D";
level = (it < 3) ? "-"
:(it > 7) ? "+" : "";
悬垂else是指当前程序中的if分支多余else分支时,如何为else寻找与之匹配的if语句的问题。
C++规定,else与离它最近的尚未匹配的if匹配,从而消除了二义性。
由上述练习题可以看出,这个题目必须使用循环根据我们学习的经验来说使用while循环比使用for循环更加方便。
解题的代码如下所示:
#include
#include
using namespace std;
int main()
{
string current,pre="",max;
int curcount=1,maxcount=0;
cout<<"请输入字符串:"<>current)
{
if(current == pre)
{
++curcount;
if(curcount > maxcount)
{
maxcount = curcount;
max = current;
}
}
else
{
curcount = 1;
}
pre = current;
}
if(maxcount > 1)
cout<<"当前出现最多的字符串为"<
运行后的结果如下图所示:
还可以更改程序,让其不用查找连续重复出现的单词,可以直接查找重复出现的无论是否连续,所以要对原有的代码进行更改。更改后的代码如下所示:
#include
#include
#include
using namespace std;
int main()
{
vector str;
cout<<"请输入多个字符串随后进行相关判断\n";
string s,maxstr;
int cnt;
while(cin>>s)
str.push_back(s);
for(auto c : str)
{ cnt=0;
for(auto b : str)
{
if(c==b){
cnt++;
maxstr=c;
}
}
}
cout<<"出现过最多的单词为"<
更改后的运行结果如下图所示:
unsigned evencnt=0,oddcnt=0;
int digit = get_num()%10;
switch(digit)
{
case 1,3,5,7,9:
oddcnt++;
break;
case 2,4,6,8,10;
evencnt++;
break;
}
上述代码错误在一个case只可以对于一个值,不可以一个对应多个值
更改后的代码如下所示:
unsigned evencnt=0,oddcnt=0;
int digit = get_num()%10;
switch(digit)
{
case 1:
case 3:
case 5:
case 7:
case 9:
oddcnt++;
break;
case 2:
case 4:
case 6:
case 8:
case 10:
evencnt++;
break;
}
unsigned ival=521, jval=1024,kval=1225;
unsigned bufsize;
unsigned swt = get_bufCnt();
switch(swt)
{
case ival:
bufsize = ival*sizeof(int);
break;
case jval:
bufsize = jval*sizeof(int);
break;
case kval:
bufsize = kval*sizeof(int);
break;
}
上述代码错误在使用变量作为case标签内容,C++规定,case标签的内容只能是整型常量表达式。修改后的程序如下所示:(只需将变量更改为常量即可用const)
const unsigned ival=521, jval=1024,kval=1225;
unsigned bufsize;
unsigned swt = get_bufCnt();
switch(swt)
{
case ival:
bufsize = ival*sizeof(int);
break;
case jval:
bufsize = jval*sizeof(int);
break;
case kval:
bufsize = kval*sizeof(int);
break;
}
由上述题目可知我们可以使用while循环对其进行比较,使两个对象一一进行比较。
其实现的代码如下:
#include
#include
#include
using namespace std;
int main()
{
vector v1;
vector v2;
int vc1,vc2,n,m;
cout<<"请输入v1容器中元素个数:\n";
cin>>n;
cout<<"请输入v1容器中的元素:\n";
for(int i=0;i>vc1;
v1.push_back(vc1);
}
cout<<"请输入v2容器中的元素:\n";
while(cin>>vc2)
v2.push_back(vc2);
vector::iterator it1 = v1.begin();
vector::iterator it2 = v2.begin();
while(it1 != v1.end()&&it2 != v2.end())
{
if(*it1 != *it2)
{
cout<<"v1和v2之间不存在前缀关系\n";
break;
}
it1++;
it2++;
}
if(it1 == v1.end())
cout<<"v1是v2的前缀\n";
else if(it2 == v2.end())
cout<<"v2是v1的前缀\n";
return 0;
}
因为一按下ctrl+z该程序就不会继续让你输入v2容器里的值了所以这里给v1的输入值与v2不同就是此原因,一旦退出输入v1则无法再次进入v2容器中输入值。
运行结果如下图所示:
do{
//......
}while(int val = get_response());
含义是当get_response()的返回值不为0时执行循环体的内容。因为do-while语句不允许下循环条件内定义变量所以此程序是错误的
更改后的代码如下所示:
int val;
do{
//.......
}while(val = get_response());
do{
int val = get_response();
}while(val);
上述代码含义是当get_response()返回值不是0时执行循环体内容。因为出现do-while语句条件部分的变量必须定义在循环体之外,所以上述程序是错误的。
更改后如下所示:
int val;
do{
val = get_response();
}while(val);
break是一个跳转语句,负责终止离它最近的while、do-while、for和switch语句,并把程序的控制权交给这些语句之后的第一条语句。
continue语句是一种跳转语句,负责终止最近的循环中当前迭代并立即开始下一个迭代。与break的区别是,continue虽然终止了当前迭代,但是并不终止循环;而break语句直接终止循环。
goto语句的作用是从goto语句无条件跳转到同一函数的另一条语句。但是一般情况下不建议使用goto语句,因为它使得程序即难理解又难修改。
#include
#include
#include
using namespace std;
int main()
{
float a,b;
cout<<"请输入两个数:\n";
cin>>a>>b;
if(b==0)
{
cout<<"除数不能为0\n";
return -1;
}
else
cout<<"两数相除的结果是:"<
有上述代码可知C++在保留小数时可以使用c语言的相关用法,也可以使用自己的一个函数来保留小数部分的位数,首先要添加头文件#include 运行后如下所示: 还可以使用try语句块捕获异常。catch子句应该为用户输出一句提示信息,询问其是否要继续执行内容。 代码如下所示: 捕获异常和执行时需要加入头文件#include 执行程序后的结果如图所示: 该篇博客讲述了C++语句部分的内容,大致与上述的题目一致,希望大家可以举一反三进行相关性的练习提升自己的编码水平。抛出异常和接收异常不需要在此就看懂以后会出一篇专门的文章来讲述如何抛出异常和如何接收。 #include