當前位置:首頁 » 編程語言 » c語言指針經典程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針經典程序

發布時間: 2022-12-21 13:11:47

① 用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,'',50);
printf(" 請輸入要查詢的姓名:");
fflush(stdin);
scanf("%s",ch);
for(i=0;i<N;i++)
{
if(strcmp(s[i].name,ch)==0)
{
find=1;
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);
break;
}
}
if(find==0)
{
printf(" 未找到!");
}
}
return0;
}

⑦ 求C語言指針代碼

用指針法實現冒泡法排序的C語言程序如下

#include<stdio.h>

void bubblesort(int *a,int n){

int i,j,t;

for(i=0;i<n-1;i++){

for(j=0;j<n-1-i;j++){

if(*(a+j)<*(a+j+1)){

t=*(a+j);

*(a+j)=*(a+j+1);

*(a+j+1)=t;

}

}

}

}

int main(){

int i,a[]={32,98,51,28,12,38,57,43,115,21};

bubblesort(a,10);

for(i=0;i<10;i++){

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

}

return 0;

}

⑧ C語言用指針編寫程序

#include<stdio.h>
#defineN5
#defineM5
voidf(inta[][M],intn,intm,int*s){inti,j;
for(i=0;i<n;i++,s++){
*s=a[i][0];for(j=1;j<m;j++)if(*s<a[i][j])*s=a[i][j];
}
}
voidmain(){inta[N][M],s[N],i,j;
for(i=0;i<N;i++)for(j=0;j<M;j++)scanf("%d",&a[i][j]);
f(a,N,M,s);
for(i=0;i<N;i++)printf("%d ",s[i]);
}

⑨ 求大神幫編寫一個關於指針的c語言程序

#include<stdio.h>
intmain()
{inta,b,c,*p1,*p2,*p3=&c,*p;
scanf("%d%d%d",&a,&b,&c);
if(a>b){p1=&a;p2=&b;}
else{p1=&b;p2=&a;}
if(*p1<*p3){p=p1;p1=p3;p3=p;}
if(*p2<*p3){p=p2;p2=p3;p3=p;}
printf("%d%d%d ",*p3,*p2,*p1);
return0;
}

⑩ c語言,指針函數的程序,能舉個簡單點的例子嗎越簡單越好啊

#include <stdio.h>
/*求a+b*/
int plus(int a, int b) { return a + b; }
/*求a-b*/
int minus(int a, int b) { return a - b; }
/*求a*b*/
int multiply(int a, int b) { return a * b; }
/*求a/b*/
int divide(int a, int b) { return a / b; }

typedef int (*FUN)(int,int); /*定義基本四則運算的標准形式*/

char op[]="+-*/"; /*四則運算的符號*/
FUN fun[]={&plus, &minus, &multiply, ÷};/*四則運算的函數指針*/

/*下面的程序演示了如何用一個通用的函數指針連續處理多種不同的函數運算*/
int main(void)
{
int a = 6, b = 3, i = 0;
for(i = 0; i < 4; i++)
printf("%d %c %d = %d\n", a, op[i], b, (*(fun + i))(a,b));
return 0;
}
/*運行結果:

6 + 3 = 9
6 - 3 = 3
6 * 3 = 18
6 / 3 = 2

上面的程序說明,如果你有很多種類似的操作,形式上都一致,只不過內容有所不同,那麼你可以用函數指針去代替這些函數,這樣有時候會很方便
*/