分类: 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 转换为 bc,zz 转换为 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;
}