精华内容
下载资源
问答
  • 指针数组比较适合用来指向若干个字符串,使字符串处理起来更加灵活 例:将若干字符串按字母顺序(从小到大)输出 思路: 定义指针数组name,用各字符串对它进行初始化(即把各字符串中的第1个字符的地址赋给指针...

    指针数组比较适合用来指向若干个字符串,使字符串处理起来更加灵活

    例:将若干字符串按字母顺序(从小到大)输出

     思路:

    1.       定义指针数组name,用各字符串对它进行初始化(即把各字符串中的第1个字符的地址赋给指针数组的各个元素)
    2.       使用选择法进行排序,不移动字符串,而是改变指针数组各个元素的指向

    代码如下:

    //对字符串排序,(选择排序法)
    #include <stdio.h>
    #include <string.h>
    void main()
    {
    	void sort(char* name[],int n);//函数声明
    	void print(char* name[],int n);
    	char* name[]={"Follow me",
    		"BASIC",
    		"Great Wall",
    		"FORTEAN",
    		"Computer"};
    	int n=5;
    	sort(name,n);    //函数调用
    	print(name,n);
    
    }
    //选择排序
    void sort(char* name[],int n)
    {
    	char* temp;
    	int i,j,k;
    	for(i=0;i<n-1;i++) //因为每次需要和name[i]后面的数进行比较,所以到name[n-2](倒数第2个元素)就行
    	{
    		k=i;
    		for(j=i+1;j<n;j++)//j从i后一个开始
    		{
    			if(strcmp(name[k],name[j])>0)
    				k=j;
    		}
    			if(k!=i)
    			{
    				temp=name[i];
    				name[i]=name[k];
    				name[k]=temp;
    			}
    	}
    }
    //输出指针数组元素所指向的字符串
    void print(char* name[],int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		printf("%s\n",name[i]);
    	}
    }

     

    展开全文
  • 指针数组比较适合用来指向若干个字符串,使字符串处理起来更加灵活 例:将若干字符串按字母顺序(从小到大)输出 思路: 定义指针数组name,用各字符串对它进行初始化(即把各字符串中的第1个字符的地址赋给指针...

    指针数组比较适合用来指向若干个字符串,使字符串处理起来更加灵活

    例:将若干字符串按字母顺序(从小到大)输出

     思路:

    1.       定义指针数组name,用各字符串对它进行初始化(即把各字符串中的第1个字符的地址赋给指针数组的各个元素)
    2.       使用选择法进行排序,不移动字符串,而是改变指针数组各个元素的指向

    代码如下:
     

    //对字符串排序,(冒泡排序法)
    #include <stdio.h>
    #include <string.h>
    void main()
    {
    	void sort(char* name[],int n);//函数声明
    	void print(char* name[],int n);
    	char* name[]={"Follow me",
    		"BASIC",
    		"Great Wall",
    		"FORTEAN",
    		"Computer"};
    	int n=5;
    	sort(name,n);    //函数调用
    	print(name,n);
    
    }
    //冒泡排序函数
    void sort(char* name[],int n)
    {
    	char* temp;
    	int i,j;
    	for(i=0;i<n-1;i++) 
    	{
    		for(j=0;j<n-i-1;j++)
    		{
    			if(strcmp(name[j],name[j+1])>0)
    			{
    				temp=name[j];
    				name[j]=name[j+1];
    				name[j+1]=temp;
    			}
    		}
    	}
    }
    //输出指针数组元素所指向的字符串
    void print(char* name[],int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		printf("%s\n",name[i]);
    	}
    }

     

    展开全文
  • 利用指针编写程序,从键盘输入个字符串,删除该字符串的所有首部和尾部数字字符,输出修改后的字符串以及该字符串的长度。 举例:输入的字符串为12abcd34,删除首部和尾部数字字符后字符串变成abcd,长度为4 分析与...

    题目来源:大工慕课 链接
    作者:Caleb Sung

    题目要求

    利用指针编写程序,从键盘输入一个字符串,删除该字符串的所有首部和尾部数字字符,输出修改后的字符串以及该字符串的长度。
    举例:输入的字符串为12abcd34,删除首部和尾部数字字符后字符串变成abcd,长度为4


    分析与参考解答

    删除该字符串的所有首部和尾部数字字符这一步操作我分为了两个函数,因为删除首部和尾部的数字字符的操作逻辑有所不同:

    1. 删除前部数字字符的函数delHead()

    这里我假设指定一个指针p,从字符串的第一个字符往后走:

    1. 检查当前字符是不是数字字符,如果是则执行步骤2;
    2. 把p所在位置之后的所有的字符分别提前一位,这样就把p原有的数字字符用下一个字符覆盖掉了;
    3. 因为执行了上一操作之后最后一个和倒数第二个字符重复了,最后一个字符应该被删掉使字符串长度-1;
    4. 检查p+1位置的字符是否是数字字符,如果是则继续循环,如果否则跳出循环

    值得注意的是,如果字符串第一个字符就是数字,那么经过上述处理之后指针p仍然应当从字符串的第一个字符开始从前往后走,因为原来的第一个数字字符已经被下一个字符覆盖掉了,而如果使指针p直接检查下一字符的话则相当于跳过了原字符串的第二个字符,并以此类推,若字符串前部数字字符有连续多个则将导致这些数字字符删除不完全。
    故而我们写出:

    void delHead(char *ch){
        char *p, *q;
        for(p=ch; ;){
            if(*p>='0'&&*p<='9'){
                for(q=p; q<=ch+strlen(ch)-1; q++){
                    *q = *(q+1);
                }
                *(ch+strlen(ch)) = '\0';
                if(*p<'0'||*p>'9'){
                    break;
                }
            }
            break;
        }
    }

    2. 头文件

    因为用到了strlen(),因而必须引用string.h

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

    3. 删除尾部数字字符的函数delTail()

    这个函数的逻辑与删除前部数字字符的函数delHead()相似,不过更为简单:这个函数不需要当p发现当前位置字符为数字字符时调整所有字符的位置——只需要将当前位置的内容变成'\0'并继续向前执行相同操作就可以了,直到发现前一个字符不是数字字符为止:

    void delTail(char *ch){
        char *p;
        int n;
        for(p=ch+strlen(ch); ; p--){
            if(*p>='0'&&*p<='9'){
                *p = '\0';
                if(*(p-1)<'0'||*(p-1)>'9'){
                    break;
                }
            }
            break;
        }   
    }

    4. 主函数

    没什么说的:

    void main(){
        char ch[100];
        printf("输入一个字符串,程序将删除字符串首尾的数字字符:\n");
        scanf("%s", ch);
        delHead(ch);
        delTail(ch);
        printf("\n处理后的字符串:\n%s", ch);
        printf("\n字符串长度为:%d", strlen(ch));
    }
    

    运行效果

    输入一个字符串,程序将删除字符串首尾的数字字符:
    123456asdf123456
    
    处理后的字符串:
    asdf
    字符串长度为:4
    展开全文
  • 输入数据可以是组,每组是一个字符串。 Ouput 输出将这个字符串转换为int整数的形式。说明,如果输入字符串的第一个字符为“-”,则此数为负数,如果第一个字符为“+”或没有符号表示为正数。如果第一个字符或...

    題目内容:
    问题描述:本题利用指针完成将一个数字字符串转换为int整数的程序。
    Input
    输入数据可以是多组,每组是一个字符串。
    Ouput
    输出将这个字符串转换为int整数的形式。说明,如果输入字符串的第一个字符为“-”,则此数为负数,如果第一个字符为“+”或没有符号表示为正数。如果第一个字符或符号位后的第一个字符为非数字字符(‘0’——‘9’之间的为数字字符),则输出结果为0.字符串中其他位置上遇到非数字字符,则将该字符前面的数字字符转换为整数。
    输入输出说明:

    Input

    123
    -12345
    +678
    -12a
    +s
    -q
    ksd


    Output

    123
    -12345
    678
    -12
    0
    0
    0


    代码编辑:


    #include <stdio.h>
    #include <stdlib.h>
    
    int atoi(char *p)
    {
        int i,result=0;
        int j; //表示当前扫描到非数字字符的个数
    
        if(p[0]!='+'&&p[0]!='-'&&(p[0]>'9'||p[0]<'0'))
            return 0;                  //非法字符
    
        for(i=0,j=0; p[i]!='\0'; i++)
        {
            if(p[i]>='0'&&p[i]<='9')
                result=result*10+(p[i]-'0');//把字符数字转化为整型数字:ch - '0'
            else
                j++;
    
            if(p[0]=='-'||p[0]=='+')
            {//当数据以正负号开头时,第2次遇到非数字字符时(j=2),终止扫描
                if(j==2)
                    break;
            }
            else
            {//数据不是以正负号开头时,一遇到非数字字符,终止扫描
                if(j==1)
                    break;
            }
        }
        if(p[0]=='-')
            result=-result;
        return result;
    }
    
    int main()
    {
        char str[50];
        int k;
        while(scanf("%s",str)!=-1)
        {
            k=atoi(str);
            printf("%d\n",k);
        }
        return 0;
    }
    
    展开全文
  • 输入个字符串按由小到大输出(指针方法处理)
  • 题目要求:利用指针编写程序实现在一个字符串的隨意位置上插入一个字符(要求插入字符的位置由用户从键盘输入)。 先说一说我的思路: 首先提醒用户输入一段字符串; 输入要添加的字符; 输入要添加的位置; 将添加后...
  • (1)输入10个字符串(每一串不多于9个字符),依次放在a数组中,指针数组str中的每个元素依次指向每个字符串的开始。 (2)输入每一个字符串。 (3)从这些字符串中选出最小的那个串输出。 #include<iostream.h&...
  • //输入一些有关颜色的单词,每行一,以#作为输入结束的标志。按输入的相反次序输出这些单词。其中单词数小于20,单词长度小于15(动态分配储存空间) int main() { char *s[NUM],str[MAXSIZE],**p; int i=0; ...
  • 个人的思路是:将第一次出现的字符串存入另一个字符串str2中,再出现的话进行判断是否存入str2,循环遍历,最终输出str2 求大神指点!! 如 char*str[100]={"America","America","China","China"} 最终输出...
  • c语言 如何用指针来处理字符串

    万次阅读 多人点赞 2016-12-09 20:48:06
    一字符指针 1字符指针输出字符串 2字符指针处理字符串 ...一、字符指针1、字符指针输出字符串为了更好的理解这部分内容,我们先看一例子:#include &amp;lt;stdio.h&amp;gt; int main() { char *ps
  • #include #include int main(void) { char str[3][20],*p[3],temp[20]; int i,j;...// p[I]为指针变量.p[I]指向行地址。 gets(p[i]); } for(i=0;i for(j=i+1;j { if( strcmp(p[i],p[j])
  • 组测试数据,每组输入个字符串。 Output 按从小到大输出三个字符串。 Sample Input oh my god China Beijing Hangzhou Sample Output god my oh Beijing China Hangzhou #include&lt;stdio...
  • C语言字符串指针

    2013-08-06 09:45:57
    在C语言中没有字符串变量,只要字符串常量,采用字符串指针可以对字符串常量进行操作,即用字符指针指向字符串常量,然后...用字符数组存放一个字符串,然后输出该字符串。 main(){  char string[]="i am a boy!";
  • 多个字符串进行排序问题!

    万次阅读 2012-11-30 17:44:22
    算法: 假设输入的每个字符串中的字符个数不超过10个,那么输入十个就是十行十列的字符数组,那么就需要有一个指针可以访问行,即需要一个指向一维数组的指针,再仿照貌似冒泡排序对其进行排序然后进行输出. ...
  • 1.数组方式实现 (不用字符串函数)程序如下 1 void ReverseByArray(char * s) 2 { 3 int len = 0; 4 while (s[len] != '\0') 5 len++; 6 int t; 7 for (int i = 0; i 2; i++) 8 { 9
  • (4)两个字符串交互 常见的字符串操作非常,但是如上几个题目有一个共同的特点:那就是使用两个指针就可以搞定这类型的题目。对于第一题和最后一题,是通过数组下标来标识位置的,我们也完全可以使用一个指针来...
  • 三、格式化字符串漏洞 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1.2 格式化字符串漏洞的通常分类是“通道问题”。如果二类不同的...
  • /*输入个字符串,按由小到大的顺序输出*/ #include <stdio.h> #include <string.h> #define N 2 int main() { char a[N],b[N],c[N]; char *po1,*po2,*po3,*t; po1 = a; po2 = b; po3 = c; ...
  • C语言如何输入二维字符串数组

    千次阅读 2020-10-12 15:58:29
    二维字符串数组是由多个字符串组成的数组,可以采取循环输入一维字符串的做法为这样的二维数组赋值。 #include <stdio.h> int main() { int i,j,a[10][10]; for(i=1;i<=3;i++) scanf("%s",a[i]); ...
  • 链表、字符串和数组一直是很互联网公司笔试题、面试题中经常出现的,但是变化万众,看起来各大IT巨头乐此不疲。能够很好的、熟练而巧妙的操作链表、字符串和数组也是一码农必备的技能之一。下面对最近这段时间中...
  • /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日期:2012 年 12 月 05 日 * 版 本 号:v1.0 * * 输入描述: * 问题描述:写一函数,求一个字符串
  • 首先,基本目标很简单,就是利用C语言:编写一函数,输入一行字符,将此行字符中的最长的单词输出。 代码如下: #include void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } ...
  • 从键盘输入10个字符串存放到一个二维数组中,求出其中最大者并输出 算法设计如下: 1.定义一个二维数组a[10][80]用于存放输入的10个字符串 2.定义一个维字符数组max[80]用于存放目前的最大字符串 3.将二维数组...
  • (1) 编写一个函数,提取一个字符串中的所有整数。整数提取规则为:连续 的数字字符构造一个整数,如果整数位数超过 6 位,则在第 7 位开始构建一 个新的整数。 (2) 编写一个函数,对(1)步提取的所有整数按照从小到...
  • 题目描述从键盘上输入多个字符串(每个串不超过5个字符且没有空格),用”*****”作为串输入结束的标记。从所输入的若干字符串中,找出一个最大的串,并输出该串。要求最大串的查找通过调用编写的函数实现 void find...
  • C编译程序用数组名存放数组在内存中的首地址。 指针访问内存比变量名访问速度更快,数组采用指针加减1的方式访问数组,增加了访问... // 向下移动4字节 指针与数组名都是地址,因此可以混合使用访问数组元素。...
  • 系统函数strcat的功能是把两个字符串连接成一个字符串,使用这一函数时要求头文件包含:#include 。函数调用形式是strcat(字符串1,字符串2),函数执行后把字符串2的内容连接到字符串1的后面。问题中可以先计算...
  • c++字符串与c字符串

    千次阅读 多人点赞 2019-05-27 19:32:26
    c++字符串与c风格字符串1. C风格的字符串2. 字符串字面量3.C++ std::string 类3.1 C风格字符串的优势和劣势3.2 使用string类3.2.1 std:...你编写的每应用程序都会使用某种类型的字符串。使用老式C语言时,没有太...
  • C语言中的字符串输入输出函数

    千次阅读 2020-06-29 08:08:33
    1. 字符串输入(gets、fgets、gets_s、scanf) a. 分配内存空间 a. 静态内存分配 ○ 指的是在编译时确定数组等数据类型的大小,然后由计算机分配好 ○ 在声明数组时要显式的声明数组的大小,为字符串输入...
  • C++ 字符串与字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    在C++中,有两种类型的字符串表示形式: ...因此,一以 null 结尾的字符串,包含了组成字符串的字符。 下面的声明和初始化创建了一 “Hello” 字符串。由于在数组的末尾存储了空字符,所以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,670
精华内容 39,468
关键字:

利用指针输入多个字符串