| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:指针 实验~
只看楼主 加入收藏
零波丽
Rank: 3Rank: 3
来 自:莉莉斯
等 级:论坛游侠
帖 子:222
专家分:107
注 册:2011-9-8
结帖率:90%
收藏
 问题点数:0 回复次数:5 
指针 实验~
前段时间 我说 要写一个 关于 指针 实验的 东西 然后 由于 放假 国庆 没有 写完了 还是发上来吧~
已经 写到 第三个了 其实 都是 差不多的 很简单地说 现在感觉 但是 链表....晕乎乎~
新建 WinRAR 压缩文件.rar (3.05 KB)

程序代码:
# include <stdio.h>
# include <stdlib.h>

void one (void);//主菜单函数
void bigan (void);//本函数用于开始 选择菜单
void play (int);//此函数用于判断用户选择
void zhizhen_1 (void);//以下函数用于运行 1.指针和变量 
void zhizhen_2 (void);//2 . 指针和字符
void zhizhen_3 (void);//3 . 指针和一维数组
void zhizhen_4 (void);//4 . 指针和多维数组
void zhizhen_5 (void);//5 . 指针和字符串
void zhizhen_6 (void);//6 . 指针与函数
void zhizhen_1_x (int);//此函数用于对指针内分菜单的选择判断
void zhizhen_1_x_1 (void);//此函数用于使用指针对变量值进行输入
void zhizhen_1_x_2 (void);//此函数用于使用指针对变量值进行更改
void zhizhen_1_x_3 (void);//此函数用于在调用函数中使用指针对一个以上的变量值进行更改
void zhizhen_1_x_3_1 (char *,char *,char *);//此函数用于zhizhen_1_x_3的分函数实现指针改值的功能
void zhizhen_1_x_4 (void);//此函数是指针和变量的一个例题
void zhizhen_1_x_4_1 (char *,char *,char *);//此函数用于 排序
void zhizhen_3_x (int);//此函数用于对指针内分菜单的选择判断
void zhizhen_3_x_1 ();//使用指针对一维数组进行输入
void zhizhen_3_x_2 ();//使用指针对一维数组进行更改
void zhizhen_3_x_3 ();//在调用函数中使用指针对一维数组进行更改
void zhizhen_3_x_4 ();//对一维数组进行排序使用指针
void zhizhen_3_x_5 ();//一个例题
void zhizhen_yuanma (int);//此函数用于判断是否输出源代码
void fanhui (void);//此函数用于使用户选择返回
void zhizhen_1_x_1_y (void);//源代码程序
int zhizhen_pan_duan (void);//判断输入
void fanhui_1 ();//此函数用于使用户选择返回
void zhizhen_yuanma_1 (int);


int main (void)//函数作用 调用主菜单 函数
{
    one ();
    
    return 0;
}

void one ()//主菜单函数
{
    char a;//定义字符a用于用户激活程序
    
    printf ("********************************************************************************\n");
    printf ("**                                    你好                                    **\n");
    printf ("**                             很高兴你使用本程序                             **\n");
    printf ("**                    本程序的功能是实验指针的我所知的用法                    **\n");
    printf ("**                           源代码在运行完后都会给出                         **\n");
    printf ("**                          其次会加上我的想法个人意见                        **\n");
    printf ("**                             如果想运行请按回车键                           **\n");
    printf ("**                                                                    小偌    **\n");
    printf ("********************************************************************************\n");
    
    a = getchar ();
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    if (a==1)
    {
        bigan ();
    }
    
    else 
    {
        bigan ();
    }
}

void bigan ()//本函数用于开始 选择菜单
{
    int a;//用于存放用户选择
    
    printf ("\n1 . 指针和变量\n\n2 . 指针和字符\n\n3 . 指针和一维数组\n\n4 . 指针和多维数组\n\n5 . 指针和字符串\n\n6 . 指针与函数\n\n");
    printf ("请输入你的选择........");
    
    scanf ("%d",&a);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    play (a);//此函数用于判断用户选择
}

void play (int a)//此函数用于判断用户选择
{
    if (a==1)//以下选择使用户进入其选择的
        zhizhen_1 ();
    else if (a==2)
        zhizhen_2 ();
    else if (a==3)
        zhizhen_3 ();
    else if (a==4)
        zhizhen_4 ();
    else if (a==5)
        zhizhen_5 ();
    else if (a==6)
        zhizhen_6 ();
    else 
    {
        printf ("\n\n对 不 起 输 入 错 误 请 重 新 选 择..........\n\n\n");
        bigan ();
    }
}

void zhizhen_1 ()//指针和变量
{
    int a;//用于存放用户选择
    printf ("\n\n你可以选择你需要实验的函数\n1.使用指针对变量值进行输入\n2.使用指针对变量值进行更改\n3.在调用函数中使用指针对一个以上的变量值进行更改\n4.一个例题\n");
    printf ("请输入你的选择........");
    
    scanf ("%d",&a);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    zhizhen_1_x (a);//此函数用于判断用户选择
}

void zhizhen_1_x (int a)//此函数用于判断用户选择
{
    if (a==1)//以下选择使用户进入其选择的
        zhizhen_1_x_1 ();//此函数用于使用指针对变量值进行输入
    else if (a==2)
        zhizhen_1_x_2 ();//此函数用于使用指针对变量值进行更改
    else if (a==3)
        zhizhen_1_x_3 ();//此函数用于在调用函数中使用指针对一个以上的变量值进行更改
    else if (a==4)
        zhizhen_1_x_4 ();//此函数是指针和变量的一个例题
    else
    {
        printf ("\n\n对 不 起 输 入 错 误 请 重 新 选 择..........\n\n");
        zhizhen_1 ();
    }
}

void zhizhen_1_x_1 ()//此函数用于使用指针对变量值进行输入
{
    char a, * p;//定义变量及指针
    p = &a;
    
    printf ("\n\n请随机输入一个值 本实验程序 会将它输出\n");
    scanf ("%c", p);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    printf ("你输入的东西是%c\n", * p);
    
    fanhui ();
}

void zhizhen_yuanma (int b)//此函数用于判断是否输出源代码
{
    if (b==1)
        zhizhen_1_x_1_y ();
    else if (b==2)
        zhizhen_1 ();
    else if (b==3)
        bigan ();
    else 
    {    
        printf ("\n\n对 不 起 输 入 错 误 请 重 新 选 择..........\n\n");
        zhizhen_1 ();
    }
}

void zhizhen_1_x_2 ()//此函数用于使用指针对变量值进行更改
{
    char a = 78, * p;
    p = &a;
    printf ("\n\n首先 请输入一个数字 本程序会使用指针更改它的值\na = %c\n", a);
    
    scanf ("%c", p);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("a = %c\n", a);
    
    fanhui ();
}

/*void zhizhen_1_x_3 ()//此函数用于在调用函数中使用指针对一个以上的变量值进行更改
{
int a = 5, b = 6, c = 7;

  printf ("\n首先a = %d,b = %d,c = %d\n",a,b,c);
  printf ("本函数将在调用函数中更改这三个数的值\n");
  
    zhizhen_1_x_3_1 (a,b,c);
    
      printf ("现在a = %d,b = %d,c = %d\n",a,b,c);
      
        fanhui ();
}*/

/*void zhizhen_1_x_3_1 (int a,int b,int c)
{
int * p, * q, * w;
p = &a,q = &b,w = &c;

  printf ("请输入数字a = ");   这里错了 因为形参另外分配的地址
  scanf ("%d", &a);
  fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
  printf ("\n请输入数字b = ");
  scanf ("%d", &b);
  fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
  printf ("\n请输入c = ");
  scanf ("%d", &c);
  fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
  
    * p = a, * q = b, * w = c;
}*/

void zhizhen_1_x_3 ()//此函数用于在调用函数中使用指针对一个以上的变量值进行更改
{
    char a = 'z', b = 'x', c = 'v';
    char * p, * q, * w;
    p = &a,q = &b,w = &c;
    
    
    printf ("\n首先a = %c,b = %c,c = %c\n",a,b,c);
    printf ("本函数将在调用函数中更改这三个数的值\n");
    
    zhizhen_1_x_3_1 (p, q, w);
    printf ("本函数将只取输入的第一个字符\n");
    
    printf ("现在a = %c,b = %c,c = %c\n",a,b,c);
    
    fanhui ();
}

void zhizhen_1_x_3_1 (char * p,char * q,char * w)//此函数用于zhizhen_1_x_3的分函数实现指针改值的功能
{
    printf ("请输入a = ");
    scanf ("%c", p);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("\n请输入b = ");
    scanf ("%c", q);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("\n请输入c = ");
    scanf ("%c", w);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
}

void zhizhen_1_x_4 ()//此函数是指针和变量的一个例题
{
    char a, b, c;
    char * p, * q, * w;
    p = &a,q = &b,w = &c;
    
    printf ("\n\n现在这个例题是这样的,使用指针来实现三个数或者字符排序\n");
    printf ("首先请输入三个数\n本程序将从小到大排序\n");
    
    printf ("请输入a = ");
    scanf ("%c", p);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("\n请输入b = ");
    scanf ("%c", q);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("\n请输入c = ");
    scanf ("%c", w);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("本函数将只取输入的第一个字符\n");
    
    zhizhen_1_x_4_1 (p, q, w);
    
    printf ("现在a = %c,b = %c,c = %c\n",a,b,c);
    
    fanhui ();
}

void zhizhen_1_x_4_1 (char * p,char * q,char * w)//此函数用于 排序
{
    char t;
    int i = 0;
    for (;i<=2;)
    {
        if (*p>=*q)
        {
            t = * p;
            * p = * q;
            * q = t;
        }
        if (*q>=*w)
        {
            t = * q;
            * q = * w;
            * w = t;
        }
        i++;
    }
}


void zhizhen_2 ()//指针和字符
{
    int a;//用于存放用户选择
    printf ("\n\n你可以选择你需要实验的函数\n1.使用指针对字符进行输入\n2.使用指针对字符进行更改\n3.在调用函数中使用指针对一个以上的字符进行更改\n4.一个例题\n");
    printf ("请输入你的选择........");
    
    scanf ("%d",&a);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    printf ("由于字符的 我第一个也使用了 所以就一样了 抱歉\n");
    
    zhizhen_1_x (a);//此函数用于判断用户选择
}

void zhizhen_3 ()//指针和一维数组
{
    int a;//用于存放用户选择
    printf ("\n\n你可以选择你需要实验的函数\n1.使用指针对一维数组进行输入\n2.使用指针对一维数组进行更改\n3.在调用函数中使用指针对一维数组进行更改\n4.对一维数组进行排序使用指针\n5.一个例题\n");
    printf ("请输入你的选择........");
    
    scanf ("%d",&a);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    zhizhen_3_x (a);////此函数用于判断用户选择
}

void zhizhen_3_x (int a)
{
    if (a==1)//以下选择使用户进入其选择的
        zhizhen_3_x_1 ();//使用指针对一维数组进行输入
    else if (a==2)
        zhizhen_3_x_2 ();//使用指针对一维数组进行更改
    else if (a==3)
        zhizhen_3_x_3 ();//在调用函数中使用指针对一维数组进行更改
    else if (a==4)
        zhizhen_3_x_4 ();//对一维数组进行排序使用指针
    else if (a==5)
        zhizhen_3_x_5 ();//一个例题
    else
    {
        printf ("\n\n对 不 起 输 入 错 误 请 重 新 选 择..........\n\n");
        zhizhen_3 ();
    }
    
}

/*void zhizhen_3_x_1 ()//使用指针对一维数组进行输入
{
char a[100];         这个 错了 错在 那里
char * p;
char b;
p = &a[0];
printf ("\n\n请输入你需要输入的字符按回车结束\n");

  for (;1;)
  {
        scanf ("%c", p);
        fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
        p++;
        printf ("请问输入完毕了吗?输入完成请输入Y否则输入N\n");
        loop:    scanf ("%c", &b);//此处加入GOTO是为了方便 因为 不想在写一个调用函数了
        fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
        
          if (b=='y'||b=='Y') 
          {
          break;
          }
          else if (b=='n'||b=='N') 
          {
          }
          else 
          {
          printf ("对不起 输入错误 请重新输入\n请问输入完毕了吗?输入完成请输入Y否则输入N\n");
          goto loop;
          }
          }
          printf ("\n你输入的字符有以下这些\n");
          for (j = 0;j<=100;j++)
          {
          printf ("%c", a[j]);
          }
          
            fanhui ();
}*/

void zhizhen_3_x_1 ()//使用指针对一维数组进行输入
{
    char a[100];
    char * p;
    int i, j;
    p = a;
    printf ("\n\n请输入你需要输入的字符按回车结束\n");
    
    for (;1;)
    {
        scanf ("%c", p);
        fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
        p++;
        
loop:    i = zhizhen_pan_duan ();
        
        if (i==0)
        {}
        else if (i==1)
        {
            break;
        }
        else 
        {
            printf ("对不起输入错误请重新输入");
            goto loop;
        }
    }    
    printf ("\n你输入的字符有以下这些\n");
    * p = '1';
    for (j = 0;1;j++)
    {
        if (a[j]=='1')
        {
            break;
        }
        else printf ("%c ", a[j]);
    }
    fanhui_1 ();
}

void zhizhen_3_x_2 ()//使用指针对一维数组进行更改
{

    
    
    
    
    
}










































void zhizhen_3_x_3 ()//在调用函数中使用指针对一维数组进行更改
{}
void zhizhen_3_x_4 ()//对一维数组进行排序使用指针
{}
void zhizhen_3_x_5 ()//一个例题
{}













































void zhizhen_4 ()//指针和多维数组
{}
void zhizhen_5 ()//指针和字符串
{}
void zhizhen_6 ()//指针与函数
{}


void fanhui ()
{
    int b, * q;
    printf ("\n输入1 查看源代码 输入2 返回分菜单 输入3 返回主菜单");
    q = &b;
    scanf ("%d", q);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    zhizhen_yuanma (b);//此函数用于判断是否输出源代码
}

void zhizhen_1_x_1_y ()
{
    printf ("\n\n********************************************************************************\n");
    printf ("                          请查看源代码 在最后 有编号\n\n                               自动返回主菜单\n");
    printf ("********************************************************************************\n");
    
    bigan ();
}

int zhizhen_pan_duan ()//判断输入
{
    char b;
    int i;
    printf ("请问输入完毕了吗?输入完成请输入Y否则输入N\n");
    
    scanf ("%c", &b);//此处加入GOTO是为了方便 因为 不想在写一个调用函数了
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    if (b=='y'||b=='Y') 
    {
        return 1;
    }
    
    else if (b=='n'||b=='N') 
    {
        return 0;
    }
    
    else 
    {
        return 2;
    }
}
void fanhui_1 ()//三号选择的判断
{
    int b, * q;
    printf ("\n输入1 查看源代码 输入2 返回分菜单 输入3 返回主菜单");
    q = &b;
    scanf ("%d", q);
    fflush(stdin);//清空磁盘缓冲区 便于重复使用 以及 不影响后面
    
    zhizhen_yuanma_1 (b);//此函数用于判断是否输出源代码
}

void zhizhen_yuanma_1 (int b)//此函数用于判断是否输出源代码
{
    if (b==1)
        zhizhen_1_x_1_y ();
    else if (b==2)
        zhizhen_3 ();
    else if (b==3)
        bigan ();
    else 
    {    
        printf ("\n\n对 不 起 输 入 错 误 请 重 新 选 择..........\n\n");
        zhizhen_3 ();
    }
}



虽然 没写完啦~
搜索更多相关主题的帖子: color 
2011-10-22 15:32
零波丽
Rank: 3Rank: 3
来 自:莉莉斯
等 级:论坛游侠
帖 子:222
专家分:107
注 册:2011-9-8
收藏
得分:0 
然后 闭关 修炼 去了 ~恩

人又是什么?神造出来的东西。 人是人造出来的东西。
2011-10-22 15:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这个学习方法不错,鼓励一下,继续努力!

授人以渔,不授人以鱼。
2011-10-22 15:37
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 2楼 零波丽
都是自己写的吗?虽然没仔细看,也没运行过,楼主用心了。毕业的时候可以找我,我给你内推。

总有那身价贱的人给作业贴回复完整的代码
2011-10-22 15:39
零波丽
Rank: 3Rank: 3
来 自:莉莉斯
等 级:论坛游侠
帖 子:222
专家分:107
注 册:2011-9-8
收藏
得分:0 
谢谢啦~
等我把~换链表的 那个 东西 写出来了 我在上来了~
先试了一下 只发送 2个 指针 好像 不行..
各位 大大们 恩 敬仰啊~
一起学习的 好好加油啊~恩 闭关..

人又是什么?神造出来的东西。 人是人造出来的东西。
2011-10-22 15:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 5楼 零波丽
多动脑多用心,就没啥搞不定的事

总有那身价贱的人给作业贴回复完整的代码
2011-10-22 15:50
快速回复:指针 实验~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045816 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved