一丶已犯错误
1.定义一个变量为字符,判断其是否为题目中的特定字符,应用‘ ’或“ ”引特定字符,而不是定义的字符
例:输入一行,包含整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
char a;
if(a=='y')
2.cin>>a>>b;和cin>>a;cin>>b;都可表示同一行输入或分两行输入,且同一行输入时自带空格,但cout<<a<<b;输出时不带空格,若题目要求同一行输出应该cout<<a<<" "<<b;否则会Present Error
3.题目中两数相乘常常省略 * ,但程序不能
二丶心得
1.对于使用循环结构求最小值,鉴于首个数字无法表示,可用999999表示,若小于则取小;反之求最大值,首数可用0表示;对于求和,首数也可用0
2.对于画图形的问题,通常使用≥3次循环复合,因此要注意每层 } 的位置,作业中题目的都可通过求行 i 与列 j 的关系来求解,应先在纸上写出每行 i 与 j 的表达式
例:金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。输入一个整数,n>0。输出由n*2-1层“*”号组成的空心菱形。
样例输入5
样例输出
* * * * * * * * * * * * * * * *
int n; cin>>n; for(int i=1;i<=2*n-1;i++){ for(int j=1;j<=2*n-1;j++){ if(j==n+i-1||j==n-i+1||j==3*n-1-i||j==1+i-n) cout<<"*"; else cout<<" "; } printf("\n"); }
观察图形可以注意 i 与 j 间存在关系,通过列出 i 与 j 表格可得 j=n±(i-1)和 j=n±(2n-1-i),后可用if语句判断
3.break使用的情况非常局限,但它在特定情况下非常有用,远比定义bool函数再判断简略
例:输出7和7的倍数,还有包含7的数字。例如(17,27,37...70,71,72,73...),输入一个整数N(N不大于30000)
for(int i=1;i<=n;i++){ if(i%7==0) cout<<i<<endl; else{ a=i; while(a){ if(a%10==7) { cout<<i<<endl; break;} a=a/10; } } }
这里若没有break结果会错误,因为包含多位7的数字会输出多次,如771输出两次,777输出三次
4.对于情况较为复杂和难以描述的,可使用暴力求解法,即一个一个试
例:求两个正整数的最小公倍数。(0<n<10000,0<m<10000)输入一行,两个整数n和m,中间用一个空格隔开。输出一个整数,即n和m的最小公倍数。
int n,m,a,b; cin>>n>>m; a=m*n; b=m*n; for(int i=a;i>=1;i--){ if(i%m==0&&i%n==0&&i<=b) b=i; } cout<<b;
两数的最小公倍数最大为两数的乘积m*n,最小为1,所以从m*n到1一个一个试
5.关于换行:不只有#include<cstdio>下的
printf("\n");
还有#include<iostream>下的
cout<<endl;
6.对于比较代入公式结果大小,输出最大或最小,可另外定义新变量,在中途赋值
例:给出一些整数对,它们表示一些平面上的坐标点,给定一个点,求所有那些点到该点最短距离的点。结构为:第一个整数对为所给定的点,后面的整数对为所有其他的点。输入第一个整数对为所给定的点,后面的整数对为所有其他的点。输出到第一个点最短距离的点。
int a,b,c,d,s,m,e,f; cin>>a>>b; cin>>c>>d; s=pow(a-c,2)+pow(b-d,2); do{ m=pow(a-c,2)+pow(b-d,2); if(m<s){ s=m; e=c; f=d; } }while(cin>>c>>d); cout<<e<<" "<<f;
其中 e 和 f 为记录最值变量的数
7.个人认为较难的题目
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。输入一个整数(范围1到10000),表示天数。输出骑士获得的金币数。
int n,k=1,s=0,i=1; cin>>n; while(i<=n){ for(int j=1;j<=k;j++){ s+=k; i++; if(i>n) break; } k++; } cout<<s<<endl;
其中 i 是计算天数的变量
8.循环结构中的变量也可以在循环结构中定义,但仅在循环结构中有作用,若想要输出经过循环结构变化后的变量,应在循环之前提前定义