问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

用c语言指针编程

提问网友 发布时间:2022-03-23 13:42
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
3个回答
热心网友 回答时间:2022-03-23 15:12
有点麻烦,试试~~

最近考试有点忙,~
还未通过编译,你自己看着改改,我会尽快再发给你的。~~
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();
}
热心网友 回答时间:2022-03-23 16:30
//1. 设计一个函数能将一个数组中的最大值和最小值返回给调用者。
//2. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。
#include<stdio.h>
/*fun1 将得到数组的最大值和最小值,通过参数返回给调用者*/
int fun1(int arr[],int len,int *max,int *min)
{
if(len==0)
{
printf("have not data.\n");
return 1;
}
if(max==NULL || min==NULL)
{
printf("pointer error.\n");
return 2;
}
*min=*max=arr[0];
for(int i=1;i<len;i++)
{
if(*min > arr[i])
{
*min=arr[i];
continue;
}
if(*max<arr[i])
{
*max=arr[i];
continue;
}
}
return 0;
}

/*fun2 将输入十个数到数组中 */
void fun2(int arr[])
{
printf("please input 10 numbers:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
}

/* fun3 将数组的最大值放入数组尾部,将最小值放入数组首部*/
void fun3(int arr[], int len)
{
int k_min=0;//记录最小值的位置
int k_max=len-1;//记录最大值的位置

for(int i=1;i<len-1;i++)
{
if(arr[i]<arr[k_min])
{
k_min=i;
continue;
}
if(arr[i]>arr[k_max])
{
k_max=i;
continue;
}
}
// 交换
int tmp;
tmp=arr[0];
arr[0]=arr[k_min];
arr[k_min]=tmp;

tmp=arr[len-1];
arr[len-1]=arr[k_max];
arr[k_max]=tmp;
}

/* fun4 输出数组的内容*/
void fun4(int arr[],int len)
{
printf("********处理后**********\n");
for(int i=0;i<len;i++)
printf("%d ",arr[i]);
printf("\n");
}

/*主函数*/
int main()
{
int arr[10];
int min,max;
min=max=0;
int len=sizeof(arr)/sizeof(int);
//调用函数fun2给数组赋值
fun2(arr);
// 调用fun1获得数组最值
fun1(arr,len,&max,&min);
printf("max=%d,min=%d\n",max,min);
//调用 fun3
fun3(arr,len);
// 调用fun4输出数组
fun4(arr,len);

//getchar();
//getchar();
fflush(stdout);
getchar();
getchar();
return 0;
}

参考资料:给你做参考吧,还是得自己理解为上策

热心网友 回答时间:2022-03-23 18:04
#include<stdio.h>
#define N 10//数组长度为10!!
void function_name(int *a,int *large,int *small){
*small=*a;
*large=*a;
int i=0;

for(;i<N;i++){
if(a[i]<*small)
*small=a[i];
if(a[i]>*large)
*large=a[i];
}
}
int main(){
int large=0;
int small=0;
int a[N]={2,4,6,7,8,4,0,90,87,54};
function_name(a,&large,&small);
printf("%d,%d",small,large);
}
//帅哥,给个最佳答案吧

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

相关推荐
  • 使用c语言指针能够干啥

    使用c语言指针能够干啥

    1、指针的使用使得不同区域的代码可以轻易的共享内存数据;2、C语言中一些复杂的数据结构往往需要使用指针来构建;3、C语言是传值调用,而有些操作传值调用是无法完成的,但是这种操作可以由指针来完成,而且并不违背传值调用。
    查看详情
  • 使用c语言指针能干什么

    使用c语言指针能干什么

    1、指针的使用使得不同区域的代码可以轻易的共享内存数据;2、C语言中一些复杂的数据结构往往需要使用指针来构建;3、C语言是传值调用,而有些操作传值调用是无法完成的,但是这种操作可以由指针来完成,而且并不违背传值调用。
    查看详情
如何设置路由器tplink qq截图默认保存在什么位置 谁知道qq截图自动保存在哪个文件夹里 请问电脑屏幕截图的图片自动保存在哪儿 QQ截图后图片会自动保存到哪里? 西瓜有什么切法? 一个西瓜切三刀,七块西瓜八块皮,怎么切法? 清蒸鲈鱼的步骤. 清蒸鲈鱼的正确做法是怎样的,有哪些需要注意的? 花蛤是常吃的海鲜,炒花蛤的流程是怎样的? 炒花蛤怎么做肉才不掉 炒花蛤怎么炒 怎么炒花蛤肉 爆炒花蛤怎么做? 如何炒花蛤 花蛤怎么炒? 炒花蛤怎么做 怎么炒花蛤 想吃炒花蛤,如何能让花蛤吐沙吐干净? 炒花蛤正确的处理方法 tplink路由器怎么设置无线网络 tp-link更换路由器怎么设置路由器 路由器tplink怎么设置 如何设置无线路由器tplink 怎样设置无线路由器tplink tplink怎么设置路由器 怎么设置路由器TPLINK 路由器怎么设置 普通家用tp-link无线路由器设置 qq怎么隐藏手机型号??在线等 手机qq空间发说说怎么修改/隐藏显示的手机型号 你好,空调外机风扇不转是什么原因 空调外机风扇不转是什么原因 河南洛阳土特产方便带的 空调外机风扇不转是怎么回事 空调室外机风扇为什么不转? 河南的特产有什么?(方便携带的) 空调外机风扇时转时不转是什么原因? 空调外机风机不转什么原因? 洛阳都有什么干货特产.或方便邮寄的特产 空调室外机组风扇不转有哪些原因?
Top