作为一名弱鸡,本人技术较菜,木怪。
例如,输入3名同学的成绩,第一行为几名同学,后面为成绩。
3
45
54
33
可以使用这样的代码:
cin>> n;
while(n--){
dosomething();
}
或者这样操作:
cin>> n; //scanf("%d",&n);
for(int i = 0; i < n; i++){
dosomething();
}
如PAT1033 旧键盘打字输入样例:
7+IE.
7_This_is_a_test.
可以使用getline
来获取每行字符串。
string s1,s2;
getline(cin,s1);
getline(cin,s2);
或者
cin >> s1 >> s2;
如1034 有理数四则运算 输入格式中存在字母和符号
交叉:
2/3 -4/2
可以这样进行处理要得到的数字,在scanf
中穿插使用空格和反斜杠:
int a, b, c, d;
scanf("%d/%d %d/%d", &a, &b, &c, &d);
如1037 在霍格沃茨找零钱输入样例 :
10.16.27 14.1.28
scanf("%d.%d.%d %d.%d.%d", &a, &b, &c, &m, &n, &t);
while( ( scanf(“%d”,&a) ) != -1 )
while( ( scanf(“%d”,&a) ) != EOF)
while( ( scanf(“%d”,&a) ) == 1 )
while( ~( scanf(“%d”,&a) ) )
C++版:
int c;
while ((c = cin.get()) != EOF)
while( scanf(“%d”,&a) ,a)
如1067.试密码 (20 分)第一行要求输入Correct%pw 3
,题目中在3
后多余一个空格,可以使用以下代码:
cin>> str>> num;
getchar();
输出格式和输入基本相同,不做详细介绍。
可能有些同学会纠结末尾无空格,例如。
2 3 4 5 3
如果上述数据存放在一个a[5]
数组中,可以这样实现:
for(int i = 0; i < 5; i++)
printf("%d%s",a[i],i == 5-1 ? "" : " ");
如:1021 个位数统计和1038 统计同成绩学生可以巧用数组下标来节省空间,如1038统计同成绩,因为成绩不超过100,所以可以使用a[100]数组来进行数据处理。
int main()
{
int n, under, a[101] = {0}, k, target;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> under;
a[under]++;
}
cin >> k;
for (int i = 0; i < k; i++) {
cin >> target;
printf("%d%s", a[target], i == k - 1 ? "" : " ");
}
return 0;
}
如上述代码中,输入成绩为80,a[80]就会的值就会+1
,这样既可以节省空间又可以便于输出。
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a%b);
}
已级中,有一题需要打印百分号(%),使用:
printf("%%"); // 输出一个百分号
头文件:#include
isalnum
是字⺟母数字;isalpha
是字⺟母; isdigit
是数字; isupper
是⼤大写字
⺟母; islower
是⼩小写字⺟母;isblank
是空格/tab键; isspace
是空格/tab键/回⻋车
double
例如:乙级 1088.三人行等,浮点数定义:
float f; //不使用这种
double f; //使用double型