赞
踩
int pos =(int )x1+(int )x2;
int pos =int(x1)+int(x2);
将他们作为double类型相加,再进行转换,可采取下述方法之一
int pos = (int)(x1+x2);
int pos = int (x1+x2);
char actor[30];
short betsie[100];
float chuck[13];
long double dipsea[64];
arrary<char,30> actor;
array<short,100> betsie;
array<float,13>;
array<long double,64> dipsea;
int arr[5] {1,3,5,7,9};
int even = arr[0] + arr[4];
cout<<ideas[1]<<endl;
char str1[] = “cheeseburger”;
string str2 = “Waldorf Salad”;
struct fish
{
char kind[30];
int weight;
double length;
}
fish a ={“shark”,100,100.1};
enum Response{No,Yes,Maybe};
double *ptr = &ted;
cout<<*ptr<<endl;
float *ptr = treacle;
cout<<*ptr<<endl;//第一个元素
cout<<*(ptr+9)<<endl;//最后一个,注意是加9
int num;
cin>>num;
int *ptr = new int [num];
vector<int> vi(num);
有效,打印出该字符串首字符的地址
struct fish{char name[10];int weight;double length;};
fish *ptr = new fish;
cin>>ptr->length;
cout<<ptr->weight<<endl;
delete ptr;
第二句没有指明应该读取多少数据。所以address被分配的内存可能不够用来存放用户输入的数据,从而导致数组越界,发生程序崩溃或者某些不可预知的后果。
#include <vector>
#include <string>
#include <array>
const int count = 10;
std::vector<string> vs(count);
std::array<string,10> as;
1.入口条件循环和出口条件循环之间的区别是什么?各种c++循环分别属于其中的哪一种?
入口循环就是程序在执行循环体中的语句之前先检查循环条件;出口循环是在执行循环体中的语句之后检查循环条件。for循环和while循环都是入口条件循环;do while循环为出口条件循环。
int i;
for(i=0;i<5;i++)
cout<<i;
cout<<endl;
01234
int j;
for(j=0;j<11;j+=3)
cout<<j;
cout<<endl<<j<<endl;
0369
12
int j=5;
while(++j<9)
cout<<j++<<endl;
6
8
int k=8;
do
cout<<"k="<<k<<endl;
while(k++<5);
k= 8
int i;
for(i=1;i<=64;i*=2)
cout<<i<<" ";
如何在循环体中包括多条语句?
将语句放在一对大括号中形成一个复合语句或代码块。
下面的语句是否有效?如果无效,原因是什么?如果有效,它将完成什么工作?
a. int x={1,024}
b. int y=1,024;
语句a是有效的,表达式1,024为逗号表达式,该表达时的右侧表达式的值,由于024为8进制数,对应的十进制数为20,因此x的值应为20,即x=20。
语句b也是有效的,但是逗号运算符的优先级低于赋值运算符,因此b中表达式等效为(int y=1),024;。
cin>>ch将跳过空格、换行符和制表符,其他两种格式将读取这些字符。
1 .请看下面两个计算空格和换行符数目的代码片段:
//version 1 while(cin.get(ch)) //quit on eof { if(ch==' ') spaces++; if(ch=='\n') newlines++; } //version 2 while(cin.get(ch)) //quit eof { if(ch==' ') spacees++; else if(ch=='\n') newlines++; }
第二个格式比第一个格式好在哪里?
第二个版本比第一个版本效率更高,因为在第一个中对于每个字符都需要判断两次,而在第二个版本中,如果字符为空格,在经过if判断确定为空格后,该字符肯定不是换行符,第二个else if的判断直接跳过,节省判断时间。
// ifelse.cpp -- using the if else statement #include <iostream> int main() { char ch; std::cout << "Type, and I shall repeat.\n"; std::cin.get(ch); while (ch != '.') { if (ch == '\n') std::cout << ch; // done if newline else std::cout << ++ch; // done otherwise std::cin.get(ch); } // try ch + 1 instead of ++ch for interesting effect std::cout << "\nPlease excuse the slight confusion.\n"; // std::cin.get(); // std::cin.get(); return 0; }
++ch的数据类型依旧是char型,但对于char+1最终类型为int型,因此当++ch换成ch+1后,输出的是数字。
#include<iostream> using namespace std; int main() { char ch; int ct1,ct2; ct1=ct2=0; while((ch=cin.get())!='$') { cout<<ch; ct1++; if(ch='$') ct2++; cout<<ch; } cout<<"ct1="<<ct1<<",ct2="<<ct2<<"\n"; return 0; }
假设输入如下(请在每行末尾按回车键):
Hi!
Send $10 or $20 now!
则输出将是什么(还记得吗,输入被缓冲)?
输入输出结果为
Hi!
H$i$!$
$Send $10 or $20 now!
S$e$n$d$ $ct1=9,ct2=9
//a weight>=115 && weight<125 //b ch=='q' || ch=='Q' //c x%2==0 && x!=26 //d x%2==0 && x%26!=0 //e donation>=1000 && donation<=20000 || guest==1 //f (ch>='a' && ch<='z') || (ch<='Z' && ch>='A')
对于bool变量而言,!!x与x是相同的,但对于其他类型变量不一定相同,例如!!5=1,!!5≠5。
创建一个条件表达式,其值为变量的绝对值。也就是说,如果变量x为正,则表达式的值为x;但如果x为负,则表达式的值为-x–这是一个正值。
x>=0 ? x : -x;
用switch改写下面的代码片段:
if(ch=='A')
a_grade++;
else if(ch=='B')
b_grade++;
else if(ch=='C')
c_grade++;
else if(ch=='D')
d_grade++;
else
f_grade++;
改代码后
switch(ch)
{
case 'A' : a_grade++;
break;
case 'B' : b_grade++;
break;
case 'C' : c_grade++;
break;
case 'D' : d_grade++;
break;
default : f_grade++;
break;
}
// switch.cpp -- using the switch statement #include <iostream> using namespace std; void showmenu(); // function prototypes void report(); void comfort(); int main() { showmenu(); int choice; cin >> choice; while (choice != 5) { switch (choice) { case 1: cout << "\a\n"; break; case 2: report(); break; case 3: cout << "The boss was in all day.\n"; break; case 4: comfort(); break; default: cout << "That's not a choice.\n"; } showmenu(); cin >> choice; } cout << "Bye!\n"; return 0; } void showmenu() { cout << "Please enter 1, 2, 3, 4, or 5:\n" "1) alarm 2) report\n" "3) alibi 4) comfort\n" "5) quit\n"; } void report() { cout << "It's been an excellent week for business.\n" "Sales are up 120%. Expenses are down 35%.\n"; } void comfort() { cout << "Your employees think you are the finest CEO\n" "in the industry. The board of directors think\n" "you are the finest CEO in the industry.\n"; }
使用数字作为菜单选项和case标签,限定了用户只有输入数字的时候才能有效,若用户错误的输入非整数类型,导致程序被挂起。而使用字符作为菜单选项和case标签,当用户输入错误类型,程序能正确通过default部分提示用户输入错误,用户体验更加友好,提高了程序的容错性和健壮性。
9.请看下面的代码片段
int line = 0;
char ch;
while(cin.get(ch))
{
if(ch=='Q')
break;
if(ch!='\n')
continue;
line++;
}
int line = 0;
char ch;
while(cin.get(ch) && ch!='Q')
{
if(ch=='\n')
line++;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。