第一章 入门模拟
题目要求输入T个数
while ( T-- )
{
cout<< T;
}
题目要求输出用空格隔开,最后一个不带空格
for ( int i = 0 ; i < n; i++ )
{
if ( i)
cout<< " " << a[ i] ;
else
cout<< a[ i] ;
}
scanf对其他格式符(如%d,%s)的输入以空白符(即空格、换行等)为读入结束标志,而scanf的%c格式可以读入空格与换行,因此,在scanf完一个整数后,如果使用gets(gets以换行为结束标志,可以读入空格),%c,getline(cin, str)(以换行为结束标志,可以读入空格),需先用getchar接收整数后面的换行或者空格,而用%d%s或者cin读入整形+字符串则不需要吸收换行符。
int n;
char c;
scanf ( "%d" , & n) ;
getchar ( ) ;
scanf ( "%c" , & c) ;
关于溢出:两个正数之和等于负数或者两个负数之和等于正数,那么就是溢出 对于给定区间,区间内两个数运算的溢出边界: 两个最大值相加溢出的边界:左边界为区间左端点,右边界为两数之和对区间长度取余。 两个最小值相加的边界:右边界为区间右端点,左边界为两数之和对区间长度取余。
scanf ( "%lld%lld%lld" , & a, & b, & c) ;
res = a + b;
if ( a > 0 && b > 0 && res < 0 )
flag = true ;
else if ( a < 0 && b < 0 && res >= 0 )
flag = false ;
else if ( res > c)
flag = true ;
else
flag = false ;
输入到文件末尾
int m[ 1000 ] ;
int num = 0 ;
while ( scanf ( "%d" , & m[ num] ) != EOF )
num++ ;
输入特殊格式,可不用string类型存储
struct person
{
char name[ 100 ] ;
int year, month, day;
} ;
person a;
scanf ( "%s%d/%d/%d" , a. name, & a. year, & a. month, & a. day) ;
日期或时间比大小
struct time
{
int hour;
int minute;
int second;
} ;
bool cmp ( time t1, time t2)
{
if ( t1. hour != t2. hour)
return t1. hour > t2. hour;
if ( t1. minute != t2. minute)
return t1. minute > t2. minute;
return t1. second > t2. second;
}
题目中要输入一个对象的多个参数时,可以考虑构建结构体,很多时候非常方便 进制转换
int n, b;
scanf ( "%d%d" , & n, & b) ;
int result[ 100 ] = { 0 } , len = 0 ;
do {
result[ len++ ] = n % b;
n / = b;
} while ( n) ;
将数字拆分用数组存储
while ( sum)
{
nums[ len++ ] = sum % 10 ;
sum / = 10 ;
}
第二章 算法初步
c++ sort排序cmp函数,对结构体进行一级、二级、三级…排序
struct person{
int number;
int de;
int cai;
int sum;
int leibie;
} ;
bool cmp ( person a, person b)
{
if ( a. leibie != b. leibie)
return a. leibie < b. leibie;
else if ( a. sum != b. sum)
return a. sum > b. sum;
else if ( a. de != b. de)
return a. de > b. de;
else
return a. number < b. number;
}