C语言问题!!用如何让指针指向数组,不让用数组,输入任意数字,并倒叙输出,这个代码怎么写??

C语言中如何用指针变量的方法来实现1输入的十个数的逆序输出啊?、哪位大虾解答下?感激不尽!!!_百度知道
C语言中如何用指针变量的方法来实现1输入的十个数的逆序输出啊?、哪位大虾解答下?感激不尽!!!
我有更好的答案
1 输入十个数,以指针方式,每输入一次,指针自加。2 指针自减一次,即指向最后一个。3 输出10次,依次自减,即可达到目的。#include&&stdio.h&int&main(){&&&&int&a[10],&*p;&&&&for(p&=&a;&p&&&a+10;&p&++)&&&&&&&&scanf(&%d&,p);&&&&while(--p&&=&a)&&&&&&&&printf(&%d,&,*p);&&&&&&&&}
软件工程师
#include&stdio.h&void main(){ int num[10]; int * p = for (;p & num + 10;p++)//输入
scanf(&%d&,p); p = num + 9; for (;p &=p--)//输出
printf(&%d\t&,* p);}如有不懂欢迎提问。
本回答被网友采纳
用C语言指针实现字符串逆序及回文串的判定口裴晓英(新疆兵团高等专科学校新疆·鸟鲁木齐831300)摘要:字符串逆序输出是C语言经典算法之一,过去利用数组下标处理此类问题,较为繁琐,本文给出了利用指针实现任意给定字符串的逆序输出方法,以及在此基础上进行回文字符串判断的便捷方法。关键词:C语言指针字符串逆序算法回文中图分类号:TP39 文献标识码:A 文章编号:08 1 12-071.Ol‘C语言中,实现任意给定字符串的逆序输出,是一道经典常用算法,掌握此类算法,对于提高运用字符串能力及编程综合能力都有很大的帮助。对于C语言字符串的处理,人们惯常使用的是数组下标的方法,不仅效率低,而且估算下标容易出错,准确率低,最为致命的还是下标一旦越界,会出现乱码甚至程序崩溃。笔者经过试验、总结,提炼出用指针实现字符串逆序输出的简便方法,并且在此基础上,应用此类方法,我们可以方便快捷的解决同类的字符串处理问题,例如回文的判断,本文也给出了相应实现办法.1问题(1)对于任意给定的字符串,进行倒置,打印输出该串为原串的逆序。例如输入为“tomo玎ow”。则其存储和输出即为“worromot”。(2)判断任意给定字符串是否回文,输出相应提示信息。所谓“回文串”,即一个字符串正序读和逆序读时都一样,如“level”或者“noon”等等就是回文串。2算法思路问题1)将一个给定字符串逆序存储定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,交换两指针指向的字符,交换后两指针分别后移和前移,循环交换对应位置的字符,直到两指针在中点相遇,则整个串实现了与原串的逆序存储。问题2)回文的判定:类似问题1)的处理方法,我们首先定义一个足够大的字符数组,用于存储用户输入的任意字符串。再定义两个字符指针,分别指向字符串的头部和尾部,两指针分别后移和前移,依次判断对应位置的字符是否相同,一旦不相同即退出循环,说明不是回文串,若一直相同,直到两指针在中点相遇,则整个串是回文串,输出相应信息。问题I)和问题2)的核心算法,都是对对应位置的字符进行比较判断,故我们都采用指针的方法可以很方便的解决这两类问题。3算法实现对比:用数组下标的方式判定回文的算法实现(结合指针的运用):#include“stdio.h”#include“string.h”int mmnO{ ,char sn-[50J,’p;im i;printf(“请输入字符串妇”);scanq”%s”,s∞;P-s也t/把指针移动到字符串的末尾矿矿strlen(str)-I;for(i=O;i&(int)strlen(str);i++,p..){if(+p!fstr[i]){printff”这个字符串不是回文、Il”);return l;}'printff”这个字符串是回文、ll”);return O:}对比:用堆栈的方式判定回文的算法实现:#include&stdio.h&#define S1'ACK INIT SIZE loo#dcfine STACK INCltEⅣ【ENT lOtypcdef struct{char+base;char‘top;int stacksizc;}SqStack;int InitStack(SqStack‘S){S-&base=(char+)malIoc(STACK—INIT—SIZE+sizeof(char)):if(!S-&base)rg:t1.1nl 0:S-&top=S-&basc;S-&s。tacksizc;STACK_INIT-sIZE;rgturn l:)int净0:intj=O;char str[20],str2120];斟m论丘·2008年第12期I下)万方数据戆黍熬j纛窦鬻鬃基于SolidWorks拉深模三维CAD系统的研究口张俊(宿迁学院机电工程系江苏·宿迁223800)摘要:本文简要介绍了开发拉深模具三维CAD系统的整体过程,并以凹模为例,详细阐述了模具各零部件的三维设计步骤,并给出了凹模设计的方法和开发程序。关键词:拉深模SolidWorks vB中图分类号:TP39 文献标识码:A 文章编号: I ·02筒形件拉深模具在汽车、拖拉机、飞机、钟表、电器和仪表中得到了广泛应用,市场前景良好。目前,三维筒形件拉深模CAD系统的研究和开发较为滞后,三维系统的开发迫在眉睫,本研究对于促进模具三维软件的开发、提高模具设计质量和生产效率、推进模具行业的快速成型技术和促进制造业的全面发展,均具有重要的研究价值。本系统采用Windows XP为操作系统、Visual Basic 6.0为编程工具、SolidWorks 2006为图形处理软件、MicrosoftAccess 2003为数据库管理系统。1系统的需求分析拉深模CAD系统的任务就是要使设计人员可以快速、轻松查阅数据和表格,降低对设计人员经验的依赖性,辅助设计人员进行决策,减轻设计人员绘图劳动,使拉深模设计更轻松,实现三维造型设计,提高模具质量和设计效率。筒形件拉深模CAD系统是一个比较复杂的系统,采用结构化分析方法可简化系统的难度,准确表达用户需求,确保软件开发成功。系统的详细数据流图如图l所示.:£媚‘嫱牲0 ,瓤§图1拉深模CAD系统详细数据流图2系统结构的设计本系统由六大模块构成:主控程序、产品信息输入模块、工艺计算分析模块、模具设计与计算模块、模具三维图生成模块及专用数据库和图形库。(1)主控程序主控程序即程序管理程序,对各模块进行综合管理,用户通过此界面进入模具的其它各个模块,并对其进行操作。(2)零件信息输入模块零件信息输入模块将拉深件的几何尺寸和精度、材料和工艺条件等信息输入到计算机内,并存入数据库中,为后续设计提供拉深件的产品信息。(3)工艺分析与计算模块工艺分析与计算模块主要对零件的各个参数进行工艺分析,判断参数是否符合工艺条件,并确定工艺参数。计算出毛坯尺寸,判断是否能一次拉深成形,计算拉深次数、拉深系数、各工序的半成品尺寸、压边力、拉深力、拉深功,并将上述信息存入数据库中,为模具设计打下良好基础。(4)模具设计与计算模块模具计算过程包括计算凸、凹模尺寸、圆角半径,计算零部件尺寸等。设计过程包括确定模具结构类型的选择、工作部件的设计、辅助零件的设计及模架、标准件的选择。(5)模具三维图生成模块在三维绘图环境下,利用CAD软件生成模具零部件的三维实体模型,最后在此基础上装配成该模具的装配体,为用户的下一步工作(如生成二维工程图、CAD/CAM的集成等)做准备。以凹模为例,介绍其开发过程。SqStack s;InitStack(&s);prinff(”请输入一个任意字符串:ha”);scanf(”‰”.stO;forCi&strlcn(str);i++)Push(&s,s仃【i1);forCj&stricn(str);j++)Pop(&s,&str20】);if(strcmp(str,str2)一O)pri.tf【”是回文串ha”);clscprin氓”不是回文串、II”);}4结束语将给定字符串逆序存储以及判断一个给定字符串是否是回文,这两类问题,核心算法都是相同的,我们通过熟练运用指针,可以方便灵活的予以解决,对比给出的数组及堆栈的处理方法,指针解决方法简洁明了,易懂易用,易于移植和扩展到相关字符串问题中,便于触类旁通、举一反三。参考文献:[1]谭浩强.C程序设计(第二版)[H].清华大学出版社,2005.[2]顾晓燕.C语言中指针和指针教学[J].福建电脑.2008年(01).[3]吴琼.陈新文.关于指针数组与指向指针的指针教学研究[J].电脑开发于应用,2007年(总702).斟协论lij·2008年第12期(下l万方数据用C语言指针实现字符串逆序及回文串的判定作者: 裴晓英作者单位: 新疆兵团高等专科学校,新疆·乌鲁木齐,831300刊名:科协论坛(下半月)英文刊名: SCIENCE & TECHNOLOGY ASSOCIATION FORUM年,卷(期): 2008,&&(12)被引用次数: 0次参考文献(3条)1.谭浩强C程序设计 20052.顾晓燕C语言中指针和指针教学[期刊论文]-福建电脑 2008(01)3.吴琼.陈新文关于指针数组与指向指针的指针教学研究[期刊论文]-电脑开发与应用 2007(总702)相似文献(10条)1.期刊论文吴琼.WU Qiong C语言指针教学方法研究 -鄂州大学学报)指针是C语言的精华和重要特色,理解指针的概念应从计算机存储系统硬件结构入手,它是C语言学习的重点和难点,数组也是C语言学习的重点和难点,针对指针数组与指向指针的指针这一教学难点.该文用图示方法将复杂的概念形象地表示出来,用对比方法阐释比较容易混淆的概念,通过简单实用的程序对比分析二者的应用,揭示它们的区别与编程意义.2.期刊论文王恒滨.闫东升关于C语言指针定义的讨论 -辽宁财专学报)在教学和实践中发现,C语言指针定义的信息量不足,难于解释指针使用的许多方面.本文大胆地剖析了已有的定义,从中找出问题所在,并试图加以改进.还结合实例给出了&拟构&概念,较好地说明了相关知识尤其是指针与数组的关系.3.期刊论文李忠武.Li Zhong-wu C语言指针探讨 -保山师专学报)结合实例从五个方面对C语言指针进行分析和探讨:阐述C语言指针的概念和正确使用指针变量,区分指针变量和指针的指向变量的含义和用法;通过判断变量与运算符*、[]和()的结合顺序来确定变量的数据类型及指向变量或成员变量的类型;指出指针与数组的关系,通过指针来访问数组元素和采用下标法数组元素的等价关系;作为函数参数的指针变量,可以改变所指向的主调函数变量的值;指针可以实现动态存储分配,用来实现对链表的创建、插入和删除等操作.4.期刊论文娄浩韬 C语言指针研究 -硅谷2008,&&(2)指针是C语言的精华,抛开指针的C语言是没有生命力的.我们认为深入理解指针的本质含义,对指针进行理性分析和研究将有助于我们进一步加深对C语言程序编程的认识和应用.5.期刊论文陈建辉 C语言指针探讨 -莆田高等专科学校学报)结合实例从五个方面对C语言指针进行分析和探讨:阐述C语言指针的概念和正确使用指针变量,区分指针变量和指针的指向变量的含义和用法;通过判断变量与运算符*,[]和()的结合顺序来确定变量的数据类型及指向变量或成员变量的类型;指出指针与数组的关系,通过指针来访问教组元素和采用下标法数组元素的等价关系;作为函数参数的指针变量,可以改变所指向的主调函数变量的值;指针可以实现动态存储分配,用来实现对链表的创建、插入和删除等操作.6.期刊论文深入理解C语言指针 -内江科技2005,&&(6)指针是C语言的精华和核心部分,充分体现了C语言的灵活性,增强了C语言的功能.本文从指针的定义、指针的功能及由于指针的使用带来的安全性等方面深入地分析了C语言的指针.7.期刊论文邓满英.DENG Man-Ying 浅析C语言指针 -襄樊职业技术学院学报)C语言功能丰富、使用灵活方便,主要体现在其指针灵活且无所不指上.指针是C语言的灵魂、精华与根本所在,其内容也是C语言的重点及难点.能否正确理解和使用指针是衡量学生掌握C语言的一个重要标志,也直接影响学生对&数据结构&和&操作系统&等后续课程的学习和把握.本文从指针的概念、指针的运算等来浅析C语言指针.8.期刊论文吴斌.WU Bin C语言指针的教学 -安徽职业技术学院学报)指针是C语言的低级语言特性.使用指针程序员可以按地址操作计算机内存,灵活实现一些特定功能;使用指针可以方便地表达复杂的数据结构,使程序简洁、高效、紧凑,指针是整个C语言课程的重点以及后续课程的重要基础.指针是C语言教学难点,在教学中采取适当的策略和方法完全可以取得较为满意的效果.9.期刊论文彭程.杨春生C语言指针操作技巧探讨 -中国高新技术企业2008,&&(10)指针增加了我们控制程序的灵活性,但是指针使用不当就会出现野指针,危害整个程序的运行,所以在程序中使用指针时应十分小心,养成良好的编码习惯,避免出现野指针.10.期刊论文刘丽梅 复习C语言应注意的几个方面(之四)--针对CCT C语言指针部分 -承德职业学院学报)本文主要针对CCT中的C语言部分,在复习时应该注意的几个方面,以讲、例结合的方式作了详细的论述.
为您推荐:
其他类似问题
指针变量的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c语言 怎么用数组输入一组数,然后再原样输出?_百度知道
c语言 怎么用数组输入一组数,然后再原样输出?
我有更好的答案
只需要开辟足够大的数组,然后依次读取输入数据,并存到数组中,最终再依次输出即可。比如输入10个整型数据并原样输出的程序可以写作:#include&&stdio.h&int&main(){&&&&int&a[10];&//定义数组&&&&int&i;&&&&&&&&&for(i&=&0;&i&&10;&i&++)&&&&&&&&scanf(&%d&,&a[i]);&//输入&&&&&&&&&&&&for(i&=&0;&i&&10;&i&++)&&&&&&&&printf(&%d&&,&a[i]);//原样输出。&&&&return&0;}
软件工程师
我给你用一个程序来解释吧#include&stdio.h&main(){& & & int i,a[4];& & & for(i=0;i&3;i++)& & & &{& & & & & &scanf(&%d&,&a[i]);& & & & && & & &}& & &printf(&您输入的数组是:&);& & &for(i=0;i&3;i++)& & & {& & & & & printf(&%2d&,a[i]);& & & & &&& & & }& & & printf(&\n&);}这个就是数组的输入和输出,数组的输入输出要用循环语句来实现的!!
本回答被提问者采纳
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言【指针】一维数组与指针概念
我的图书馆
C语言【指针】一维数组与指针概念
C语言学习笔记----指针【一】 &虽然以前学过C语言,但是那个时候才大一,没有认真的学习,最近又回炉看了好久的指针,把我的经验心得写下来和大家一起分享,共同学习。指针变量() 指针就是内存地址;系统对变量的访问形式有两种:直接访问:按变量地址存取变量值的方式间接访问:如上所示,然后特殊变量存放的内容是变量的地址,利用来访问变量。是变量空间的地址。是的值。变量指向变量,是指向变量的指针变量。()定义指针变量: 注意:() 号毫无意义,如果硬要说意义的话就是:语言规定所有变量必须先定义后使用,指针变量也是这样,但是为了表示指针变量的特殊性,所以就加了一个号。 & & &()一个指针变量只能指向同一个数据类型,定义为型,那就不能指向。() 指针变量赋值:是取地址运算符,取的空间的地址给。所以里面存放的是空间的地址。是空间存放的值,即;注意:是空间的地址,是一个整型数据,这个数据赋值给,但是不能直接给赋值,如是不行的,因为变量的地址是由编译系统分配的,用户是不知道的,更不能随便给赋地址值。(4)&和辨析:main(){ & int i=100; int *P; & p=&i; & printf("%d\n",i); &直接访问变量 & printf("%d\n",*P); &间接访问变量}A. int *P 中的没有意义,只能说明定义的是一个指针变量,中的是指针运算符。B.&*P的计算:和的优先级一样,自右向左结合,先计算是,然后计算是 &*&P的计算是一样的,先计算再计算。C. 指针加,不是单纯的加,而是加一个所指变量的字节数。假设整型指针变量所指的地址是,执行后,的地址是,因为整型占两个字节。(5)指针作为函数参数;#include &stdio.h&void swap(int *p1,int *p2) {
& t=*p1; *p1=*p2; *p2=t; } main() {
& &int a,b; int *q1,*q2; q1=&a; q2=&b;
& &printf("请输入两个数字");
& scanf("%d,%d",&a,&b); printf("%d,%d\n",a,b);
& &printf("%d,%d\n",q1,q2);
& &if(a&b) { swap(q1,q2); }
& &printf("%d,%d\n",a,b);printf("%d,%d\n",q1,q2); & & } 这个实例看出:的值发生了交换,但是和的值没有交换。在()函数中和发生了交换,他们的值变换了,但是和的值并没有发生交换,因为和是地址,而和是值,我们只对值执行了交换。同理,和也没有发生变化。 如果不用指针变量作为实参,而用普通变量的话,交换后是不能返回到函数中的,因为定义变量和都是是在()函数中定义的,他们都是局部变量。数组的指针和指向数组的指针变量(一维数组)(1)一个数组的地址是这个数组的起始地址()这个起始地址成为数组的指针。(2)指向数组的指针变量:这个变量中存放了数组的起始地址。要注意,这个指针变量是而不是。(3)赋值: 将指针变量指向数组是数组的首地址,所以指向了数组。(4) 1.如果数组为型,则指针变量必须指向类型; & 2. 数组名代表数组的首地址; 这两个语句的作用是一样的。即 & 3. 允许用一个已经定义过的数组的地址作为定义指针时的初始化值。 & & & float score[20]; float *p=将数组的首地址赋给,而不是。在这儿是毫无意义的。(5)访问地址:是指向数组的指针变量,那么数组元素的地址有如下几种表示形式p+5 , a+5 ,&a[5];(6)访问元素: 也有三种方法: (7)指针变量能带下标:是指向一个数组的指针变量。 (指针带下标)等价于() (8)假设指向数组,指针变量可以取代数组名操作,如是可以的,数组名也可以表示数组的首地址,不过他属于常量,如是错误的。(9)用指针变量对数组中的元素逐个访问时,一般有两种方法: *()指针变量的值发生了变化。 & & *(p+i):指针变量的值没有发生变化。(10)引用以数组元素,有两种方法:下标法和指针发。 & & 任意输入个数,将个数按逆序输出:下标法main() {
& int a[10],i;
& for(i=0;i&10;i++)
& & scanf("%d",&a[i]);
& printf("\n");
& for(i=9;i&=0;i--)
& printf("%d",a[i]); } 数组名法main() {
& int a[10],i;
& for(i=0;i&10;i++)
& & scanf("%d",&a[i]);
& printf("\n");
& for(i=9;i&=0;i--)
& printf("%d",*(a+i)); } 指针变量法main() {
& int a[10],i,*p; & for(i=0;i&10;i++)
& & scanf("%d",&a[i]);
& printf("\n");
& for(i=9;i&=0;p--) & printf("%d",*(p+i)); } 指针变量法main() {
& int a[10],i,*p; p=a;
& for(i=0;i&10;i++)
& & scanf("%d",&a[i]);
& printf("\n");
& for(p=a+9;p&=a;p--)
& printf("%d",*p); } (11)数组指针作为函数参数有两种形式:形参、实参都是数组名 :这种方法一般是不用的。main() {
& int a[10];
& sort(a,10) & //数组名作为实参 } sort(int x[],int n) & //数组名作为形参 {
& &.... } 形参是指针变量,实参是数组名main() {
& int a[10];
sort(a,10) } sort(int *x,int n) //指针作为形参 ,x首先接受实参数组a的首地址,x[i]等价于*(x+i); {
& &.... } 形参和实参都是指针变量main() {
& int a[10];
int *p; p=a;
& .. sort(p,10) //指针作为实参 } sort(int *x,int n) //指针作为形参 ,x首先接受实参数组a的首地址,x[i]等价于*(x+i); {
& &.... } 形参是数组名、实参是指针变量main() {
& int a[10]; int *p; p=a;
& sort(a,10) } sort(int x[],int n) //指针作为形参 ,x首先接受实参数组a的首地址,x[i]等价于*(x+i); {
& &.... } 指针运算的详细说明:验证实例求真相!关于++(--)和*的运算总是混在一起,以前总是似是而非的,现在就详细的解决掉!一:++的运算: & 如果n=3 ,则n的值和m的值如下表所示n的值m的值运算分解m=n++43m=n; n=n+1m=++n44n=n+1; m=nm=-n++4-3m=-n; n=n+1m=- ++n4-4n=n+1 ;m=-n;解析:++是自增运行,自增运算的结果是其本身发生了变化,如指针p=2000,那么p++的值是2001,p值是2001,而如果是p+1,那么p+1的值是2001,但是p的依然是2000,因为p本身没有加1。m=n++是先赋值再+1,意思是先执行m=n,然后n在执行n+1;以下同理,过程如上表运算分解所示。二:++和*的综合运算 a=*p++和a=(*p)++的本质区别(1) a=*p++ &相当于运算分解a=*p++a=*(p++)a=* p=p+1解析: & &前面已经说过了++和*的运算符优先级是相同的,他们的运算方向是自右向做。所以a=*p++相当于a=*(p++),先得到*p,然后p+1-&p; & &含义: 先取出P所指向的单元中的内容3赋值给a ,然后再使p指向下一个地址单元2002,在这个过程中,a值变成了3,指针变量p指向了2002这个空间。(2)a=(*p)++相当于运算分解a=(*p)++a=(*p)++a=* *p=*p+1解析: &先取出变量p所指向的空间中的内容赋值给a,然后p所指向的空间中的内容加1.需要注意的是,当p中的内容赋值给a后,p所指向的空间中的内容加1,而不是指针变量p加1,指针变量p并没有发生改变,也就是说p的指向并没有变化,还是指向原来的空间,但是p所指向的内容变化了。而在(1)中,p的发生了变化,也就是指向发生了改变,指向了下一个空间。本文出自 “” 博客,请务必保留此出处
TA的最新馆藏
喜欢该文的人也喜欢C语言程序:用数组将输入的10个数字反向输出。请高手帮忙,初学者请教!_百度知道
C语言程序:用数组将输入的10个数字反向输出。请高手帮忙,初学者请教!
尽量有部分说明啊!谢谢!!
我有更好的答案
#include&stdio.h&#include&stdlib.h&#define N 10main(){
int a[N],i,
for(i=0;i&=N-1;i++)
scanf(&%d&,&a[i]);//存一个十个数的数组
for(i=0;i&=N-1;i++)//打印 输入的数组
printf(&%d\t&,a[i]);
printf(&\n&);
for(i=0;i&=N/2-1;i++)
temp=a[N-i-1];//把头和尾的交换。主要是下之间的关系要找对
a[N-1-i]=a[i];
for(i=0;i&=N-1;i++)//打印处理后的数组
printf(&%d\t&,a[i]);
printf(&\n&);
system(&pause&);}
采纳率:49%
#include&stdio.h&main(){
int a[10];
for(m=1;m&=10;m++)
scanf(&%d&,a[m]);
for(n=10;n&=1;n--)
printf(&%d&,a[n]);
return 0;}
为您推荐:
c语言程序的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
主题帖子荣誉
查看: 7867|回复: 25
& 累计签到:101 天连续签到:1 天
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
本帖最后由 haiouda 于
13:09 编辑
/***********************************
&&输入3个字符串,按由小到大的顺序输出
&&
& && &&&
**************************************/
#include &stdio.h&
#include &string.h&
int main()
{
& && &&&char *p[3],a0[20],a1[20],a2[20];
& && &&&void p1(char *m[],int n);
& && &&&void print(char *w[],int n);
& && &&&int i,n=3;& && &&&
& && &&&printf(&请输入 3 个字符串:&);
& && &&&scanf(&%s&,a0);
& && &&&scanf(&%s&,a1);
& && &&&scanf(&%s&,a2);
& && &&&printf(&\n&);
& && &&&
& && &&&for (i=0;i&3;i++)
& && &&&{
& && && && && & switch (i)
& && && && && & {
& && && && && & case 0:& && &&&p[i]=a0;
& && && && && && && && &
& && && && && & case 1:& && &&&p[i]=a1;
& && && && && && && && &
& && && && && & case 2:& && &&&p[i]=a2;
& && && && && && && && &
& && && && && & }
& && && && && &
& && &&&}
& &
& && &&&print (p,3);
& & printf(&\n&);
& && &&&
& && &&&p1(p,3);
& && &&&
& && &&&
& && &&&print (p,3);
& & printf(&\n&);
& && &&&
& && &&&
& && &&&return 0;
& && &&&
}
void p1(char *m[],int n)
{
& && &&&char *
& && &&&int i,j,k;
& && &&&for (i=0;i&n-1;i++)
& && &&&{
& && && && && & k=i;
& && && && && & for(j=i+1;j&n;j++)
& && && && && && && && &if(strcmp(m[k],m[j])&0)
& && && && && && && && &{
& && && && && && && && && && &&&k=j;
& && && && && && && && &}
& && && && && && && && &if(k!=i)
& && && && && && && && &{
& && && && && && && && && && &&&temp=m[i]; m[i]=m[k];m[k]=
& && && && && && && && &}
& && &&&}
& && &&&
}
void print(char *w[],int n)
{
& && &&&
& && &&&for (i=0;i&n;i++)
& && &&&{
& && && && && & printf(&%s &,w[i]);
& && &&&}
& && &&&
& && &&&printf(&\n&);
& && &&&
& && &&&
}
复制代码
这是书上课后题,越写感觉越麻烦;有没有简单的呀,帮我改改程序,谢谢了
我的问题是,指针数组在定义时没有赋值,就象上面那样子,然后,怎么给它赋值最简单呀(我是用了用了3个数组作中转,这是要求输入3个字串,要是要求输入1000个了串,还不得定义1000个数组了,麻烦死了)。
& 累计签到:19 天连续签到:0 天
回帖奖励 +1
你这样写不行吧, 定义了三个指针, 没有指向, 你直接指定地址, 会出错的吧。
& 累计签到:101 天连续签到:1 天
求指点迷津&&{:1_1:}
& 累计签到:319 天连续签到:1 天
回帖奖励 +1
首先要明白指针存放的是一个地址
一般情况下是先给一个变量赋值,然后再让指针指向这个变量
但是在楼主你所遇到的这个问题中,直接给指针赋值为什么不行呢,还是第一句话,
当从控制台赋值时,那个变量在电脑内存中并没有赋予地址,所以此时用指针的话被没有一个实际的地址给指针,所以出现错误
不知楼主听懂了没
一句话就是指针存放的是地址
& 累计签到:101 天连续签到:1 天
上面的程序能改简单些么? 还是那个问题,要输入1000个字串,真的要准备1000个变量?
& 累计签到:3 天连续签到:1 天
回帖奖励 +1
用c++来写比较简单的
& 累计签到:116 天连续签到:1 天
回帖奖励 +1
想问楼主问题到底是怎样的,是按三个字符串的大小 排序,还是把三个字符串里的每个字母都拿出来放到一起排序?
& 累计签到:101 天连续签到:1 天
想问楼主问题到底是怎样的,是按三个字符串的大小 排序,还是把三个字符串里的每个字母都拿出来放到一起排 ...
我的问题是,把现有的题改成:“输入1000个字符串,然后按由小到大的顺序输出” 的程序应该如何时来写,谢谢
& 累计签到:116 天连续签到:1 天
c语言好久没看了,字符数组相关知识记的不是很清楚用文字描述代替,见谅
定义字符数组 s1[1024]和s2[1024],
int seq[1000] #整形数组记录大小顺序
for(i = 1, i &=1000, i++)seq[i]=i;
#用冒泡排序法
for(i = 999, i &= 0,i--)
{
& & & & for(j = 0,j & i,j++)
& & & & {
& & & & & & & & 把第j个字符串赋值给s1
& & & & & & & & 把第j+1个字符串赋值给s2
& & & & & & & & 比较两者大小
& & & & & & & & 如果s1&s2
& & & & & & & & 交换seq[j]和seq[j+1]
& & & & }
}
按照seq数组中保存的顺序输出字符串复制代码
& 累计签到:101 天连续签到:1 天
本帖最后由 haiouda 于
00:39 编辑
c语言好久没看了,字符数组相关知识记的不是很清楚用文字描述代替,见谅
谢谢,你这个,没有动态输入字符串常量的过程;能补上这个过程么?
还有,你这里 char seq(1000); 这是定义长度为1000个‘字符’的一个字符串,也不是我要的1000个‘字符串常量’
*************************************************************************************************************
'c' 这个是字符常量& && & “cc”这个是字符串常量
我要的是后者1000个,动态(程序运行时输入),然后比较它们大小,再按从小到大的顺序输出。
题目:输入1000个字符串,按由小到大的顺序输出
当然1000个可能是多了点,要能设计出输入30或者50的也行,必竟改一下数字就是1000个了{:1_1:}
我最上面的,方法可见是不行的,我要,求取的是:思路方法和关键的语句。
*******************************************************************************************************************
#include &stdio.h&
int main()
char *p[30];
p[0]=&China&;
p[1]=&man&;
printf(&%s %s\n&,p[0],p[1]);
上面这段程序,定义了30个指针组成的,指针数组,前二个指针指向了字符串,还有28个指针没有指向字符串,如何实现动态输入28个字符串,让其它的指针,指向输入的28个字符串;这个就是我要,求教的问题,谢谢。
& 累计签到:116 天连续签到:1 天
char *p[30],str[20];
for(i = 0, i &30, i++)
{
& & & & scanf(&%s&,str);
& & & & p[i] =
}复制代码
& 累计签到:101 天连续签到:1 天
你这个,只能输入相同的字符串!而且是最后的那个字符串,因为所有字符串的地址相同。
& 累计签到:116 天连续签到:1 天
你这个,只能输入相同的字符串!而且是最后的那个字符串,因为所有字符串的地址相同。
恩。。刚想了好像确实不对。正想上来改~~
主要是新的字符串必须得有新的地址,那就得先给它申请好地址,直接用一个二元数组不好么。。。
这样的char str[30][20]
& 累计签到:101 天连续签到:1 天
本帖最后由 haiouda 于
09:03 编辑
恩。。刚想了好像确实不对。正想上来改~~
主要是新的字符串必须得有新的地址,那就得先给它申请好地址, ...
可以的,这是个好方法,谢谢
可具体怎么实现?
& 累计签到:101 天连续签到:1 天
恩。。刚想了好像确实不对。正想上来改~~
主要是新的字符串必须得有新的地址,那就得先给它申请好地址, ...
是不是要用个三维数组才能实现? 即然是数组,那就得先声明行 和列,这样就对输入有了限制(输入字符串不能长于声明)……
& 累计签到:116 天连续签到:1 天
本帖最后由 lightninng 于
09:12 编辑
可以的,这是个好方法,谢谢
可具体怎么实现?
好久没碰c,现在机器 上只有python,写出代码来也不知道对不对char str[30][20];
for(i = 0, i &30, i++)
& && &&&scanf(&%s&,str[i]);复制代码
应该就表示第i个字符串的首地址,但是语言中字符数组和符串似乎略有不同
另外:楼主,别说了了思路你倒是自己先敲点代码试一下啊,等别人的代码还不如自己来~~
& 累计签到:116 天连续签到:1 天
是不是要用个三维数组才能实现? 即然是数组,那就得先声明行 和列,这样就对输入有了限制(输入字符串不 ...
请自行参考字符数组相关知识,这个好一点的书都有,你也可以百度,字符数组挺麻烦的,和字符串似乎略有不同~~
& 累计签到:101 天连续签到:1 天
请自行参考字符数组相关知识,这个好一点的书都有,你也可以百度,字符数组挺麻烦的,和字符串似乎略有不 ...
& 累计签到:101 天连续签到:1 天
本帖最后由 haiouda 于
14:49 编辑
请自行参考字符数组相关知识,这个好一点的书都有,你也可以百度,字符数组挺麻烦的,和字符串似乎略有不 ...
这个的缺点是:1)不输入1000个字串不能退出(这个可以自己解决);& & 2)输入的字符串长度,最长为29个字符(由二维数组确定),输入不够浪费空间,输入超了无效;
& && && && && && &&&第二个问题哪位能指点下怎么修改,谢谢:handshake
#include &stdio.h&
#include &string.h&
#define xx 1000
int main()
{
& && &&&void pxx(char *b[],int n);
& && &&&
& && &&&char p[xx][30],*a[xx];
& && &&&
& && &&&for (i=0;i&i++)
& && &&&{
& && && && && & a[i]=p[i];
& && &&&scanf(&%s&,a[i]);
& && &&&}
& &
& &pxx(a,xx);
& && &&&for (i=0;i&i++)
& && &&&{
& && &&&printf(&%s &,a[i]);
& && && && && &
& && &&&}
& && &&&printf(&\n&);
void pxx(char *b[],int n)
{
& && &&&int i,k;
& && &&&char *
& && &&&for (i=n;i&0;i--)
& && &&&{
& && && && && & for(k=0;k&i-1;k++)
& && && && && & if(strcmp(b[k],b[k+1])&0)
& && && && && & {
& && && && && && && && &temp=b[k]; b[k]=b[k+1]; b[k+1]=
& && && && && & }
& && &&&}
}
复制代码
& 累计签到:101 天连续签到:1 天
本帖最后由 haiouda 于
22:02 编辑
&p&&p&#include &stdio.h&
#include &string.h&
#define xx 1000
int main()
{
& && &&&void pxx(char *b[],int n);& & //声明函数 用于从小到大排列数组
& && &&&int i,k;
& && &&&char p[xx][30],*a[xx];
& && &&&printf(&请输入字符串,按下回车表示一个字符串输入完毕,连续按三次回车表示所有字符串输入完毕:&);
& && &&&for (i=0;i&i++)
& && &&&{
& && && && && & a[i]=p[i];& && && && && & //二次数组与指针数组建立关系
& && && && && &
& && && && && &
& && && && && & for (k=0;k&30;k++)& && && &//输入字符串
& && && && && & {
& && && && && && && && &p[i][k]=getchar();
& && && && && && && && &if(p[i][k]=='\n')& && &//每一次回车,表明一个字符串输入完成
& && && && && && && && &{
& && && && && && && && && && &&&p[i][k]='\0';
& && && && && && && && && && &&&
& && && && && && && && &}
& && && && && & }
& && && && && & if ( a[i]==&& && a[i-1]==&& && a[i-2]==&&)
& && && && && & {
& && && && && && && && &
& && && && && & }
& && && && && &
& && && && && && && && &
& && &&&}
& && &&&
& && &&&printf(&\n\n&);
& && &&&pxx(a,xx);
& && &&&
& && &&&
& && &&&
& && &&&for (i=0;i&i++)& && && &//打印排序后的字符串
& && &&&{
& && && && && & printf(&%s\n&,a[i]);
& && && && && &
& && &&&}
& && &&&printf(&\n&);
& && &&&
& && &&&return 0;
& && &&&
}
void pxx(char *b[],int n)& &&&//函数定义
{
& && &&&int i,k;
& && &&&char *
& && &&&for (i=n;i&0;i--)
& && &&&{
& && && && && & for(k=0;k&i-1;k++)
& && && && && && && && &if(strcmp(b[k],b[k+1])&0)
& && && && && && && && &{
& && && && && && && && && && &&&temp=b[k]; b[k]=b[k+1]; b[k+1]=
& && && && && && && && && && &&&
& && && && && && && && &}
& && &&&}
}// 楼上第二个问题,怎么解决一点头绪也没有,求指点&/p&复制代码
小甲鱼强烈推荐
新的视频新的面貌,希望大家喜欢 (≧∇≦)ノ
- - - - - - - - - - - -
新课程,新体验!
移动客户端下载(未启用)
微信公众号
Powered by
Copyright &
&&& All Rights Reserved.

我要回帖

更多关于 c语言用指针输入数组 的文章

 

随机推荐