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

用指針輸入c語言程序

發布時間: 2022-06-19 01:17:44

㈠ 用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語言程序

int num[10];
void minToFirst()
{
int k,i,min;
int *p;
p = num;
min=*p;
k=0;
for (i=0;i<10;i++)
{
if(min>*(p+i))
{
min=*(p+i);
k=i;
}

}
*(p+k)=*p;
*p=min;
}

void maxToLast()
{
int k,i,max;
int *p;
max=*p;
k=0;
for (i=0;i<10;i++)
{
if(max<*(p+i))
{
max = *(p+i);
k=i;
}

}
*(p+k)=*(p+9);
*(p+9)=max;
}
main()
{
int i;
int *p;
printf("please input 10 NUM:\n");
for (i=0;i<10;i++)
{
scanf("%d",&num[i]);
}
p = num;
minToFirst();
maxToLast();
printf("output:\n");
for (i=0;i<10;i++)
{
printf("%d ",*p++);
}
getch();
}

㈢ c語言中,運用指針,從鍵盤輸入10個整數,求出其中最小值

C語言程序如下:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void input(int* p) {

for (int i = 0; i < 10; ++i, ++p) {

printf("請輸入第%d個數的值 ", i + 1);

scanf("%d", p);

}

}

void print(int* p) {

for (int i = 0; i < 10; ++i, ++p) {

printf("%d ", *p);

}

printf(" ");

}

void fun(int* q) {

int* p = q;

int* minp = p;

int* maxp = p;

int temp;

for (int i = 1; i < 10; ++i, ++p) {

if (*maxp < *p) {

maxp = p;

}

if (*minp > *p) {

minp = p;

}

}

temp = *maxp;

*maxp = *p;

*p = temp;

temp = *minp;

*minp = *q;

*q = temp;

}

void main() {

int arr[10];

int* p = arr;

input(p);

print(p);

fun(p);

print("最小值為",p[0]);

system("pause");

}

(3)用指針輸入c語言程序擴展閱讀:

程序思路:

(指針方法處理)輸入十個整數, 將其中最小的數與第一個數對換,把最大的數與最後一個數對換,因此便可得到最小值為指針的第一個元素。

將程序分為三部分:輸入、比較、輸出,分別對應一個函數

1、輸入十個數;

2、進行處理;

3、 輸出最小值。

㈣ c語言用指針完成字元串的輸入和逆序輸出,請問這個程序有啥問題

輸出用 %c 格式 printf("%c",*p); 依次列印 一個一個 字元。
輸入可用 gets(a); 讀取一行字元串,這樣 字元串中 允許有 空格。a 是數組首地址。
若寫成 p=a; gets(p); fun(a); 也可以。
程序:
#include<stdio.h>
#include<stdlib.h>
void fun(char *p){
char *p0;
p0=p;
while(*p != '\0')p++;
for(;p>=p0;p--){
printf("%c",*p);
}
}

int main()
{
char a[100],*p;
gets(a); fun(a);
return 0;
}

㈤ 求一C語言程序 用指針的方法 從鍵盤上輸入月份數字對應的輸出表示的英文 自編函數

void main
{
int i=0;//循環用的
int scan=0, *s=&scan;
char yuefen[][10]={"one","two"," 忘了3的單詞 "};//自已把英文寫上。
char danci[10];//存放單詞。
printf("請輸入月份");
scanf("%d",s);
switch(*s)
{
case 1: for(i=0;i<10;i++)
danci[i]=yuefen[0][i];//數組都是從0開始,想從1開始,可以聲明成[11]的。[0]不要
break;//對 switch一定要在每個case後加個break;不然會一直執行下去。
case 2: for(i=0;i<10;i++)
danci[i]=yuefen[1][i];
break;
懂了吧,就這樣下去直到12
case 12: for(i=0;i<10;i++)
danci[i]=yuefen[11][i];//11是數組的第十二行,因為數組從0開始。
}
printf("%s",danci);
}

㈥ C語言:用指針來輸入數據.

p是指針,因為開始定義的時候 *p=arr,就是表示p指向數組arr的首地址
scanf("%d",p); 於是就表示arr地址輸入當前值。
等效於 scanf("%d",arr)
如果你開始沒有把p指向某個地址,那肯定會出錯的

㈦ C語言指針程序

#include<stdio.h>
#include<string.h>
char
*fun(char
*s,char
*t)//函數功能是在字元串S中找字元串T
{
char
*p,*r,*a;
a=NULL;//是一個標志,開始沒查找到
//開始s=&s[0]
while(*s)//從S
的第一個字元開始查找,直到遇到'\0'
{
p=s;
r=t;
while(*r)//從T
的第一個字元開始查找,直到遇到'\0'
if(*r==*p)//如果在S字元串中找到了第一個
T字元串的T[0],
{
r++;//在比較T[1]
t[2]....
p++;//同上
}
else
break;
if
(*r=='\0')
a=s;//表明查找到了
s++;
}
return
a;//返回NULL沒到到,否則找到了
}
main()
{
char
s[100],t[100],*p;
printf("\n
please
enter
string
S:");
scanf("%s",&s);
printf("\n
please
enter
string
T:");
scanf("%s",&t);
p=fun(s,t);
if(p)//真,為找到了
printf("\n
the
result
is
:%s\n",p);
else
printf("\n
not
found!\n");
}

㈧ 用指針編寫C程序

好吧,我來幫你:
#include <stdio.h>
#include <string.h>

/*n個數排序*/
void sort(int a[],int n)
{
int *q,*qr;
int k=n;

while(k>1)
{
q=a;
qr=a+1;
while(q<a+k-1)
{
if(*q>*qr){int t=*q;*q=*qr;*qr=t;}
q++;
qr++;
}
k--;
}
}

void SortStr(char *a[],int n)
{
char **q,**qr;
int k=n;

while(k>1)
{
q=&a[0];
qr=q+1;
while(q<a+k-1)
{
if(strcmp(*q,*qr)>0){char *t=*q;*q=*qr;*qr=t;}
q++;
qr++;
}
k--;
}
}

int main( )
{
int a[]={4,2,7,1, 9};
char *b[5]={"bcde","abcd","abc","bcd","bcf"};
int i;

sort(a,5);
SortStr(&b[0],5);
for(i=0;i<5;i++)
printf("%4d",a[i]);
printf("\n");
for(i=0;i<5;i++)
printf("%-12s\n",b[i]);
return 0;
}
完整答案.快給分吧.你只要把5改成你要的數就可以了,如10.看起來好像字元串與整數有區別,其實在演算法了相差並不大.

㈨ 用指針編寫c程序

//實在是不想寫了,寫了半天,怎麼發現還有這么多要寫。這個先實現了拍名次。剩下的,你自己搞吧。
#include <stdio.h>
#include <string.h>
#define MAX 3 //此處測試使用3,應用時請改為30
#define NAMELEN 10 //名字長度

char name[MAX][NAMELEN];
int sn[MAX];
int MT[MAX];
int EN[MAX];
int PH[MAX];

int pos = 0; //是否輸入滿30個學生再停止輸入,是否需設置輸入停止符,並未做詳細說明,暫將此定做全局變數,待以後更改使用。

void Sort();

void main()
{
char mode;
char keyword;
int temp;
char tname[10];
int i;

while(1)
{
printf("成績錄入(I)\n成績排序(S)\n成績查找(R)\n退出(Q)\n");
fflush(stdin);
scanf("%c", &mode);
if(mode == 'Q')
break;
switch(mode)
{
case 'I':
if(pos == MAX)
{
printf("Table is full. No more item is permitted!\n");
break;
}
while(pos != MAX)
{
printf("輸入學生姓名:");
scanf("%s", name[pos]);
printf("輸入學生編號:");
scanf("%d", &sn[pos]);
printf("輸入數學成績:");
scanf("%d", &MT[pos]);
printf("輸入英語成績:");
scanf("%d", &EN[pos]);
printf("輸入體育成績:");
scanf("%d", &PH[pos]);
printf("——————————————\n");
pos++;
}
break;
case 'S':
if(pos == 0)
{
printf("No student is in the table!\n");
break;
}
Sort();
printf("————————名次表————————————\n");
printf("姓名 學號 數學 英語 體育 總分 平均分\n");
for(i = 0; i < MAX; i++)
{
printf("%-8s%-8d%-6d%-6d%-6d%-6d%-6d\n", name[i], sn[i], MT[i], EN[i], PH[i], MT[i] + EN[i] + PH[i], (MT[i] + EN[i] + PH[i])/3);
}
break;
case 'R':
printf("請輸入查詢內容\n單個學生成績查詢(S)\n物理不及格情況(P)\n英語成績平均分以上的學生(E)\n數學成績各分數段人數統計(M)\n返回請按其它鍵\n");
fflush(stdin);
scanf("%c", &keyword);
switch(keyword)
{
case 'S':
break;
case 'P':
break;
case 'E':
break;
case 'M':
break;
default:
;
}
fflush(stdin);
scanf("%c", &keyword);
break;
}
}

}
void Sort()
{
int i, j, tem;
char t[NAMELEN];
for(i = 0; i < MAX; i++)
{
for(j = i; j < MAX; j++)
{
if(MT[i] + EN[i] + PH[i] < MT[j] + EN[j] + PH[j])
{
tem = MT[i];
MT[i] = MT[j];
MT[j] = tem;

tem = EN[i];
EN[i] = EN[j];
EN[j] = tem;

tem = PH[i];
PH[i] = PH[j];
PH[j] = tem;

tem = sn[i];
sn[i] = sn[j];
sn[j] = tem;

strcpy(t, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], t);

}
}
}
}

㈩ c語言使用指針,編寫程序,從鍵盤r輸入一個字元串,並統計各字母出現的次數(不區分大小寫)。

摘要 是這樣的#include