标签:png lan 不能 mic 计时器 cin info 赋值 string
本题考查字符串的知识,但是我选择了不使用字符串,因为字符串较为繁琐,下面是我的题解:
1 #include<cstdio> 2 using namespace std; 3 int main() 4 { 5 int x,y=0; 6 scanf("%d",&x);//输入开始的数 7 while(x!=0)y=y*10+x%10,x/=10;//将x的每一位数倒序赋值给y 8 printf("%d\n",y);//输出y值 9 return 0; 10 }
因为洛谷上给的算法标签是字符串,我又重打了一遍代码:
1 #include<bits/stdc++.h>//万能头文件 2 using namespace std; 3 string s1,s2;//定义两个字符串 4 int len,f,s;//定义三个整型变量 5 int main() 6 { 7 cin>>s1;//输入一个字符串 8 len=s1.length();//读取这个字符串的长度 9 if(s1[0]==‘-‘)//如果是负数 10 { 11 s2[0]=‘-‘;//先确定符号是负号 12 for(int i=1,j=len-1;i<len,j>=0;i++,j--) 13 s2[i]=s1[j];//倒叙将字符串里面的每一个字符放进一个空字符串里作为最后的答案 14 } 15 else//否则,也就是正数 16 { 17 for(int i=0,j=len-1;i<len,j>=0;i++,j--) 18 s2[i]=s1[j];//同上的操作 19 } 20 //然后进行输出 21 if(s2[0]==‘-‘)//如果是负数 22 { 23 cout<<‘-‘;//先输出一个负号 24 int sum=1;//这个变量是要去零的,因为负数的高位不能为零,看一下样例2就知道了 25 while(s2[sum]==‘0‘) 26 sum++;//当字符为零时,计时器++,做到了去零的作用,当循环结束后说明找到了第一个不为零的数 27 for(int i=sum;i<len;i++)//进行输出 28 cout<<s2[i]; 29 } 30 else//否则,也就是正数 31 { 32 for(int i=0;i<len;i++) 33 { 34 if(s2[i]==‘0‘) 35 f=1; 36 }//这个循环是想确定这个字符串中是否有零 37 if(f==0)//如果没有零 38 { 39 for(int i=0;i<len;i++) 40 cout<<s2[i];//直接输出 41 } 42 else//否则,也就是有零 43 { 44 int sum=1; 45 while(s2[sum]==‘0‘) 46 sum++;//同上的操作 47 for(int i=sum;i<len;i++) 48 cout<<s2[i];//然后再输出 49 } 50 } 51 return 0;//宣告程序圆满结束 52 }
10行VS52行,字符串是真的长。
标签:png lan 不能 mic 计时器 cin info 赋值 string
原文地址:https://www.cnblogs.com/Kyriech-Francis/p/12244692.html