华为模拟机试题

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值