| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1697 人关注过本帖
标题:[求助]输入一串字符
只看楼主 加入收藏
梦单
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-2-6
收藏
 问题点数:0 回复次数:9 
[求助]输入一串字符
”输入一串字符,然后接收任意一个字符,再输入一个数作为位置,将输入的字符插入到指定的位置,再将其显示输出“谢谢。
搜索更多相关主题的帖子: 字符 输入 
2006-02-17 19:13
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

struct chain{
char data;
struct chain *next;
};

struct chain *create(void);
struct chain *insert(struct chain *head,char ch,int num);
void print(struct chain *head);

void main()
{
struct chain *head,*p,*q,*d;
char ch;
int num,i=0;
head=create();
scanf("%c %d",&ch,&num);
if ((head->data)<=num)
{
printf("error");
}
head=insert(head,ch,num);
print(head);
printf("\n");
printf("谢谢!\n");
}

struct chain *create(void)
{
struct chain *head,*tail,*p,*h;

head=tail=NULL;
char dat;
int count=0;
h=(struct chain *)malloc (sizeof(struct chain));
printf("输入链表元素:");
while ((dat=getchar())!='\n')
{
p=(struct chain *)malloc (sizeof(struct chain));
p->data=dat;
p->next=NULL;
if (head==NULL)
{
head=tail=p;
}
else
{
tail=tail->next=p;
}
count++;
}

h->data=count;
h->next=head;
return h;
}

void print(struct chain *head)
{
struct chain *r;
r=head->next;
while (r!=NULL)
{
printf("%c",r->data);
head=r->next;
free(r);
r=head;
}
}

struct chain *insert(struct chain *head,char ch,int num)
{
struct chain *p,*q,*insert;
int j=0;
insert=(struct chain *)malloc (sizeof(struct chain));
insert->data=ch;
insert->next=NULL;
p=head;
while ((j<num)&&(p->next!=NULL))
{
q=p;
p=p->next;
j++;
}
insert->next=p;
q->next=insert;
return(head);
}
没写注释,不好意思

[此贴子已经被作者于2006-2-17 21:33:30编辑过]


when i want to ask anyone,i will ask myself first.
2006-02-17 21:27
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

线形链表这东西用起来真麻烦:(


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-17 21:50
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 

是我做麻烦了吗??


when i want to ask anyone,i will ask myself first.
2006-02-17 22:01
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
不是你做的麻烦
是链表这东西麻烦,但处理大量数据还是很有用

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-02-17 22:08
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

#include"stdio.h"
#include "ctype.h"

main()
{
char *c,d;
int n,i,j;

i=0;

do /*输入字符串*/
{
*(c+i)=getch();
printf("%c",*(c+i));
i++;

}
while(*(c+i-1)!=13);i--;printf("\n");

d=getch(); /*输入要插入的字符*/
printf("%c\n",d);

do
{ /*输入要插入字符的位置*/
scanf("%d",&n);
if((n>0)&&(n<i+2))break;
if(!isascii(n))
{printf("input errno!");getch();exit(1);}
}
while(1);

for(j=i;j>n-2;j--) /*插入字符运算*/
{
*(c+j+1)=*(c+j);
}

*(c+n-1)=d;

for(j=0;j<i+1;j++) /*输出字符*/
{
printf("%c",*(c+j));
}

getch();
}

[此贴子已经被作者于2006-2-17 22:46:58编辑过]

2006-02-17 22:40
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
数组的优点就是随机存取,缺点就是在作删除和插入操作时需要移动大量元素.

when i want to ask anyone,i will ask myself first.
2006-02-17 22:57
南宫任
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-12-30
收藏
得分:0 
我是菜鸟啊
不知道该怎么办

2006-02-18 08:08
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
有个问题不是很懂
以下是引用aiyuheng在2006-2-17 21:27:00的发言:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

struct chain{
char data;
struct chain *next;
};

struct chain *create(void);
struct chain *insert(struct chain *head,char ch,int num);
void print(struct chain *head);

void main()
{
struct chain *head,*p,*q,*d;
char ch;
int num,i=0;
head=create();
scanf("%c %d",&ch,&num);
if ((head->data)<=num)
{
printf("error");
}
head=insert(head,ch,num);
print(head);
printf("\n");
printf("谢谢!\n");
}

struct chain *create(void)
{
struct chain *head,*tail,*p,*h;

head=tail=NULL;
char dat;
int count=0;
h=(struct chain *)malloc (sizeof(struct chain));
printf("输入链表元素:");
while ((dat=getchar())!='\n')
{
p=(struct chain *)malloc (sizeof(struct chain));
p->data=dat;
p->next=NULL;
if (head==NULL)
{
head=tail=p;
}
else
{
tail=tail->next=p;
}
count++;
}

h->data=count;
h->next=head;
return h;
}

void print(struct chain *head)
{
struct chain *r;
r=head->next;
while (r!=NULL)
{
printf("%c",r->data);
head=r->next;
free(r);
r=head;
}
}

struct chain *insert(struct chain *head,char ch,int num)
{
struct chain *p,*q,*insert;
int j=0;
insert=(struct chain *)malloc (sizeof(struct chain));
insert->data=ch;
insert->next=NULL;
p=head;
while ((j<num)&&(p->next!=NULL))
{
q=p;
p=p->next;
j++;
}
insert->next=p;
q->next=insert;
return(head);
}
没写注释,不好意思


我是学物理专业的。
我以前也学过数据结构,我当时不明白的就是上述我标记的。开辟内存,为什么是
insert=(struct chain *)malloc (sizeof(struct chain));而不是
insert=(struct chain *)malloc (sizeof(struct chain)*);
能不能说明一下,


2006-02-18 08:21
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 

malloc前面是类型,后面是长度.


when i want to ask anyone,i will ask myself first.
2006-02-18 10:14
快速回复:[求助]输入一串字符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042303 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved