C语言作业(3)

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);	
}






  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值