#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct snode{
char data;
struct snode * next;
}snode;
typedef struct{
int len;
snode * top;
}stack;
void ins(stack * s){
s->top=NULL;s->len=0;
}
int push(stack * s, char e){
snode *p;
p=(snode * )malloc(sizeof(snode));
if(!p) return(-1);
p->data=e;p->next=s->top;
s->top=p;s->len++;
return(0);
}
int pop(stack *s, char *e){
snode *p;
if(s->top==NULL) return(-1);
p=s->top; *e=p->data;
s->top=p->next; s->len++;
return(0);
}
void main()
{
char str1,str2,str3;
int i=0;
stack s;
ins(&s);
gets(str1);
gets(str2);
strcpy(str3,str1);
strcat(str3,str2);
puts(str1);
puts(str2);
while(str3!='\0')
{
if(push(&s,str3)==-1){
printf("error\n");
return;
}
i++;
}
while(pop(&s,&str3)!=-1)
{
printf("%c",str3);
i++;
}
}
[ 本帖最后由 gyCai 于 2006-5-2 00:48 编辑 ] 第二道题:
#include<stdio.h>
void ss(int data[],int n);
void main()
{
int d;
int c;
for(c=0;c<10;c++)
scanf("%d",&d);
ss(d,c);
for(c=0;c<10;c++)
printf("%d\n",d);
}
void ss(int data[],int n)
{
int i,j,k,e;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(data<data)
k=j;
if(k!=i)
{
e=data;
data=data;
data=e;
}
}
} 至于第三和第四道题,应该不用做了吧?
记得书上有。 版主同志,怎么帖子稍微长那么一点儿,后面的字体就会变啊? 多谢gyCai 大哥 你简直是我们c语言盲的救星
明天的太阳 比毛主席还要毛泽东啊
谢谢
我的再生父母啊 对最后一题有兴趣! 能顺便告诉下第4题在第几页抄吗??????????????
实在是找不到啊 https://www.gdutbbs.com/viewthread.php?tid=59075&highlight= 第四道题:
#include<stdio.h>
void main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%d\t",j,i,j*i);
printf("\n");
}
} 呵呵,同志,你热情过度了,我也是建院的。 老哥!!!你没骗我吧!!!
建院的C语言如此厉害!!!
小弟佩服得五体投地再五体投地 谢谢咯 各位大哥 路过。。。。。。。。。。。。。
中国为什么总是让学生学不想学的东东…… 第一题没必要用栈来实现吧~~~随便写个子程序给你吧~~是高位开始输出的
aa(longx)
{ int indiv;
while(x>0)
{
indiv=x%10;
x=x/10;
printf("%d",indiv);
}
} 这样的话,两个数合并以后就要用atoi()转换,也可以的。
[ 本帖最后由 gyCai 于 2006-5-6 03:18 编辑 ] 不用啊。结果就先aa(b)再aa(a)就可以啦~~~~ 原来是选修的,那天帮同学做了一道 求救第三题啊 joe我想不到第三题,其他三题有人做了,第三题你做。。。。 把第一题稍微改动一下即可。以输入的数字不断mod8,把得数依次压入栈,便可得到。
页:
1
[2]