2024年5月13日发(作者:oppor11st手机价格)
华为机试题及答案
1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。
请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’
并将子串存储。
测试:输入:“abc def gh i d” 输出:“abc,def,gh,i,d,”
#include<>
#include<>
void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int i=0,j=0;
int flag=0;
while(pInputStr[i]==' ')
{
i++;
}
for(;i { if(pInputStr[i]==' ') { flag=1; continue; } if(flag==1) { flag=0; pOutputStr[j++]=','; } pOutputStr[j++]=pInputStr[i]; } pOutputStr[j++]=','; pOutputStr[j]='0'; } int main() { char test[40]; char re[40]; gets(test); DivideString(test, strlen(test), re); printf("%s",re); return 0; } 2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转 换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个 字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两 个时,第三个出现的字母按第一次出现算。 测试:输入:char*input="abbbcd" 输出:char*output="bcdcde" #include<> #include<> void convert(char *input,char* output) { int i; for(i=0;i { if(i==0) { output[i]=input[i]+1; if(output[i]==123) { output[i]=97; } } else { if(input[i]!=input[i-1]) { output[i]=input[i]+1; if(output[i]==123) { output[i]=97; } } else { output[i]=input[i]+2; if(output[i]==123) { output[i]=97; } if(output[i]==124) { output[i]=98; } } } } output[i+1]='0'; } int main() { char in[20]={"asdfzzxzxz"}; char on[20]; //gets(in); convert(in,on); printf("%s",on); return 0; } 3、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若 字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 测试:输入:“afafafaf” 输出:“af” #include<> #include<> void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr) { int i,j,count; int k=0; for(i=0;i { count=0; for(j=0;j { if(pInputStr[i]==pOutputStr[j]) { count++; } } if(count==0) { pOutputStr[k++]=pInputStr[i]; } } pOutputStr[k]='0'; } int main() { char in[20]={"aabbccabacddsads"}; char on[20]; //gets(in); stringFilter(in,strlen(in),on); printf("%s",on); return 0; } 4、通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将 字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 测试:输入:“cccddecc” 输出:“3c2de2c” #include<> #include<> void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { int i,j=0,num=0; int k=0; for(i=0;i<=lInputLen;i++) { if(i&&pInputStr[i]!=pInputStr[i-1]) { if(num>1) { pOutputStr[j++]=(char)num+'0'; } pOutputStr[j++]=pInputStr[i-1]; num=1; } else { num++; } } pOutputStr[j]='0'; } int main() { char in[20]={"ccddecc"}; char on[20]; //gets(in); stringZip(in,strlen(in),on); printf("%s",on); return 0; } 5、通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字 符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之 间以一个空格隔开。 测试:输入:“4 - 7” 输出:“-3” #include<> #include<> #include<> void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr) { int i,count=0,re=0; int x,y,z; int num[2]={0}; char op; for(i=0;i { if(pInputStr[i]==' ') { count++; } } if(count!=2) { pOutputStr[0]='0'; pOutputStr[1]='0'; return; } for(x=0;pInputStr[x]!=' ';x++) { if(pInputStr[x]>='0'&&pInputStr[x]<='9') { num[0]=num[0]*10+pInputStr[x]-'0'; } else { pOutputStr[0]='0'; pOutputStr[1]='0'; return; } } for(y=x+1;pInputStr[y]!=' ';y++) { } if(y-x-1!=1) { pOutputStr[0]='0'; pOutputStr[1]='0';
发布者:admin,转转请注明出处:http://www.yc00.com/num/1715579537a2639760.html
评论列表(0条)