指针 实验~
前段时间 我说 要写一个 关于 指针 实验的 东西 然后 由于 放假 国庆 没有 写完了 还是发上来吧~已经 写到 第三个了 其实 都是 差不多的 很简单地说 现在感觉 但是 链表....晕乎乎~
新建 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 (); } }
虽然 没写完啦~