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