C语言,编写一个程序,输入若干字符串,找出其中最长的字符串并输出。要用指针数组存放这些字符串,并要
//程序1
#include
void main()
{
char *p[4],*ptmp,buf[256]={0};
unsigned int n,m,size;
printf("以回车为结束标记,依次输入四个字符串
");
for(n=0;n<4;n++)
{
printf("请输入第%d个:",n+1);
gets(buf);
size=strlen(buf);
p[n]=(char*)malloc(size+1);
strcpy(p[n],buf);
}
printf("输入结束,现在开始排序:
");
for(n=0;n<4-1;n++)for(m=0;m<4-n-1;m++)//简单冒泡法
if(strcmp(p[m],p[m+1])>0){ptmp=p[m];p[m]=p[m+1];p[m+1]=ptmp;}
//只动了指针的指向,不改变内存中中的位置
printf("排序后的次序是:
");
for(n=0;n<4;n++)printf("%s
",p[n]);
}
//程序2
#include
void main()
{
char buf[1024] = {0};
char *pmax=NULL, *pmin=NULL, *ptmp;
//数组无法满足保存任意行的需求
//而事实上你只要最长(或最短)的串
//又中间的无需保存,所以只要两个指针保存内容就够,不需要指针数组
unsigned int n=0,nmax,nmin,size;
printf("输入若干行字符串,以回车结束每一行,空行表示全部输入结束
");
begin:
printf("请输入第%d个串:
",n+1);
gets(buf);//记得DOS下TC2中这个函数会把换行符也读进来放在串尾的,现在怎么都改掉了
if(!*buf||*buf=='
') goto begin;
size=strlen(buf);
pmax = (char*)malloc(size+1);strcpy(pmax,buf);nmax=size;
pmin = (char*)malloc(size+1);strcpy(pmin,buf);nmin=size;
n++;
while(1)
{
printf("请输入第%d个串:
",n+1);
gets(buf);
if(!*buf||*buf=='
')break;
size=strlen(buf);
if(size>nmax)
{
free(pmax);//串越来越长,上次的长度不够,需释放了重新分配
pmax=(char*)malloc(size+1);
strcpy(pmax,buf);
nmax=size;
}
else if(size<nmin)
{
strcpy(pmin,buf);//旧串空间够,直接copy
nmin=size;
}
n++;
}
printf("
最长在串是:
%s
最短的串是:
%s",pmax,pmin);
free(pmax);
free(pmin);
}
//VC7下两个例子程序都可以正常编译运行
#include
#include
int main()
{
int i = 0;
char s[80] = {""}, max[80] = {""};
printf("输入五个字符串:
");
scanf("%s",s);
strcpy(max,s);
for(i=1; i<5; i++)
{
scanf("%s",s);
if( strcmp(max,s)<0 )
strcpy(max,s);
}
printf("最大的字符串是:%s
",max);
return 0;
}
扩展资料:scanf函数最主要的用法是:
scanf("输入控制符",输入参数);
功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
用scanf()函数以%s格式读入的数据不能含有空白符时,所有空白符都被当做数据结束的标志。所以题中函数输出的值只有空格前面的部分。
如果想要输出包括空格在内的所有数据,可以使用gets()函数读入数据。gets()函数的功能是读取字符串,并存放在指定的字符数组中,遇到换行符或文件结束标志时结束读入。换行符不作为读取串的内容,读取的换行符被转换为字符串结束标志'\0'。
1、我们在main函数之前定义一个函数。
2、然后我们就可以开始编写,并且先输入整个框架。
3、然后我们可以用和循环开始进行输出。
4、利用普通变量也可以使用指针变量来书写。
5、在这里我们将以指针变量来书写。
6、书写完毕后,我们将可回去main函数中进行直接调用。
你可以写一个探测字符长度的函数:
# include <stdio.h>
//获取字符长度的函数:
int GetCharLong(char * C_P) {
int aa = 0;
while (1) {
if (*C_P == '\0') {
return aa;
}
C_P++;
aa++;
}
}
int main{
char a []="abc123";
char b []="123defw";
int aa = GetCharLong(a);
int bb = GetCharLong(b);
if (aa > bb){
printf("第一串长!%s\n", a);
}
else if (aa < bb){
printf("第二串长!%s\n", b);
}
else{
printf("两串字符一样长!");
}
return 0;
}
int strcmp(char *s,char *t)
{
for(;*s&&*t&&*s++==*t++;);
return(*s-*t);
}
#include<stdio.h>
#include<malloc.h>
#include<string.h>
int main()
{char *p[20];
int n,i,max=0,maxi=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
p[i]=(char *)malloc(20);
scanf("%s",p[i]);
if(strlen(p[i])>max)
{
max=strlen(p[i]);
maxi=i;
}
}
printf("
%s
",p[maxi]);
return 0;
}
#include<stdio.h>
#include <string.h>
int main (void)
{
int n;
char str[1000];
char Max[1000];
scanf ("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%s", &str);
if(i==0) strcpy(Max, str);
if (strlen(Max)<strlen(str))
{
strcpy(Max, str);
}
}
printf ("The longest is: %s", Max);
return 0;
}
//by 紫阳
C语言中如何输入若干行文字,再输入一个字符串,查找并输出含有该字符串的...
\\n");\/\/ 输入你要输入的行数 scanf("%d",&n); printf("please input %d lines text:\\n",n);\/\/ 输入你说的若干行文本 for (i = 0; i < n; i++) { scanf("%s",txt[i]); } printf("please input the string:\\n");\/\/ 输入要匹配的字符串 scanf("%s",str);...
c语言 从键盘上输入若干字符,以“#"结束,统计其中字符‘A'或‘a...
include "stdio.h"main(){ int ctA=0,cta=0;char p;while((p=getchar())!='#'){ if(p=='A')ctA++;else if(p=='a')cta++;} printf("A=%d,a=%d",ctA,cta);} WIN-TC 通过编译
用python编写一段程序,输入若干单词,按照单词长短进行排序,并统计所 ...
1、解法:对输入的单词进行分割得到列表,遍历列表中的单词,二级遍历单词中的字符,判断字符是否存在字符字典中,存在则计数+1,不存在则初始化字典为1 2、知识点:字典、列表、for循环、if判断、input获得输入、print打印 3、代码如下:-*- coding: UTF-8 -*-#简历一个字典,key=26个英文字母,...
用c语言编写一个程序,从键盘上输入3个字符串,输出其中的最大者_百度...
1. int strcmp( const char *str1, const char *str2 );功能:比较字符串str1 and str2, 返回值如下:返回值 < 0 str1 < str2 = 0 str1 == str2 > 0 str1 > str2 include <stdio.h>#include <string.h>int main(){ char a[100], b[100], c[100]; printf...
c语言编程,编写一个程序,输入一行字符,输出每个字符以及与之对应的ASCI...
include<stdio.h> void main(){ char a[100];int i;i=0;while(a[i]!='\\n'){ scanf("%c",&a[i]);i++;} for(j=0;j
C语言:从键盘输入一个不超过100个字符的字符串,其中字符串只包括字母...
1、首先需要打开编程软件。2、输入以下程序:#include <stdio.h>int main(){ char str[40]; scanf("%s",&str); printf("%s",str); return 0;}。3、然后按F5运行程序。4、然后输入想要输入的字符串。5、按回车键,就会弹出你输入的字符串。6、注意字符串的大小,改变中括号中的数字改变输入...
编写一个程序,用while循环实现从键盘上输入10个字符,仅将其中的大写英文...
include <stdio.h> int main(){ int ch;int i=0;while( i++ < 10 ) \/\/循环控制10次 { ch=getchar();if ( ch >='A' && ch<='Z' ) \/\/如果是大写字母 { printf("%c" , ch-'A'+'a' ) ; \/\/转换成小写并输出 } } printf("\\n");return 0;} ...
如何编写程序 写一个函数,输入一个四位数字,要求输出这四个数字字符
enter a data with 4 digits\\n");scanf("%d",&k);i1 = k % 10;k = (k - i1) \/ 10;i2 = k % 10;k = (k - i2) \/ 10;i3 = k % 10;k = (k - i3) \/ 10;i4 = k;printf("%d-%d-%d-%d\\n",i4,i3,i2,i1); \/\/每两个数字字符间有“-”exit(0);} ...
用C语言编程:一个含有若干个字符的字符串,分别找出其中数字,将重复的...
printf("%d\\n",n);\/\/去重后的数字个数,并在下一行从小到大输出所有的数 for (int i = 0; i < n; ++i) { if (i)putchar(' ');printf("%d", arr[i]);} puts("");} int main() { gets(s);\/\/输入一个字符串 int n = strlen(s);\/\/求长度 func(s, n);\/\/调用func ...
从键盘输入若干英文单词,所有单词中最大长度不超过15个字母,请编写程序...
include<stdio.h>#include<string.h>int main(){char a[1000][200],t[200];int i,j,k,n;scanf("%d",&n);getchar();for(i=0;i<n;i++){ gets(a[i]);} for (j = 0; j < n - 1; j++) for (i = 0; i < n - 1 - j; i++) { if(strlen(a[i]...