第六章 函数 作业

1、在主函数定义二维数组,在有参无返函数中实现杨慧三角。

#include<stdio.h>
#include<string.h>	

void key(int n,int a[n][10]);
int main(int argc, const char *argv[])
{
	int n=0;
	printf("please enter n:");
	scanf("%d",&n);
	int a[n][4];

	key(n,a);
	return 0;
}
void key(int n,int a[n][10])
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<=i;j++)
		{
			if(j==0||i==j)
			a[i][j]=1;
			else
			a[i][j]=a[i-1][j]+a[i-1][j-1];
			printf("%d",a[i][j]);
		}
		putchar(10);
	}
}

2.在主函数定义二维数组并输入,在有参有返函数中计算二维数组的第二大值。
eg:数组元素是{12 4 34},{ 5 34 4}
        则第二大值是12,返回第二大值。

#include<stdio.h>
#include<string.h>
// 输入二维数组 寻找第二大值 ,有参有返 
int second(int a[2][3]);
int main(int argc, const char *argv[])
{		
	int a[2][3],i,j;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	int k=second(a);
	printf("k=%d\n",k);
	return 0;
} 
int second(int a[2][3])
{
	int i,j;
	int max=a[0][0];
	int second = a[0][0];
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			if(max<=a[i][j])
			{
				max=a[i][j];
			}
		}
	}	
	i = 0;
	j = 0;
	if(second == max)
	{
		second=a[i+1][j+1];
	}
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			if(second<=a[i][j]&&a[i][j]!=max)
			{
				second=a[i][j];
			}
		}
	}
	return second;
}

3.在主函数中定义两个字符串并输入,在有参无返函数中实现字符串拷贝。

#include<stdio.h>
#include<string.h>

//输入两个字符串 实现 字符串拷贝 有参无返 
void cpy(char a[10],char b[10]);

int main(int argc, const char *argv[])
{
	char a[10];
	char b[10];
	printf("please enter a:");
	gets(a);
	printf("please enter b:");
	gets(b);
	cpy(a,b);
    return 0;

}
void cpy(char a[10],char b[10])
{
	int i=0;
	while(b[i]!='\0')
	{
		a[i]=b[i];
		i++;
	}
	a[i]='\0';
	puts(a);
	puts(b);
}

4.在主函数中定义两个字符串并输入,在有参无返函数中实现字符串链接。

#include<stdio.h>
#include<string.h>

//输入两个字符串 实现 字符串连接 有参无返 
void cat(char a[10],char b[10]);

int main(int argc, const char *argv[])
{
	char a[10];
	char b[10];
	printf("please enter a:");
	gets(a);
	printf("please enter b:");
	gets(b);
	cat(a,b);
    return 0;

}
void cat(char a[10],char b[10])
{
	int i=0,j=0;
	while(a[i]!='\0')
	{
		i++;
	}
	while(b[j]!='\0')
	{
		a[i+j]=b[j];
		j++;
	}
	a[i+j]='\0';
	puts(a);
	puts(b);
}

5.在主函数中定义一个字符串并输入,在有参有返函数中是atoi
    返回:最终转换的整数。
    eg:输入-123sdf3     返回-123

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//输入一个字符串  实现 字符串化为整数  有参有返 
int at(char a[10]);

int main(int argc, const char *argv[])
{
	char a[10];
	printf("please enter a:");
	gets(a);
	at(a);
	int k=at(a);
	printf("%d\n",k);
	return 0;

}
int at(char a[10])
{
	int i=0,k;
	while(a[i]==' ')
	{
		i++;
	}
	k=i;
	if(a[i]=='+'||a[i]=='-')
	{
		i++;
	}
	int sum=0;
	while(a[i]!='\0')
	{
		if(a[i]>='0'&&a[i]<='9')
		{
			sum=sum*10+(a[i]-'0');
		}
		else break;
		i++;
		
	}
	if(a[k]=='-')
	{
		sum=-sum;
	}
	return sum;
}


6.在主函数定义二维数组并输入,在有参无返函数中实现二维数组转置。

#include<stdio.h>
#include<string.h>	

void temp(int a[2][3]);
int main(int argc, const char *argv[])
{
	int a[2][3];
	int i,j;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	putchar(10);
	temp(a);
	return 0;
}

void temp(int a[2][3])
{
	int b[3][2];
	int i,j;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			b[j][i]=a[i][j];
		}
	}
	for(i=0;i<3;i++)
	{
		for(j=0;j<2;j++)
		{
			printf("%d ",b[i][j]);
		}
		putchar(10);
	}
}

7.在主函数定义一维数组并输入,在有参有返函数中计算一维数组的第二小值。
eg:输入元素是 12 4 32 5 34 4, 则第二小值是5         返回:第二小值。

#include<stdio.h>
#include<string.h>	

int minu(int n,int a[n]);
int main(int argc, const char *argv[])
{
	int n,i;
	printf("please enter n:");
	scanf("%d",&n);
	int a[n];
	printf("please enter a:");
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	int k=minu(n,a);

	printf("k=%d\n",k);
	return 0;
}

int minu(int n,int a[n])
{
	int i=0;
	int min1=a[0];
	int min2=a[0];
	for(i=0;i<n;i++)
	{
		if(min1>=a[i])
		{
			min1=a[i];
		 } 
	}
	if(min2==min1)
	{
		min2=a[1];
	}
	for(i=0;i<n;i++)
	{
		if(min2>=a[i] && a[i]!=min1)
		{
			min2=a[i];
		 } 
	}
	return min2;
}

8.递归计算各个位数字的乘积。
  2315--->2*3*1*5-->30

#include<stdio.h>
#include<string.h>	

int fan(int n)
{
	if(n==0)  //  
	{
		return 1;
	}
	else
	{

		return n%10*fan(n/10);
	}
}
int main(int argc, const char *argv[])
{
	int n;
	printf("please enter n:");
	scanf("%d",&n);
	int s=fan(n); 
	printf("s=%d\n",s);
	return 0;
}


9.思维导图

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值