二维字符数组和函数

文章介绍了如何在C语言中操作二维字符数组,包括创建、比较和排序字符串,以及如何定义和调用函数,如计算字符串长度、查找素数、求最大公约数和最小公倍数。
摘要由CSDN通过智能技术生成

字符型数组

可以使用 char s[ ] [ ] = {  } 来进行初始化,如上图所示,s数组内存空间也如上图所示。

二维数组的数组名 s 为 &s[0] 是s[0] 一维数组的地址。

二维数组 可以用 rows = sizeof(s) / sizeof(s[0]) 来计算 行数。

puts函数只能调用一维数组。 可以用循环语句来打印二维数组。

代码练习e1:创造一个二维字符数组 char s[] [100] = {“Hello”, “China”,”Amercia”,"World!"}

;比较三个一维字符数组的大小,输出最大值。

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

int main(int argc, const char *argv[])
{
	char s[][100] = {"Hello","China","Amercia","World!"};
	char max[100];

	int rows = sizeof(s) / sizeof(s[0]);

	strcpy(max,s[0]);
	int i;

	for(i = 1; i < rows; ++i)
	{
		if(strcmp(max,s[i]) < 0)
		{
			strcpy(max,s[i]);
		}
	}
	puts(max);
	return 0;
}

e2.定义一个数组char s[] [100] = {“Hello”, “China”,”Amercia”,"World!"}将这个二维数组内的字符串进行升序排序。

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

int main(int argc, const char *argv[])
{
	char s[][100] = {"Hello","World!","China","Amercia"};
	int rows = sizeof(s) / sizeof(s[0]);
	int i;

	for(i = 0; i < rows / 2; ++i)
	{
		char t[100];
		strcpy(t,s[i]);
		strcpy(s[i],s[rows - i -1]);
		strcpy(s[rows - i - 1],t);
	}

	for(i = 0; i < rows; ++i)
	{
		puts(s[i]);
	}
	
	return 0;
}


函数

一个C程序有且只有一个主函数,一个C程序可由一个主函数和若干个子函数组成。

可以在子函数中调用其他子函数。

C程序的执行是从main函数开始的,如果在main函数内调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。

函数分两类。

1.无参函数 2.有参函数

有参函数:

定义有参函数的一般形式为:

类型标识符 指的是函数返回值的类型。 函数名后面的()不能省略。

例:

int add(int a, int b)

{

        int ret;

        ret = a + b;

        return ret;

}

定义了一个名为add的函数,返回值 ret 是int型 。

函数的调用: 函数名(实参);

函数一定要有 return 返回值,如果无则返回值随机。

代码练习

e3.用函数实现打印指定范围内所有的素数;

#include<stdio.h>

int sushu(int number)
{
	int i;
	for( i = 2; i < number; ++i)
	{
		if(number % i == 0)
		{
			return 0;
		}
	}
	if(number == 0 || number == 1)
	{
		return 0;
	}
	return 1;
}

void sushuPrint(int begin, int end)
{
	int counter = 0;
	for(begin; begin <= end; ++begin )
	{
		if(sushu(begin))
		{
			printf("%3d ",begin);
			++counter;
			if(counter == 10)
			{
				counter = 0;
				printf("\n");
			}
		}
	}
	putchar('\n');
}

int main(int argc, const char *argv[])
{
	sushuPrint(0,100);
	return 0;
}

e4.编写函数实现求最大公约数gcd和最小公倍数lcm.

#include<stdio.h>

int maxOfTwoNumbers(int n1, int n2)
{
	return n1 > n2 ? n1 : n2;
}

int minOfTwoNumbers(int n1 , int n2)
{
	return n1 < n2 ? n1 : n2;
}

int gcd(int n1 , int n2)
{
	int g = maxOfTwoNumbers(n1,n2);
	for(g; ; ++g)
	{
		if(g % n1 == 0 && g % n2 == 0 )
		{
			return g;
		}
	}
}

int lcm(int n1 , int n2)
{
	int l = minOfTwoNumbers(n1,n2);
	for(l; ;--l)
	{
		if(0 == n1 % l && 0 == n2 % l)
		{
			return l;
		}
	}
}


int main(int argc, const char *argv[])
{
	int n1,n2,ret;
	printf("请输入两个整数:\n");
	ret = scanf("%d%d",&n1,&n2);
	if(ret != 2)
	{
		printf("error! imput again!\n");
		return 0;
	}
	printf("gcd = %d\n",gcd(n1,n2));
	printf("lcm = %d\n",lcm(n1,n2));
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值