有关学习c++的笔记:
5
cin相当于c中的scanf,例如
cout << "输入一个数字";
cin >> i;
则i为2
cin不仅可以用于int也可以对float,double进行重载,全都可以很方便
6.
cin.ignore(7)
表示忽视前7个字符,如
一个数组buf【20】
输入: i love china 输出:china
7.
cin.getline(buf,10)
表示提取buf数组中的十个字符,和ignore共用可以表示为
char buf[20];
cin.ignore(7); cin.getline(buf,10);
cout<
输入为:i love china i love china
输出为:china i l (只所以会到l截止是因为,最后一个字符是‘\0’)(最后由cout来输出)
8.
cin.read(buf,10)
输入的buf数组字符中只提取十个可用(不包括'\0')(可由write输出)
cout.write(buf,10)
输出buf中的前十个
9.
cout.precision()表示输出输入流中的精度值
cout.precision(num)表示输出指定num的精度值
cout << setprecision(4) << value << endl 表示输出value的八个精度值,如value为1.34,则输出为1.345
cout << fixed << setprecision(4) << value << endl
fixed固定小数位,所限制的精度是给小数的,如1.34,输出为1.3435
另外是这周的一些题
http://acm.hdu.edu.cn/showproblem.php?pid=2031
源代码为:
#include<stdio.h>
#include<string.h>
int main()
{
long N, R, i, s, b;
long j;
char a[1000];
while(scanf("%d%d", &N, &R) != EOF)
{
if(R>=2 && R<=16 && R!=10 )
{
if(N==0)
{
printf("0\n");
}
if(N<0)
{
N = -N;
b = 1;
}
if(N>0)
{
for(i=0;N!=0;i++)
{
j = N%R;
if(j>=10)
{
a[i] = j-10+'A'; //对于十进制数
}
else a[i] = j+'0'; //对于非十进制数
N = N/R;
}
a[i] = '\0';
s = strlen(a);
if(b==1)
printf("-");
b = 0;
for(i=strlen(a)-1;i>=0;i--)
{
printf("%c", a[i]);
}
printf("\n");
}
}
}
return 0;
}
这道题的思路为:首先先求两个数相除的余数然后放入数组中,然后在求两个数的除数,用递归想法,用所得的除数在除与被除数,最后将数组中的数倒叙输出,即是进制后的答案
还有另外一题:
http://acm.hdu.edu.cn/showproblem.php?pid=2032
源代码为:
#include <stdio.h>
#include<string.h>
int main()
{
int i, j, n, b;
int a[32][32];
while(scanf("%d", &n) != EOF)
{
if(n>=1 && n<=30)
{
for(j=0;j<n;j++)
{
for(i=0;i<=j;i++)
{
a[j][i] = 1; //重置数组中的所有数为1方便后续计算
}
}
for(j=2;j<n;j++)
{
for(i=1;i<j;i++)
{
a[j][i] = a[j-1][i-1]+a[j-1][i]; //杨辉三角的基本性质
}
}
for(j=0;j<n;j++)
{
b=0;
for(i=0;i<=j;i++)
{
if(b==0)
printf("%d", a[j][i]);
else printf(" %d", a[j][i]);
b++;
}
printf("\n");
}
printf("\n");
}
}
return 0;
}
这道题的思路:只要理解杨辉三角的性质,就是一道简单的题,这道题的核心在于
1.第n+1行的第i个数等于第n行的第i个数+i-1个数
2.第n行的第i个数和第n+1-i个数相同,最后和第一个数都是为1;
以上两道题有个注意点是:
1.memset(buf, num, sizeof(buf))这个函数用于重置数组的数值很方便,但是却无法重置二维数组,这是因为,这个函数对于每一行,是连续分配的; 然而对于各行之间,却不是连续非配的,容易出错
2.2031的题要注意转为大于10进制数的时候A的进制,做题的时候一直漏掉这个导致浪费很多时间
3.对于2030的汉字统计的题,每个汉字是由两个字符组成的