入门篇(1)——入门模拟(3.5进制转换)
B1037 在霍格沃茨找零钱
notes B1021 个位数统计(重点)
我的代码note B1014 福尔摩斯的约会/A1061 Dating
notes A1073 Scientific Notation/B1024 科学计数法
notes
入门篇(1)——入门模拟(3.5进制转换) B1037 在霍格沃茨找零钱#includenotesbool exchange(int a[3],int b[3]){ //a>b则返回true if(a[0]>b[0]) return true; else if(a[1]>b[1]&&a[0]==b[0]) return true; else if(a[2]>b[2]&&a[0]==b[0]&&a[1]==b[1]) return true; else return false; } int main(){ int l[3],a[3]; scanf("%d.%d.%d",&l[0],&l[1],&l[2]); scanf("%d.%d.%d",&a[0],&a[1],&a[2]); if(exchange(l,a)==true){ int temp; for(int i=0;i<3;i++){ temp=l[i]; l[i]=a[i]; a[i]=temp; } printf("-"); } for(int i=0;i<3;i++){ a[i]-=l[i]; } if(a[2]>28){ a[2]-=29; a[1]+=1; } if(a[2]<0){ a[2]+=29; a[1]-=1; } if(a[1]>16){ a[1]-=17; a[0]+=1; } if(a[1]<0){ a[1]+=17; a[0]-=1; } printf("%d.%d.%d",a[0],a[1],a[2]); }
- 本题也可以通过将钱全部换算成最小单位的方式计算,代码会更简洁。
#includenote#include int b[10]; int main(){ char c; int n; memset(b,-1,sizeof(b)); do{ scanf("%c",&c); n=(int)c-48; if(n>=0){ b[n]++; } }while(n>=0); for(int j=0;j<10;j++){ if(b[j]!=-1){ printf("%d:%dn",j,b[j]+1); } } }
- 我写的这个代码有点乱七八糟,用gets()输入会好很多!(如下:)scanf()、getchar()、gets()。scanf("%s",s)以换行和空格为结束;getchar()用于接收单个字符;getchar()和scanf("%c",&c)都会接收换行和空格;gets(char str)用于接收字符串存入char数组,它识别换行符n为输入结束!
#include#include char a[1010]; int b[10]={}; int main(){ int n; gets(a); n=strlen(a); for(int i=0;i B1014 福尔摩斯的约会/A1061 Dating #includenotes#include #include int min(int a,int b){ if(a='A'&&str[0][i]<='G'){ printf("%s ",day[str[0][i]-'A']); break; } } for(i++;i ='A'&&str[0][i]<='N'){ printf("%02d:",str[0][i]-'A'+10); break; } else if(str[0][i]==str[1][i]&&str[0][i]>='0'&&str[0][i]<='9'){ printf("%02d:",str[0][i]-'0'); break; } } for(int j=0;j ='a'&&str[2][j]<='z')||(str[2][j]>='A'&&str[2][j]<='Z'))){ printf("%02d",j); break; } } } 这块代码我写了好久好久,比如第37行第三块比较的字符不仅可以是小写字母也可以是大写字母一直到最后才发现。
A1073 Scientific Notation/B1024 科学计数法
以及第二块比较的字符是0-9和A-N;之前一直把0-9漏掉了。题目本身并不难,题意理解很重要!!!!另)在if else if语句中当第一个if条件成立时,不论第二个else if条件是否成立,都不执行else if语句,即if else if语句由上至下只执行其中一个分支就结束该条件判断代码段!
也就是即便很多条件其实都成立,但写在前面的分支优先级高!#include#include #include char str[10100]; int main(){ gets(str); int len=strlen(str); int i,expolent=0; if(str[0]=='-') printf("-"); for(i=len-1;i>=0;i--){ if(str[i]=='+'||str[i]=='-') break; expolent+=(str[i]-'0')*pow(10,len-1-i); } if(expolent==0){ for(int j=1;j expolent){ int j=3; while(expolent--){ putchar(str[j++]); } printf("."); for(;j notes 注意题干说了长度不超过9999bite,起初一直设的char[]长度不够长,才导致一直最后一个测试点“运行时出错”。这种问题出现好几次了。!!!!!透彻理解题意!一个char变量需要一个字节来存储。



