二维数组(字符串)代码运用

1. 编写一段程序从终端读入若干行(不超过40行,每行不超过60个字符),遇空行结束输入,然后在此文本的左侧加上行号后输出。

关键点:
1.输入,输出
2.数组,行数、列数确定
3.循环,遇到空行结束输出,空号就没有数据。
PS:将临时存储的值赋值给指针变量,可以进行值的传递**

具体代码运用:

#include<stdio.h>
#define MAXLINE 40 //不超过40行
#define LEN 61    //不超过60个字符,字符串的结束标识是'\0',站位
void getwen ( char ( *) [LEN],int *);  //形参分别为指针变量数组和指针
void putwen ( char [][LEN], int );    //形参为二维数组,整型
int main(){
	char text[MAXLINE][LEN];
	int n;
	getwen (text , &n);
	putwen(text ,n ); }

void getwen ( char (*t)[LEN], int *m)  //无返回值
{
	int n;
	printf(" Enter textline, ended to empty line:\n");
	n=0;
	gets( t[ n ] );  // 输入
	while( *t[n])
		{
			n++;
			gets(t[n]);  //当遇到不是空行时,继续向下执行程序
	}
	*m = n;              //将n的值赋给指针m,指针m的值可以传递,n的值不能传递
}     

void putwen ( char t[][LEN] ,int n){
	int i;
	for( i=0 ; i<n ; i++)
	{
		printf ( "% -2d:",i+1 );
			puts(t[i]);  //输出
	}
}

2.编写一段程序,从输入的若干字符串中找到最小的串进行输出。

关键点:
1.字符串由字符数组显示
2.找最小的串
3.输入输出
其中,程序用字符数组作为字符串的存储空间。
调用函数getstr函数 输入字符串;
调用findmin函数找出最小串所在的位置,函数返回最小串的地址。
#include<stdio.h>
#include<string.h> //引用库函数的头文件
#define N 20
#define M 81    

char getstr (char p[ ][ M ]){
	char t[M],n=0;  //开辟一个临时的字符串存储空间
	printf("Enter string: a empty string to end\n");
	gets( t );
	while(strcmp (t," "))  //字符串比较函数
	{  strcpy( p[ n ],t);  // 字符串复制函数,若给t输入的不是空串,循环继续
	   n++;
	   gets( t );}  //若调用库函数把t串放入p[n]为起始地址的存储空间
	return n;
}

char *findmin ( char (*a)[M] , int n){
	 char *q;
	 int i;
	 q=a[0];//用q指向字符串数组中最小串的首地址
	 for( i=0; i<n; i++)
		 if(strcmp(a[i] , q) < 0)
			 q = a[i];//若a[i]串小于q所指的串,则使q指向a[i]串	 
			 return q;}

int main(){
	char s[N][M] , *sp;
	int n;
	n = getstr( s );
	sp = findmin( s,n);
	puts( sp );
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值