1、如输入:Z2009-AShanghaiZ
则输出:lenth = 8;
事例说明:从A到Z的子串为SHanghai,其长度是8.
#include <stdio.h>
char func(char str[])
{
char *p = str;
while( *p != 'A') //将p指针指向字符A
{
p++;
}
char *q = p;
while( *q != 'Z')//将q指针指向字符A之后的字符Z
{
q++;
}
return q-1-p;
}
int main(void)
{
char str[100];
printf("请输入一段字符串:");
gets(str);
printf("\n字符串长度为:%d",func(str));
}
3、实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!...+3!+2!+1!
输入 n = 3:结果 3!+2!+1! = 9
函数原型:int jiecheng_sum(int n)
#include <stdio.h>
int jiecheng_sum(int n)
{
int sum = 1;
int i;
if( n == 1)
{
return 1; //当n递归至1时,跳出函数
}
for( i=1 ; i<=n ; i++)
{
sum *= i; //得到n的阶乘
}
return sum + jiecheng_sum( n-1 );//n的阶乘加n-1的阶乘,一直加到n=1;
}
int main(void)
{
int num,i;
printf("请输入一个正整数:");
scanf("%d",&num);
int ret = jiecheng_sum(num);
for( i=num ; i>1 ; i--)
{
printf("%d!+",i);
}
printf("1!= %d",ret);
}
4、给出三个正整数a,b,c,你可以在它们之间插入加号或者乘号以及括号将其变成一个表达式。
现在需要构造一个值最大的表达式,输出这个值。
#include<stdio.h>
int func( int a, int b ,int c)
{
int max;
if( a >= b )
max = a;
else
max = b;
if( max <=c )
max = c; //求出a,b,c中的最大值
if( max == 1 ) //如果a,b,c,都为1,最大值为三个数相加
return a+b+c;
if( max == a )
{
if((b+c) >= (b*c))
return (b+c)*a;
else
return a*b*c;
}
else if( max == b )
{
if((a+c) >= a*c)
return (a+c)*b;
else
return a*b*c;
}
else if( max == c )
{
if((a+b) >= a*b)
return (a+b)*c;
else
return a*b*c;
}
}
int main(void)
{
int a , b , c;
printf("请输入三个数字:");
scanf("%d%d%d",&a,&b,&c);
printf("\n");
int ret = func( a , b , c);
printf("表达式的最大值为:%d",ret);
}
5、 一个数组有N个元素,使用冒泡排序对其进行排序输出
#include<stdio.h>
void maopao(int a[],int lenth)
{
int i,j,temp;
for( i=0 ; i<lenth-1 ; i++ )
{
for( j=0 ; j<lenth-1 ; j++)
{
if( a[j] > a[j+1] )
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
printf("排序后为:");
for( i=0 ; i<lenth ; i++ )
{
printf(" %d",a[i]);
}
}
int main(void)
{
int n,i;
printf("请输入元素个数:");
scanf("%d",&n);
printf("\n");
int a[n];
printf("请输入%d个元素:",n);
for( i=0 ; i<n ; i++)
{
scanf("%d",&a[i]);
}
maopao( a , n);
}