① 用c语言指针编程
有点麻烦,试试~~
最近考试有点忙,~
还未通过编译,你自己看着改改,我会尽快再发给你的。~~
1、首先格式化输入到栈,形式为:(字母开始,字母结束,空格分开不同单词,空格不能连续)。
2、构建子栈,步骤:由母栈经格式化(取每个单词后半部到子栈)。
3、排序。
4、输出。
子栈元素首行格式为(堆栈元素 + 指向一数据结构的指针)
#include<ctype.h>
#include<stdio.h>
#define STACK_INT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define OK 0
typedef struct C_Node{
char elem;
struct C_Node *next;
}C_Node;
typedef struct C_Stack{
char C_elem;
char *base;
char *top;
C_Node *C_next;
}C_Stack;
typedef struct{
char *base;
char *top;
int stacksize;
}SqStack;
Status InitStack (SqStack &S)
{ S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if (!S.base) exit (OVERFLOW); //存储分配失败
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status Push (SqStack &S, char e) {
if (S.top - S.base >= S.stacksize) {//栈满,追加存储空间
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof (ElemType));
if (!S.base) exit (OVERFLOW); //存储分配失败
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;
return OK;
}
format_input()
{int Finish=0,flag;
char ch;
while(!Finish)
{flag=0;
scanf("%c",&ch);
if(' '==ch)
else if(isalpha(ch)){
if(0==flag)
else
}
else
}
}
Creat_C_Stack()
{指向 M_Stack 内元素的指针p(用于指向一个单词的最后字母),q(指向p的前方第一个空格元素);
指向 C_Stack 首行元素的指针C_i(),及随后元素的C_i_j(insert_place);
q=M_Stack.top;
p=M_Stack.top;
i=0;
q=top;
p=top-1;
num=0;
while(1)
for(;q.elem!=' ';)
q--;
i=(p-q-1)/2;
Insert_P=C_Stack[num];
Insert_P.elem=p.elem;
p--;
for(j=0;j<i;j--)
Insert_P.next=Insert_P.next;
Insert_P.elem=p.elem;
p--;
if(q==M_Stack) return;
}
Sort()
{C_Stack C_p=C_Stack[j],C_q=C_Stack[j+1],C_Temp;
for(C_p.next!=NULL&&C_q.next!=NULL)
{if(C_p.elem!=C_q.elem){
if(C_p.elem>C_q.elem){
C_temp=C_p;C_q=C_p;C_p=C_temp;
}
else
}
}
}
output()
{for(i=0;i<C_num;i++){
q=C_Stack[i];printf("%c",q.elem);
for(q.next!=NULL){
q=q.next;
printf("%c",q.elem);
}
}
}
#include<stdio.h>
void main()
{printf("只有空格和字母为有效字符,\n");
printf("其他字符将使输入结束。\n");
format_input();
Creat_C_Stack();
Sort();
Output();
}
② C语言关于指向指针的指针的一段小程序
这是很简单的,指针变量要对位.
字符指针不能用于数字变量
整型指针不能用于浮点型的变量
数组指针当然不能用一般指针代替了
③ 请教指针和数组的c语言经典例题
利用指代替下标进行数组编程:从健盘输入8个整数放入数组,然后将每个奇数加1,每个偶数减1,最后输出数组的所有元素.
程序如下:
main()
{
int a[8],*p; /*定义变量和数组*/
for(p=a;p<a+8;p++)
scanf("%d",p);/*输入*/
for(p=a;p<a+8;p++)
{ if(*p%2==0) (*p)--;
else (*p)++;
}
for(p=a;p<a+8;p++)
printf("%d\t",*p); /*一个个输出*/
}
其实指针和数组是一个东东,数组名就是一个指针,如果个这例子看不懂,再问!!!
④ 简单指针程序C语言
int length(char string[]) 这个函数的声明和定义不一样,声明的参数是char string[],而定义的参数是char *p,因为参数不同,所以编译器认为这是两个不同的函数,所以int length(char string[]) 只有声明而没有定义。
把int length(char string[])的声明和定义改成一致的即可。
⑤ 这个C语言指针编程怎么做
第一个
char *strcat_my(char* p1, char* p2)
{
char* c = p2;
while (*p2 != '\0')
p2++;
while (*p1 != '\0')
{
*p2 = *p1;
*p1++;
*p2++;
}
*p2 = '\0';
return c;
}
int main()
{
char a[50] = "C language programming", b[50] = "Our favorite is";
printf("%s\n",strcat_my(a, b));
return 0;
}
第二个
...
⑥ 设计一个程序(C语言 指针)
//DEVC
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#defineN20
typedefstruct
{
charname[10];
intage;
intsex;
intgrade;
intnclass;
introom;
}INFO;
intmain()
{
char*name1[20]={"张","王","李","赵","钱","孙","蒋","秦","任","刘","周","郑","吴","朱","许","何","吕","谢","方","叶"};
char*name2[20]={"子","欣","晨","紫","诗","梦","嘉","一","思","静","可","佳","心","梓","俊","明","浩","博","文","天"};
char*name3[20]={"轩","勇","涛","军","浩","豪","宇","俊","鸣","熙","文","国","佑","泽","然","杰","远","平","秋","飞"};
srand((unsigned)time(0));
INFO*s;
s=(INFO*)malloc(sizeof(INFO)*N);
intn,i;
for(i=0;i<N;i++)//随机初始N个同学姓名年龄,性别,班级等数据
{
n=rand()%20;
strcpy(s[i].name,name1[n]);
n=rand()%20;
strcat(s[i].name,name2[n]);
n=rand()%20;
strcat(s[i].name,name3[n]);
//以上为随机生成姓名
s[i].age=rand()%3+16;
s[i].sex=rand()%2;
s[i].grade=rand()%3+1;
s[i].nclass=rand()%6+1;
s[i].room=100*(rand()%5+1)+rand()%20+1;
}
for(i=0;i<N;i++)
{
printf("%s%d岁",s[i].name,s[i].age);
if(s[i].sex==1)
{
printf("男");
}
else
{
printf("女");
}
printf("%d年级%d班%d室 ",s[i].grade,s[i].nclass,s[i].room);
}
charch[50];
intfind;
while(1)
{
find=0;
memset(ch,'