Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142062
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-04 13:11
文章分类

全部博文(29)

文章存档

2015年(2)

2014年(27)

我的朋友

分类: C/C++

2014-03-12 19:10:26

1 排序问题(冒泡法)

#include

#include

#include

void BubbleSort(int a[],int length)

    int temp=0;

    int i,j;

    for(i=0;i

    for(j=0;j

    {

        if(a[j]>a[j+1])

        { 

            temp=a[j];

            a[j]=a[j+1];

            a[j+1]=temp;

        }

   }

}

void main()

{

    int i;

    int a[5];

    for(i=0;i<5;i++)

       scanf("%d",&a[i]);

    BubbleSort(a,5);

    for(i=0;i<5;i++)

       printf("%d ",a[i]); 

}


2去掉最大值与最小值,求平均分数


#include

float avescore(float a[],int num)

    int i;

    float max,min,sum,ave;

    max=a[0];

    min=a[0];

    sum=0;

    for(i=0;i

    {     

       if(a[i]>max) max=a[i];

       if(a[i]

       sum=sum+a[i];

    }

    ave=(sum-max-min)/(num-2);

    return ave;

   

}

void main()

{

    int i;

    float a[5];

    float ave;

    for(i=0;i<5;i++)

       scanf("%f",&a[i]);

    ave=avescore(a,5);  

    printf("%f ",ave);  

}


3把一个字符串中的除大写字母、小写字母和数字字符之外的其他字符都去掉。


#include

#include

void my_string(char* input, char* output)

{

      int i,j;

      i=j=0;

      while(*(input+i)!='\0')

      {

      if((*(input+i)>='A'&&*(input+i)<='Z')||(*(input+i)>='a'&&*(input+i)<='z')||(*(input+i)>='0'&&*(input+i)<='9'))

           {

                 *(output+j) = *(input+i);

                 j++;

           }

           i++;

      }

      *(output+j)='\0';

}

void main()

{

      char a[20],b[20];

      gets(a);

      my_string(a,b);

      puts(b);

}


4通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"


#include

#include

#include

void stringZip(const char *p_str, long len, char *p_outstr)

{

      int num,i;

      num=1;

      for(i=0;i

      {

           if(p_str[i]==p_str[i+1])

           {

                 num++;

           }

           else

           {

                 if(num>1)

                 {

                      *p_outstr++=num+'0';

                      *p_outstr++=p_str[i];

                      num=1;

                 }

                 else

                 {

                      *p_outstr++=p_str[i];

                 }

           }

      }

      *p_outstr++ = '\0';

}

 

void main()

{

     

      char *str = "ssssjjrkkk";

      long len = strlen(str);

      char *outstr = (char*)malloc(len*sizeof(char));

      printf("输入前的字符:%s\n",str);

      stringZip(str,len,outstr);

      printf("输入后的字符:%s\n",outstr);

      free(outstr);

      outstr = NULL;

}


5输入整型数组求数组的最小数和最大数之和


#include

int main()

{

      int num[50]={0};

      int i,j,n;

      int num_max,num_min;

      int sum;

      printf("请输入整形数组的长度:");

      scanf("%d",&n);

      printf("请输入整形数组的元素:");

      for(i=0;i

      {

           scanf("%d",&num[i]);

      }

      num_max=num_min=num[0];

      for(j=0;j

      {

           if(num[j]>=num_max)

                 num_max=num[j];

           if(num[j]<=num_min)

                 num_min=num[j];

      }

      sum=(num_max+num_min);

      printf("数组中最大与最小值之和:%d\n",sum);

      return 0;


}


6手机号码合法性判断


#include

int verifyMsisdn(char* inMsisdn)

{

      int i;

      char *p;

      p=inMsisdn;

      if(((*p++)!='8')||((*p++)!='6'))

      {

           return 3;

      }

      for(i=0;i<11;i++)

      {

           if((*p<'0')||(*p>'9'))

           {

                 if(*p=='\0') return 1;

                 else

                 {

                      return 2;

                 }   

           }

           p++;

      }

      if(*p!='\0') return 1;

      return 0;

}

void main()

{

      int i;

      char a[20];

      while(1)

      {

           printf("输入手机号码:");

           gets(a);

           i=verifyMsisdn(a);

           printf("%d\n",i);

      }

}


7输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母

#include

#include

#include

void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr)

{

     int i=0;

     for(i=0;i

     {

         if(pInputStr[i]>='A'&&pInputStr[i]<'V')

         pOutputStr[i]=pInputStr[i]+'a'-'A'+5;

         else if(pInputStr[i]>='V'&&pInputStr[i]<='Z')

         pOutputStr[i]=pInputStr[i]+'a'-'A'-21;

         else

         pOutputStr[i]=pInputStr[i];

     }

}

void main()

{

    char *inputstr = "SFJFKFD";

    long len = strlen(inputstr);

    char *outputstr = (char*)malloc(len*sizeof(char));

    printf("输入前的字符:%s\n",inputstr);

    TransferString(inputstr,len,outputstr);

    printf("输入后的字符:%s\n",outputstr);

    free(outputstr);

    outputstr = NULL;

}

8 有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序


#include

#include

#include

void sortVowel (char* input, char* output)

{

      int i;

      char a[10]={'a','e','i','o','u','A','E','I','O','U'};

      char *temp;

      for(i=0;i<10;i++)

      {

           temp=input;

           while(*temp!='\0')

           {

                 if(*temp==a[i])

                 {

                      *output=a[i];

                      output++;

                      temp++;

                 }

                 else temp++;

           }

      }

}

void main()

{

      char *input = "SFJaeiA";

      char output[10]={0};

      printf("输入前的字符:%s\n",input);

      sortVowel(input,output);

      puts(output);

}


 


9通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。


#include

#include

#include

void DivideString(const char *InputStr, long InputLen, char *OutputStr)

{

      int i;

      for(i=0;i

      {

           if(*InputStr=='\0')

           {

                 *OutputStr=',';

                 *(OutputStr+1)='\0';

           }         

           else

           {

                 if(*InputStr==' ')

                 {   

                      if((*(OutputStr-1))==',')

                            InputStr++;

                      else

                      {

                            *OutputStr=',';

                            InputStr++;

                            OutputStr++;

                      }

                 }

                 else

                 {

                      *OutputStr=*InputStr;

                      InputStr++;

                      OutputStr++;

                 }

           }

      }

}

void main()

{

      char a[20]={0};

      char *input=a;

      char *output;

      gets(a);

      for(len=1;len<20;len++)

      {

           while(a[len]!='\0')

           {

                 len++;

           }

      }

      output=(char*)malloc(len*sizeof(char));

      DivideString(input,len,output);

      puts(output);

free(output);

      output= NULL;

}


10将输入的字符串(字符串仅包含小写字母‘a’‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bczz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

#include

#include

#include

void convert(char *input,char* output)

{

      int len=strlen(input);

      int i,tag;

      char c='\0';

      tag=0;

      for(i=0;i

      {

           if(input[i]!=c)

           {

                 output[i]=(input[i]-'a'+1)%26+'a';

                 c=input[i];

                 tag=1;

           }

           else

           {

                 if(tag==1)

                 {

                      output[i]=(input[i]-'a'+2)%26+'a';

                      c='\0';

                      tag=0;

                 }

                 else

                 {

                      output[i]=(input[i]-'a'+1)%26+'a';

                      c=output[i];

                      tag=1;

                 }

           }

      }

      *(output+len)='\0';

}

void main()

{

      char a[20];

      char *input=a;

      char *output;

      gets(a);

      output=(char*)malloc(20*sizeof(char));

      convert(input,output);

      puts(output);

      free(output);

      output= NULL;

}

 

 

 

 

阅读(1533) | 评论(0) | 转发(0) |
0

上一篇:UCOS优先级调度算法

下一篇:cache操作

给主人留下些什么吧!~~