1.密码截取:
如12332145截取123321回文数
输入:数字
输出:回文数的位数
/*#include<iostream>//自己写的,测试用例有1错
using namespace std;
int main()
{
char s[100];
int count=0;
int max=0;
while(cin>>s)
{
for (int i=0;i<=strlen(s)/2;i++)
for (int j=strlen(s)-1;j>=strlen(s)/2;j--)
{
int i1=i;
int j1=j;
while(s[i1]==s[j1]&&i1<=j1)
{
if(i1==j1)
{
i1++;
j1--;
count++;
}
else
{
i1++;
j1--;
count+=2;
}
}
if(count>max)
max=count;
count=0;
}
cout<<max<<endl;
return 0;
}
}*/
# include<iostream>//网上
using namespace std;
# include<string.h>
int main(void)
{
char a[300];
int i,j,max,num,m;
while(cin>>a)
{
max = num = 0;
m = strlen(a);
for(i=0;i<m;i++)
{
for(j=0;i-j>=0 && i+j<m;j++) //对奇数的处理
{
if(a[i-j]!=a[i+j]) break;
if(2*j+1>max) max = 2*j+1;
}
for(j=0;i-j>=0 && i+j+1<m;j++) //对偶数的处理
{
if(a[i-j]!=a[i+j+1]) break;
if(2*j+2>max) max = 2*j+2;
}
}
printf("%d\n",max);
memset(a,0,sizeof(a));
}
return 0;
}
2.递减数,如75345323,递减数有753,53,53,532,32
最大的递减数为753
各位数和最大的是7+5+3=15,最大的为753
输入:整数,负数转为整数操作
输出:最大递减数和各位和最大递减数之和
/*#include<iostream>
using namespace std;
#include<math.h>
int main()
{
int a;
int max=0;
cin>>a;
int i,n=0;
int b[300];
int c[300];
int k=0;
int flag=0;
while(a/int((pow(10,n)))!=0)
{
n++;
}
for(i=0;i<n;i++)
{
b[i]=(a % int(pow(10,i+1)))/pow(10,i);
}
//b[i]=a%(pow(10,i+1))/pow(10,i);
//int start1=0;
//int start2=1;
for(i=0;i<n;i++)
{
int start1=i;
int start2=i+1;
while(b[start1]<b[start2])
{
c[k]=b[start1]*pow(10,start1)+b[start2]*pow(10,flag);
k++;
start1++;
start2++;
flag++;
//continue;
}
//break;
//b[i]<b[j]
//cout<<b[i]<<endl;
}
for(i=0;i<k;i++)
{
cout<<c[k]<<endl;
}
//for(i=0;i)
//cout<<(a);
return 0;
}*/
#include<iostream>
using namespace std;
int getMax(int num)
{
char s[100];
int max;
int temp;
int i;
int flag=0;
sprintf(s, "%d", num); //convert num to string
temp = s[0] - '0'; //initial
max = 0;
for(i=1; i<strlen(s); i++)
{
//max = temp = s[i-1] - '0';
if (s[i] < s[i-1])
{
temp = temp * 10 + (s[i] - '0');
flag++;
}
else
temp = s[i] - '0';
if (temp > max && flag>0)
max = temp;
}
return max;
}
int getAddMax(int num)
{
char s[100];
int max;
int maxsum;
int temp;
int temp1;
int i;
int flag = 0;
sprintf(s, "%d", num); //convert num to string
temp = s[0] - '0'; //initial
max = 0;
maxsum = temp1 = s[0] - '0';
//max = temp = s[0];
for(i=1; i<strlen(s); i++)
{
if (s[i] < s[i-1])
{
//if(i==1)
//{
// temp = temp * 10 + (s[i] - '0');
temp1 = temp1 + s[i]- '0'+s[i-1]- '0';
// flag++;
// }
//else
// {
temp = temp * 10 + (s[i] - '0');
temp1 = temp1 + s[i]- '0';
flag++;
//}
}
else
{
temp = s[i] - '0';
temp1 = s[i]- '0';
}
if (temp1 > maxsum && flag>0)
{
maxsum = temp1;
max = temp;
}
}
return max;
}
int main()
{
int a;
while(cin>>a)
{
if(a<0)
{
a=-a;
}
cout<<getMax(a)+getAddMax(a)<<endl;
}
return 0;
}
int sprintf( char *buffer, const char *format, [ argument] … );
主要功能是把格式化的数据写入某个字符串中。
#include<stdio.h>/*某个stdio.h*/
int
main()
/*主函数“整数”类型*/
{
char
buffer[50];
/*“字符”类型的数组,下面共有50个元素。*/
int
n,a=5,b=3;
/*三个变量都为“整数”类型,intn中间要有空格*/
n=
sprintf
(buffer,
"%d plus %d is %d"
,a,b,a+b);
/*赋予数值*/
printf
(
"[%s]is a string %d chars long\n"
,buffer,n);
/*“格式输出函数”*/
return
0;
/*“返回零”
也就是程序正常退出*/
}
|
[5 plus 3 is 8] is a string 13 chars long
|