c++通过指针变量对键盘输入的字符串中的字符按ASCII码值从小到大排列有如下要求定义一个字符数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++通过指针变量对键盘输入的字符串中的字符按ASCII码值从小到大排列有如下要求定义一个字符数组相关的知识,希望对你有一定的参考价值。

c++通过指针变量对键盘输入的字符串中的字符按ASCII码值从小到大排列有如下要求定义一个字符数组,并通过键盘输入该数组的值,按如下格式输入,输出字符串,请输入一个字符串,
l am 18 .,排序后的字符串是: .18lam

参考技术A #include<iostream>
using namespace std;
void main()

char *A;
char *B;
char a[100];
char b[100];
int flag=0;
cin>>a;
cin>>b;
A=a;
B=b;
while(*A && *B)

if(*A++==*B++);
else

flag=*A-*B;
break;


if(*A!='\0')
flag=1;
if(*B!='\0')
flag=-1;
if(flag<0)
printf("%s大\n",b);
else if(flag==0)
printf("相等\n");
else
printf("%s大\n",a);
追问

谢谢了

追答

望采纳

本回答被提问者采纳

一维数组和一级指针浅析

  想要了更容易的了解指针,很好的用法就是通过数组来了解,在c里面,感觉一维数组和一级指针的用法差不多,二维数组和二级指针的用差不多,所以通过数组来了解指针是一种很好的方法;

  数组:将相同 数据类型 的元素按一定顺序排列的集合,把有限个类型相同的 变量 用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组

  其实我们可以把数组看成是一个字符串,就像是C++中的string字符串类型的变量一样,因为c中没有关于字符串变量的定义,我们可以把数组看成是一个字符串吧!

  数组和字符类型是不一样的;

  {

    char a;

    char b[64];

    a = ‘a‘;

    strcpy(b,"aaa");

  }

  就像上面这样字符类型在空间中只分配有一个字节,而数组可以自定义的分配空间,数组写入数据的时候也不像字符类型那样可以直接写入,可以通过键盘输入,要么就是像上面那样;当然还有memcpy(),strncpy()等,这里就不一一举例了;

  然后上面这段代码要是这样写:

  

  {

    char a;

    char b[64];

    a = ‘a‘;

    strcpy(b,"aaa");

    printf("%c\n",a);// 输出 a 

    printf("%d\n",a);//输出 a 在ASCLL中的序号97

    printf("%d\n",&a);// 输出a的地址不同电脑可能不一样

    printf("%d\n",&b);//输出地址7863796

    printf("%d\n",b);///输出7863796

    printf("%d\n",&b[0]);//输出地址7863796

    system ("pause");

  }

  我们发现输出&b,b,&b[0] 竟然都是b的地址,那么我们可不可以吧b看成是指向b首地址&b[0]的指针呢?

  {

    char b[64];

    char *c = NULL;

    c = b;// 将一维数组的地址传递给指针

    //或者 c = &b;

    printf("%d\n",b);

    printf("%d\n",c);

  }

  我们发现打印出来的结果是一样的,那么关于用法上我们也可以看看,其实这一点在数组作参数的退化问题哪里我已经写过了;

  {

     char a[64] = "aaaa";//直接往空间赋值了

    char *b = NULL;

    int i = 0;

    int j = 0;

    i = strlen(a);//计算字符串的个数

    b = a;//将地址传递给b

    //下面打印字符串,一个一个的通过下标打印

    for(j = 0 ; j < i : i++)

    {

      printf("%c ",a[i]);

     }

    putchar(‘\n‘);//换行

    

   for(j = 0 ; j < i : i++)

    {

      printf("%c ",b[i]);

    }

    //或者

    

    for(j = 0 ; j < i : i++)

    {

      printf("%c ",*(b +j));

    }

  }

  我们发现printf("%c ",a[i]);,printf("%c ",b[i]);,printf("%c ",*(b +j));三种输出都可以将字符打印出来,效果完全一样,所以我们可以将一级指针看成是一维数组,一维数组看成指针;但是记住这里是看成,不能理解为是等价的;比如一级指针取地址可以传递给二级指针但是数组就不能。所以说如果用的话,我们可以把指针当成数组使用。

  

以上是关于c++通过指针变量对键盘输入的字符串中的字符按ASCII码值从小到大排列有如下要求定义一个字符数组的主要内容,如果未能解决你的问题,请参考以下文章

c语言指针数组排序?

c++从键盘输入字符串并保存成二进制文件

一维数组和一级指针浅析

C++ Primer Plus基础知识部分快速通关

有没有办法在标准 C++ 中直接从键盘读取输入? [复制]

Flash AS3 - textInput box @" 键盘字符问题