实验八 指针程序设计(解答)

合集下载

实验8_参考答案

实验8_参考答案

实验8指针与引用(2)请将自己报告部分,文字和程序代码,加粗完成下面实验内容和实验要求。

自测题1.编写函数实现字符串函数strcmp()的功能。

要求:使用指针操作完成题目⑴程序代码如下,请补充完整,使程序能运行且运行正确。

#include<iostream>#include<cstring>using namespace std;int My_strcmp(char *str1, char *str2) //声明两个字符指针变量str1和str2{while (*str1==*str2&&*str1!='\0'&&*str2!='\0') // 当对应字符相等且两个字符串未结束时循环,注意*str1和*str2之间是“==”不是“=”,并且两个字符串都要判断是否结束循环{str1++;str2++;// 将str2指针指向下一个字符}return (*str1-*str2); /*返回字符串比较结果,根据主函数中r的分支判断确定应该返回的结果*/不要写成str1-str2,这样变成指针值相减,没有意义,另外写成*str1>*str2?1:-1也是可以的}int main(){char s1[50], s2[50];cout << "please input the first string : ";cin >> s1;cout << "please input the second string : ";cin >> s2;int r;r = My_strcmp(s1, s2); // 函数调用返回值赋值给rif (r>0)cout << s1 << " is larger!" << endl;else if (r<0)cout << s2 << " is larger" << endl;elsecout << s1 << " and " << s2 << " is eqaul" << endl;return 0;}⑵运行结果截图2.编写程序,以(999)99999-999的形式输入电话号码字符串。

北科大C语言程序设计试验报告8指针_练习题代码2次上机课内容-

北科大C语言程序设计试验报告8指针_练习题代码2次上机课内容-

.
说明:
完成。

本次上机内容分两次上机1.
”,按照本说明完成以下实验内容;班级_姓名__Lab8.doc2.将本文档改名为“学号周周日前通过课程中心提交本文档。

3.在16P148)
(实验指导实验内容和实验要求练习题一1.运
练习题二2.ARR_SIZE
改为STU纠错:int FindMax( int score[][STU], int n, int m, int *pRow, int *pCol ) 运行结果截图:
.. .
..
.
3.练习题三运行结果截图:
思考题及问题:①答案:.. .
②答案:
练习题四4.运行结果截图:
..
.
练习题五5.运行结果截图:
..
.
练习题六6.运行结果截图:.. .
思考题及问题:
②答案:..
.
源程序文本(修改部分红色字体标注)
自测练习自测练习一1.源程序文本:
运行结果截图:
自测练习二2.源程序文本:
运行结果截图:..
.
自测练习三3.源程序文本:
自测练习四4.源程序文本:
自测练习五5.修改后的源程序文本(修改部分红色字体标注):
运行结果截图:..
.
自测练习六(选做)6.
..。

C语言实验学生版(最新版)

C语言实验学生版(最新版)

实验一:简单的C程序设计(2学时)一、实验方式:一人一机二、实验目的:1、了解C语言程序的编译环境和编写过程。

2、掌握C语言程序在Visual C++ 6.0环境下的调试过程。

3、初步了解C语言程序的特点。

4、掌握C语言的数据类型。

三、实验内容:1、计算两个数x和y的和。

(教材P5【例1-2】)2、从键盘输入华氏温度h,输出摄氏温度c(摄氏温度=5/9*(华氏温度-32))。

(实验教材P18)3、给定圆环,输入内圆环半径r1、外圆环半径r2,求出圆环的面积。

(实验教材P27)4、从键盘上输入两个整数x、y,实现两个数的交换,并求出最大值、最小值和两个数的平均值。

(实验教材P21)5、输入并运行以下程序,分析运行结果。

(实验教材P27)#include <stdio.h>void main( ){int i,j;i=8; j=10;printf(“%d,%d\n”,++i,++j);i=8; j=10;printf(“%d,%d\n”,i++,j++);i=8; j=10;printf(“%d,%d\n”,++i,i);i=8; j=10;printf(“%d,%d\n”,i++,i);}四、实验程序代码:五、实验运行结果(截图):实验二:顺序结构程序设计(2学时)一、实验方式:一人一机二、实验目的:1、掌握标识符、常量、变量的定义及使用。

2、掌握C语言的常用运算符及表达式。

3、掌握单分支if语句的使用方法。

4、掌握双分支if-else语句的使用方法。

三、实验内容:1、从键盘输入一个3位整数,请输出该数的逆序数。

(实验教材P27)2、输入3个字符型数据,将其转换成相应的整数后,求它们的平均值并输出。

(实验教材P27)3、判断箱子是正方体还是长方体。

(实验教材P33)4、有一函数: x (x<1)y= 2x-1 (1≤x<10)3x-11 (x≥10) 编写程序,输入x值,输出y值。

C语言实验八指针程序设计答案

C语言实验八指针程序设计答案

实验八指针的应用一、实验目的1.掌握指针变量的定义和引用。

2.掌握指针与变量的程序设计方法3.掌握指针与数组的程序设计方法4.掌握指针与字符串的程序设计方法5.掌握指针与函数的程序设计方法二、实验内容1.[目的]访问变量的地址。

[题目内容]已知,char a;int x;float p,q; 而且a=’A’;x=125;p=10.25;q=18.75;编写程序显示变量a,x,p,q的值及其地址。

[输入]无[输出]变量a,x,p,q的值及其地址[提示]使用运算符&,地址输出采用%u格式(因为内存地址是无符号的整数)。

#include <stdio.h>void main(){char a;int x;float p,q;a='A';x=125;p=10.25;q=18.75;printf("%c is stored at addr %u.\n",a,&a);printf("%d is stored at addr %u.\n",x,&x);printf("%f is stored at addr %u.\n",p,&p);printf("%f is stored at addr %u.\n",q,&q);}A is stored at addr 1245052.125 is stored at addr 1245048.10.250000 is stored at addr 1245044.18.750000 is stored at addr 1245040.Press any key to continue2.[目的]通过指针访问变量。

[题目内容]已知,int x,y;int *ptr; 而且x=10;ptr=&x;y=*ptr;,运行下列程序,使用运算符*来访问指针所指的值。

c语言程序设计实验指导答案

c语言程序设计实验指导答案

太原理工大学现代科技学院C语言程序设计课程实验报告专业班级学号姓名指导教师焦雄5.#include <stdio.h> void main(){int a=10,n=5;a+=a;printf("%d\n",a);a=10,a-=2;printf("%d\n",a);a=10,a*=2+3;printf("%d\n",a);a=10,a/=a+a;printf("%d\n",a);a=10,a%=(n%=2);printf("%d\n",a);a=10,a+=a-=a*=a;printf("%d\n",a); }遇到的问题和解决方法心得体会实验三简单程序、分支程序和循环程序设计实验名称实验目的和要求1.理解C语言程序的基本结构和实现基本结构的语句;2.熟练应用赋值、输入和输出语句;3.理解并掌握关系运算符、逻辑运算符及其表达式的使用;4.熟练掌握if语句、switch语句、while语句、do—while语句和for语句的用法;实验内容1.输入并运行第3章例3-3、例3-6中的程序,通过输出结果理解对应的格式说明。

2.输入并运行第3章例3-8、例3-10中的程序,注意输入数据的格式。

3.已知圆柱半径r=1.5,圆柱高h=3,编程求圆周长,圆面积和圆柱体积。

4.输入一百分制成绩,输出成绩等级A、B、C、D、E。

90分以上为A,80~89为B,70~79分为C,60~69分为D,60分以下为E。

要求程序能处理错误的输入数据。

5.利用公式:π/4=1-1/3+1/5-1/7+……,求π的近似值,直到最后一项的绝对值小于10-6为止。

(fabs(t)表示t的绝对值,1e-6=1*10-6)。

6.求100-200间所有素数。

7.输出三角形的九九乘法口诀表。

8.打印水仙花数。

水仙花数是指一个3位数,其各位数字立方和等于该数本身。

C程序设计实验题目(下)[宝典]

C程序设计实验题目(下)[宝典]

实验七函数程序设计(二)练习1.用递归方法解决猴子吃桃子的问题(P129习题6.10)。

运行结果:1534练习2.编写一个程序,其中包含一个子函数,功能为删除字符串中指定的某个字符,并显示删除后的字符串。

子函数要求:形式为:vo id delete_string(cha r str[],char ch);运行结果示例:练习3.编写一个程序,其中包含一个子函数,功能为求出一个二维数组(从键盘读入)中每列的最小元素,并依次放入一个一维数组中。

例:子函数要求:形式为:vo id fun(int tt[M][N],int pp[N]);(其中,tt是一个M行N列的二维数组,pp为存放结果的一维数组。

)*练习4.编写一个程序,功能为将一个无序数组b(包含5个元素)中的每个元素插入另一个有序数组a (包含10个元素)中的适当位置,使插入后的数组a依然有序。

其中,包含3个子函数,各函数要求如下:●子函数1:功能为读入一包含n个元素的数组;形式为:voi d i np ut(int a[],i nt n);●子函数2:功能为将一个数值x插入到包含n个元素的有序数组中;●形式为:voi d ins ert(int a[],i nt n,int x);●子函数3:功能为输出一包含n个元素的数组;形式为:voi d o ut p ut(int a[],i nt n);实验八指针程序设计(一)练习1.用指针变量的处理方法编写一个程序,功能为读入一组(10个)数据后,逆向输出。

程序要求:练习2.用指针变量的处理方法编写一个程序,功能为将数组s(共10个元素,由随机数生成)中的数据位置两两对倒,并输出结果。

程序要求:程序中对数组的处理全部使用指针方式。

练习3.用指针变量的处理方法编写一个子函数,功能为从键盘读入一个已经排好序的数组(共10个数),再输入一个数,将此数按次序规律将它插入到数组中后输出结果。

函数要求:实参为指针变量,形参为数组名,且形式为:vo id insert(int x[ ], int m);其中:形参m为要插入的数据;函数无返回值。

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲课程名称:C语言程序设计课程类别:专业选修课适用专业:食品科学与工程考核方式:考试总学时、学分: 48学时 2.5 学分其中实验学时: 16学时一、课程教学目的高级语言程序设计是一门实践性很强的课程,既要掌握概念,又要动手编程,还要上机调试运行。

本课程旨在培养学生学会分析问题的方法和基本问题的解决能力, 初步了解程序设计的技巧和方法、掌握 C 语言的基本内容及程序设计的基本方法与编程技巧,并能够运用Microsoft Visual C++ 6.0集成开发工具编写一些小程序,为以后继续学习打下基础。

二、课程教学要求本课程主要通过适当的示例, 系统、详细地讲解程序设计的基础知识、 C 程序设计语言的基本语法、编程方法和常用算法。

通过教学的各个环节使学生达到各章中所提的基本要求。

讲授时应以培养学生的程序设计实际软件开发能力和实践应用能力为侧重点。

三、先修课程无四、课程教学重、难点重点:C语言中的逻辑值及表示方式,使用while语句、do-while语句和for语句构成的三种循环结构,常用库函数的调用方法,数组应用的基本算法;难点:指针变量的定义及基本操作;函数之间地址的传递。

五、课程教学方法与教学手段以黑板讲授和多媒体教学手段相结合的课堂教学。

通过典型的示例讲解、必要的现场实际操作演示、适量的课堂练习、课后的上机编程调试以及及时地辅导答疑,在教学过程中增强师生之间的互动性,充分发挥学生在学习过程中的自主性、能动性和创造性。

六、课程教学内容第一章程序设计基本概念(1学时)1. 教学内容程序设计的基本含义,算法的基本特点,算法的重要性,结构化程序设计的三种基本结构,使用流程图表示三种基本结构。

2. 重、难点提示重点是结构化程序设计等基本概念;难点是算法的概念。

第二章 C程序设计的初步知识(2学时)1. 教学内容简单C语言程序的构成和格式、标识符、常量和变量、整型数据、实型数据、算术表达式、赋值表达式、自加、自减运算符、强制类型转换和逗号表达式。

C程序设计教程与实验第8章习题参考答案

C程序设计教程与实验第8章习题参考答案

第8章习题二、填空题1. 22. 6 7 200C3.p[5]4. 定义p1为指向整型数据的指针变量定义p2为指针数组,其数组元素均为指针定义p3为指向一维数组的指针,其数组元素均为整型数5. 5,36. 207. r+b[k] *x8. SecondLiFirstWang9. 2510. 12 12三程序分析题1.72. 1 5 33 9 73. 2 44. abcDDfefDbD5. 53四、编程题1.输入2个字符串,每个字符串的长度均不超过80字符,用自己实现的cmpstr()函数完成这两个字符串的大小比较,cmpstr()函数的功能和字符串比较函数strcmp()的功能相同#include <stdio.h>#include<string.h>int cmpstr(char *s1, char *s2){char *p, *q;p=s1;q=s2;while(*p!='\0' && *q!='\0'){if(*p==*q){p++;q++;}elsebreak;}return *p-*q;}void main(){char str1[81], str2[81];int c;printf("请输入第1个字符串:");gets(str1);printf("请输入第2个字符串:");gets(str2);c=cmpstr(str1,str2);if(c>0)printf("字符串%s 大于字符串%s\n",str1,str2);else if(c<0)printf("字符串%s 小于字符串%s\n",str1,str2);elseprintf("字符串%s 等于字符串%s\n", str1, str2);}2.定义一个函数float reverse(int p[], int n),该函数有两个参数,第一个参数p为形参数组名,第二个参数n为该数组中的元素个数,要求使用reverse()函数将该数组中的所有元素逆序排列,并返回该数组中所有元素的平均值。

指针 实验

指针 实验

C语言程序设计实验报告实验名称指针实验一、实验目的1.熟练掌握指针的说明、赋值、使用。

2.掌握用指针引用数组的元素,熟悉指向数组的指针的使用。

3.熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。

4.掌握指针函数与函数指针的用法。

二、实验任务1.源程序改错题下面程序是否存在错误?如果存在,原因是什么?如果存在错误,要求在计算机上对这个例子程序进行调试修改,使之能够正确执行。

#include "stdio.h"int main(void){float *p;scanf("%f",p);printf("%f\n",*p);return 0;}2.源程序完善、修改、替换题(1)下面的程序通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数,请在下划线处填写合适的表达式、语句、或代码片段来完善该程序。

#include "stdio.h"#include "string.h"int main(void){char a[80],b[80],c[160],*result=c;int choice,i;do{printf("\t\t1 copy string.\n");printf("\t\t2 connect string.\n");printf("\t\t3 exit.\n");printf("\t\tinput a number (1-3) please!\n");scanf("%d",&choice);}while(choice<1 || choice>5);switch(choice){case 1:p=strcpy;break;case 2:p=strcat;break;case 3:goto down;}getchar();printf("input the first string please!\n");i=0;printf("input the second string please!\n");i=0;result= (a,b);printf("the result is %s\n",result);down:;return 0;}(2)为了使程序不受scanf、getchar、gets等函数输入后回车符的影响,请修改第(1)题程序,按要求输出下面结果:((输入)表示该数据是键盘输入数据)1 copy string.2 connect string.3 exit.input a number (1-3) please!2 (输入)input the first string please!the more you learn, (输入)input the second string please!the more you get. (输入)the result is the more you learn,the more you get.3.跟踪调试源程序#include "stdio.h"char *strcpy(char *,char *);int main(void){char a[20],b[60]="there is a boat on the lake.";printf("%s\n",strcpy(a,b));}char *strcpy(char *s,char *t){while(*s++=*t++);return (s);}(1)单步执行。

C语言程序设计第八次实验报告(绝对有效!!)

C语言程序设计第八次实验报告(绝对有效!!)

第八次上机实验报告(结构体、共用体)一、实验目的:(1)掌握结构体类型、结构体变量的定义与使用。

(2)掌握结构体数组的定义与使用。

(3)学会使用结构体变量指针的定义与使用。

(4)掌握链表的概念,学会对链表进行建立、遍历、删除、查找操作。

(5)了解共用体的概念,进一步复习指针的内容。

二、实验题目:(1)根据以下学生情况表,编制一个C程序,分别用选择法和冒泡法对该学生情况表按成绩从低到高进行排序处理并输出。

具体要求:(a)程序中,输入、输出和两种排序功能模块分别用自定义函数形式实现。

(b)在主函数中定义一个结构体数组和结构体指针数组,其中结构体数组用以存放学生表的信息,结构体指针数组中的每一个指针元素分别指向结构体数组的个元素,利用指针数组实现排序可避免结构体数组元素交换移动,节省排序时间。

(c)在主函数中通过调用输入、输出和两种排序函数,实现首先输入数据,然后输出排序前学生的情况,再输出排序后的学生结果,格式如图所示(不要求输出表格线)。

程序:#include&lt;stdio.h&gt;#define N 5typedef struct student{int num;char name[16];char sex;int age;double grade;} stu;int output(stu *a[],int n){int i;printf(&quot;学生情况表\n&quot;);printf(&quot;学号\t姓名\t性别\t年龄\t成绩\n&quot;);for(i=0;i&lt;n;i++)printf(&quot;%d\t%s\t%c\t%d\t%lf\n&quot;,a[i]-&gt;num,a[i]-&gt;name,a[i]-&gt;sex ,a[i]-&gt;age,a[i]-&gt;grade);return 0;}int input(stu *a[],int n)int i;printf(&quot;输入%d个学生的信息(学号姓名性别年龄成绩):\n&quot;,n);for(i=0;i&lt;n;i++)scanf(&quot;%d%s%s%d%lf&quot;,&amp;(a[i]-&gt;num),a[i]-&gt;name,&amp;(a[i]-&gt;s ex),&amp;(a[i]-&gt;age),&amp;(a[i]-&gt;grade));return 0;}int bubblesort(stu *a[],int n){int i,j;stu *tmp;for(i=0;i&lt;n-1;i++)for(j=0;j&lt;n-i-1;j++){if (a[j]-&gt;grade &lt; a[j+1]-&gt;grade){tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;}}return 0;}int selectsort(stu *a[],int n){int i,j,k;stu *tmp;for(i=0;i&lt;n-1;i++){k=i;for(j=i+1;j&lt;n;j++)if(a[j]-&gt;grade &gt; a[k]-&gt;grade) k=j;if(k!=i){tmp=a[k];a[k]=a[i];a[i]=tmp;}}return 0;}int main(){int i,flag;stu p[N],*q[N];for(i=0;i&lt;N;i++)q[i]=&amp;p[i];input(q,N);output(q,N);printf(&quot;选择排列方式(1)冒泡排序法(2)选择排序法:\n&quot;);scanf(&quot;%d&quot;,flag);if(flag==1)bubblesort(q,N);else if(flag==2)selectsort(q,N);else printf(&quot;choice error!!&quot;);output(q,N);return 0;}新程序:#include&lt;stdio.h&gt;struct person{int num;char name[7];char sex;int age;float grade;}p[5],*q[5],*s,**t;void input(struct person p[]){int i;for(i=0;i&lt;=4;i++)scanf(&quot;%d%s%1s%d%f&quot;,&amp;(p[i].num),p[i].name,&amp;(p[i].sex),&amp;(p[ i].age),&amp;(p[i].grade));}struct person **bubblesort(struct person p[],struct person *q[],struct person *s) {int j,i;for(i=0;i&lt;4;i++)for(j=0;j&lt;4-i;j++)if(p[j].grade&gt;p[j+1].grade){s=q[j];q[j]=q[j+1];q[j+1]=s;}return(q);}void output(struct person **q){int i;for(i=0;i&lt;=4;i++)printf(&quot;%d\t%s\t%c\t%d\t%f\n&quot;,(*(q+i))-&gt;num,(*(q+i))-&gt;name,(*(q+ i))-&gt;sex,(*(q+i))-&gt;age,(*(q+i))-&gt;grade);}int main(){int w;for(w=0;w&lt;=4;w++)q[w]=&amp;p[w];s=NULL;printf(&quot;input the information of students:\n&quot;);input(p);t=bubblesort(p,q,s);printf(&quot;\nnum name sex age grade\n&quot;);output(t);return 0;}(2)链表基本操作。

C程序设计-8指针

C程序设计-8指针


示例:用函数调用实现字符串的复制

指针和字符数组
(1) 用字符数组名作为函数参数
#include <stdio.h> int main() {void copy_string(char from[],char to[]); char a[]="I am a teacher."; char b[]="you are a student."; printf(“a=%s\nb=%s\n",a,b); printf("copy string a to string b:\n"); copy_string(a,b); printf(“a=%s\nb=%s\n",a,b); return 0; }
指针和二维数组
1. 二维数组元素的地址分析
设定二维数组:int [3][4]= {{1,3,5,7},{9,11,13,15},{17,19,21,23}};
a[0] a a+1
a[0]+1 a[0]+2
a[0]+3
列指针 7 15 23
24
a+2
行指针
2015/12/26
a[0] a[1] a[2]
a a+1 a+2
行指针
a[0] a[0]+1 a[0]+2 a[0]+3 列指针 a[0] a[1] a[2] 1 9 17 3 11 19 5 13 21 7 15 23
指针和二维数组
1. 二维数组元素的地址分析
a[i]+j代表谁的地址? 代表a[i][j]的地址
*(a[i]+j)代表什么? 代表元素a[i][j]

C语言程设计实验与案例周信东主编实验八 指针

C语言程设计实验与案例周信东主编实验八  指针

实验6 指针学号:1700200224姓名:莫新锋实验日期:一、实验目的和要求(1)掌握指针的概念、指针变量定义和引用。

(2)掌握指针的运用方法。

(3)掌握数组的指针和指向数组的指针变量。

(4)掌握指针与函数的关系。

(5)能正确使用字符串的指针和指向字符串的指针变量。

(6)了解指向函数的指针。

(7)了解指向指针变量的指针的概念及其使用方法。

二、实验内容完成实验指导书中的实验八“基础部分”和“增强部分”的题目。

实验九的内容由同学自行选作。

三、实验步骤及结果【基础题】:Ex8-1请在下面分别插入改正错误后的源程序代码及运行成功时的画面源程序代码:请在此粘贴修改后正确的程序代码。

、#include<stdio.h>//#define N 12void main(){int j, a[12],*p=a;//p=&a[N];for(j=1;j<=12;j++)scanf("%d",p);for(j=1;j<=12;j++){printf("%d",p++);if(j%4==0)printf("\n");}}运行结果:请在此粘贴本程序运行结果的截图Ex8-2请在下面插入该程序的运行结果的画面:运行结果:#include<stdio.h>swap(int *pl,int *p2){int p;p=*pl;*pl=*p2;*p2=p;}void main(){int n1,n2,n3;int *p1,*p2,*p3;printf("Input n1,n2,n3: ");scanf("%d,%d,%d",&n1 ,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if (n1>n2)swap(p1,p2);if (n1>n3)swap(p1,p3);if(n2>n3)swap(p2,p3);printf("The result is:%d %d %dn",n1,n2,n3);}请在此粘贴本程序运行结果的截图试用解释本程序是如何通过指针参数p1、p2改变主函数main中的变量n1、n2、n3的值的?请回答问题将n1,n2,n3的地址分别给p1,p2,p3,通过对n1,n2,n3两两的比较,调用函数swap进行排序,进而得到新的地址排序后输出【增强题】:Eh8-1请在下面分别完成本题的源程序代码及运行结果的画面:源程序代码:请在此粘贴完成本题的程序源代码。

西安交通大学计算机程序设计指针实验

西安交通大学计算机程序设计指针实验

西安交通大学实验报告课程_计算机程序设计_实验名称__指针__第页共页一.实验目的(1)掌握指针的概念,学会定义指针变量和使用指针变量进行间接引用;(2)掌握数组的指针和指向数组的指针变量;(3)掌握二维数组中行指针的概念和使用。

二.实验内容(一)编写程序,将一个输入位数不确定的正整数按照标准的3位分节格式输出,例如当用户输入8214235时,程序应输出82,142,235.1.要点分析略2.程序源代码#include <iostream>using namespace std;int main(){long n,i=1;char a[20], *p;p=a;cout<<"请输入待转换的整数:";cin>>n;do{if(i%4!=0){*p=n%10+'0';n=n/10;}else *p=',';p++;i++;}while (n!=0);cout<<"结果为:";do{p--;i--;cout<<*p;}while(i>1);cout<<endl;return 0;}3.实验结果(二)实验题目二:用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其字符的个数,还能分别指出其中大、小写字母,数字以及其他字符的个数。

1.要点分析略2.程序源代码#include <iostream>using namespace std;int main(){char s[30],*ps=s;int a,b,c,d;cout<<"请输入一个任意字符串:";cin>>s;a=0; b=0; c=0; d=0;while (*ps!='\0'){if (*ps>='a'&&*ps<='z')a++;else if (*ps>='A'&&*ps<='Z') b++;else if (*ps>='0'&&*ps<='9') c++;else d++;ps++;}cout<<"该字符串字符个数为"<<a+b+c+d<<endl;cout<<"该字符串小写字母个数为"<<a<<endl;cout<<"该字符串大写字母个数为"<<b<<endl;cout<<"该字符串数字个数为"<<c<<endl;cout<<"该字符串其它字符个数为"<<d<<endl;return 0;}3.实验结果(三)实验题目三编写一个函数,用于将一个字符串转换为整型数值。

实验(7)-指针-参考答案

实验(7)-指针-参考答案

C语言程序设计实验教学(7)【实验目的】指针是C语言中非常重要的一章内容。

通过实验让学生掌握各类指针的定义与引用、例如:指向一般变量的指针、指向数组的指针应用、字符指针的应用、指针数组的应用、指向指针的指针的应用。

【实验要求】使用指针来完成变量的引用,编写程序理解指针的含义。

【实验课时】8.0【实验内容】1.通过指针变量求三个变量中的最大值和最小值。

#include <stdio.h>#include <conio.h>void main(){ int a,b,c,*pmax,*pmin; clrscr();printf("Please input three numbers:\n");scanf("%d,%d,%d",&a,&b,&c);if(a>b) /*使pmax指向a,b中大的数,pmin指向a,b中小的数*/{pmax=/**/ &a /**/;pmin=/**/ &b /**/;}else{pmax=/**/ &b /**/;pmin=/**/ &a /**/;}if(c>*pmax) pmax=/**/ &c /**/; /*使pmax指向变量a,b,c中最大的数*/ if(c<*pmin) pmin=/**/ &c /**/; /*使pmin指向变量a,b,c中最小的数*/ printf("max=%d\nmin=%d\n",/**/ *pmax /**/,/**/ *pmin /**/);}2. 输入3个整数,按照从小到大的次序输出。

#include <stdio.h>#include <conio.h>void main( ){ int a,b,c; int *pa=&a,*pb=&b,*pc=&c,*temp;clrscr();printf("Please input three numbers:\n");scanf("%d,%d,%d",&a,&b,&c);if(*pa>*pb){/**/ temp=pa,pa=pb,pb=temp /**/;} /*使pa指向a,b中小的数*/if(*pa>*pc){/**/ temp=pa,pa=pc,pc=temp /**/;} /*使pa指向a,b,c中最小的数*/ if(*pb>*pc){/**/ temp=pb,pb=pc,pc=temp /**/;} /*使pb指向a,b,c中次小的数*/ printf("%d,%d,%d\n",*pa,*pb,*pc);}运行结果如下:Input three integers n1,n2,n3: 34,21,25↙Now, the order is: 21,25,343.将输入的10个整数存入一数组a中,然后输出数组元素中的最大值与次最大值。

程序设计基础(C) 上机实验指导8 指针

程序设计基础(C) 上机实验指导8  指针

分析与理解: 假设有 int a, *p = &a; 分析下面的表达式的 正误:
*&a
&*a
*&p
&*p
8.2 指针和数组
8. 2. 1 指针和一维数组
数组在内存中是一个连续的存储空间,常常可以借助于指针对 其进行访问。例如,有如下代码, int a[5]={10,20,30,40,50};
3
指针变量的引用
在使用指针的时候,首先要熟练掌握两个运算符: (1) & 取地址运算符。 (2.1)* 针对指针变量的定义而言,叫做指针变量标识; (2.2)* 针对指针变量的引用,间接访问运算符(取内容运算符) 例如:int a=10; int *p; p=&a; //p指向了a的地址 printf("%d\n",*p);
8.1.2 指针变量的定义、赋值和引用
2
指针变量的赋值
指针指向一个“空”值 例如:int *p; p=NULL; NULL是一个空值,对应的ASCII码为0,所以也可以写成p=0,
但它的意义是使指针变量不指向任何空间,而不是指向一 个地址为0的存储空间。
8.1.2 指针变量的定义、赋值和引用
第八章 部分,通过指针可以实现动态的存储空 间的访问,进而编写出高质量的程序。
8.1.1 地址和指针
内存是以字节为单位的存储空 间,每个字节都有一个编号, 而这个编号称为内存地址。 定义的变量都是存放在内存中 的,当使用的时候,则通过内 存的编号找到所定义的空间位 置,进而对数据进行存取。即 通过地址对变量进行访问的。 例如:int a=10;
++p; printf("%d",*p); printf("%d",*(p+2)); printf("%d",*(++p)); //指针增加一个单位,指向a[1] //输出a[1]中的数据20 //本位置之后的两个地址偏移量的值,即a[3] //输出p指针指向的位置a[2]的值30

实验(8)指针参考答案

实验(8)指针参考答案

C语言程序设计实验教学(8)【实验目的】指针是C语言中非常重要的一章内容。

通过实验让学生掌握各类指针的定义与引用、指针作为函数参数的应用、字符指针的应用、函数指针的应用。

【实验要求】使用指针来完成变量的引用,编写程序将指针作为参数进行传递,理解指针的含义。

【实验课时】10.0【实验内容】1. 上机编程实现用函数来将从键盘上输入的三个数按由小到大的顺序输出。

要求编写自定义函数swap()用于交换两个变量的值;且函数原型为:void swap(int *p1,int *p2);;并在main函数中用指针变量作为实际参数调用函数swap();最后输出排序后的结果。

#include <stdio.h>main(){void swap(int *p1,int *p2);int n1,n2,n3; int *p1,*p2,*p3;printf("Input three integers n1,n2,n3: ");scanf("%d,%d,%d",&n1,&n2,&n3);p1=&n1; p2=&n2; p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3) swap(p1,p3);if(n2>n3) swap(p2,p3);printf("Now, the order is: %d,%d,%d\n",n1,n2,n3);}void swap(int *p1,int *p2){int p;p=*p1;*p1=*p2;*p2=p;}运行结果如下:Input three integers n1,n2,n3: 34,21,25↙Now, the order is: 21,25,342. 上机编程实现用函数来将从键盘上输入的三个字符串按由小到大的顺序输出。

要求编写自定义函数swap()用于交换两个变量的值;且函数原型为:void swap(char *p1,char *p2);;并在main函数中用字符数组名作为实际参数调用函数swap();最后输出排序后的结果。

实验参考标准标准答案

实验参考标准标准答案

实验八指针程序设计班级:学号:姓名:评分:一.【实验目地】1、理解指针、地址和数组间地关系.2、掌握通过指针操作数组元素地方法.3、掌握数组名作为函数参数地编程方式.4、进一步掌握C程序地调试方法和技巧.二.【实验内容和步骤】1、程序调试题A.目标:进一步学习掌握程序调试地方法和技巧.B.内容:有n个整数,使各数顺序往后循环移动m个位置(m<n).编写一个函数实现以上功能,在主函数中输入n个整数并输出调整后地n个整数.改正程序中地错误,使其实现程序地功能.(注:程序文件保存在“调试示例”文件夹中,文件名为error08.cpp)①调试正确地源程序清单#include <stdio.h>void mov(int *, int, int);int main(){int m, n, i, a[80], *p;printf("Input n, m:");scanf("%d%d",&n,&m);for(p=a,i=0;i<n;i++)scanf("%d",p++);mov(a,n,m);printf("After move: ");for(i=0;i<n;i++)printf("%5d",a[i]);printf("\n");return 0;}void mov(int *x, int n, int m){int i,j,k;for(i=0;i<m;i++){k=x[n-1];for(j=n-1;j>0;j--)x[j]=x[j-1]; /* 调试时设置断点 */x[0]=k;}}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).2、完善程序,并调试运行程序题目(1)分类统计.程序功能:输入一行文字,分类统计其中地大写字母、小写字母、数字、空格以及其他字符地个数.(注:程序文件保存在“第1题”文件夹中)打开proj1.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单#include <stdio.h>#include <string.h>void main( ){int i,count[5]={0,0,0,0,0};char str[80],*p;printf("Input a line char: ");gets(str);p=str;//请在两条星线之间填入相应地代码, 输入一行文字,分类统计其中地大写字母、小写字母、//数字、空格以及其他字符地个数.//要求:利用指针方法来处理./*******************************************************************************/for(i=0;*p!='\0';p++){if(*p>='A' && *p<='Z') {count[0]++;continue;} //大写字母else if(*p>='a' && *p<='z') {count[1]++;continue;} //小写字母else if(*p>='0' && *p<='9') {count[2]++;continue;} //数字字符else if(*p==' ') count[3]++; //空格字符else count[4]++; //其他字符}/*******************************************************************************/printf("The result is: \n");for(i=0;i<5;i++){switch(i){case 0:printf("Upper Char: ");break;case 1:printf("Lower Char: ");break;case 2:printf("Digit Char: ");break;case 3:printf("Space Char: ");break;case 4:printf("Other Char: ");break;}printf("%d\n",count[i]);}}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(2)排序.程序功能:输入一个整数n(1<n≤10),然后输入n个整数存入数组a中,要求定义一个函数void sort(int list[],int n),用选择法对list数组中地元素升序排列,其中:n为list数组中地元素个数.在main函数中调用sort函数实现排序,最后输出排序后地结果.(注:程序文件保存在“第2题”文件夹中)打开proj2.cpp 文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:输入一个整数n(1<n≤10),然后输入n个整数存入数组a中,定义并调用一个// 函数void sort(int list[],int n),用选择法对list数组中地元素按升序排// 列,其中:n为list数组中地元素个数.最后输出排序后地结果.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>void main(){int i, a[10];void sort(int *, int);for(i=0; i<10; i++) scanf("%d", &a[i]);//请在两条星线之间填入相应地代码, 调用sort函数,对数组a中地元素按照升序排列/*************************************************************************/sort(a,10);/*************************************************************************/printf("The result is: ");for(i=0;i<10;i++)printf("%d ",a[i]); //输出排序后地结果printf("\n");}//定义一个函数void sort(int *p,int n),用选择法对指针p指向地数组中地元素按升序//排列,其中:n为数组中地元素个数.void sort(int *p, int n){int i,j,iMin,temp;//请在两条星线之间填入相应地代码, 用选择法对指针p指向地数组中地元素升序排列//其中:n为list数组中地元素个数.//要求:利用指针方法来处理./*************************************************************************/ for(i=0;i<n;i++){iMin=i;for(j=i+1;j<n;j++)if(*(p+iMin)>*(p+j))iMin=j;temp=*(p+i);*(p+i)=*(p+iMin);*(p+iMin)=temp;}/*************************************************************************/ }②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(3)找最长地字符串.程序功能:连续输入5个以空格分隔地字符串(字符串地长度不超过80),输出其中长度最长地字符串.例如:输入:li wang zhang jin xiao,输出:zhang.(注:程序文件保存在“第3题”文件夹中)打开proj3.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:连续输入5个字符串(字符串地长度不超过80),输出其中长度最长地字符串.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>#include <string.h>void main( ){int i,MaxLen;char str[80], longest[80], *p;printf("Input 5 strings: ");scanf("%s",str);//输入第一个字符串strcpy(longest,str);MaxLen=strlen(str);//将第一个字符串设置为初始地最长字符串p=str;//将指针p指向字符串str//请在两条星线之间填入相应地代码, 输入其它4个字符串,查找其中最长地字符串.//要求:利用指针方法来处理./***********************************************************************/for(i=0;i<4;i++){scanf("%s",p);if(strlen(p)>MaxLen){MaxLen=strlen(p);strcpy(longest,p);}}/************************************************************************/ printf("The longest string is: %s \n", longest);}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(4)找最大地字符串.程序功能:连续输入5个以空格分隔地字符串(字符串地长度不超过80),输出其中最大地字符串.例如:输入:li wang zha jin xiao,输出:zha.(注:程序文件保存在“第4题”文件夹中)打开proj4.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:连续输入5个字符串(字符串地长度不超过80),输出其中最大地字符串.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>#include <string.h>void main( ){int i;char str[80], max[80], *p;printf("Input 5 strings: ");scanf("%s",str);//输入第一个字符串strcpy(max,str);//将第一个字符串设置为初始地最大字符串p=str;//将指针p指向字符串str//请在两条星线之间填入相应地代码, 输入其它4个字符串,查找其中最大地字符串.//要求:利用指针方法来处理./***********************************************************************/for(i=0;i<4;i++){scanf("%s",p);if(strcmp(p,max)>0)strcpy(max,p);}/************************************************************************/ printf("The max string is: %s \n", max);}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(5)删除字符.程序功能:编写一个函数delchar(s,c),该函数将字符串s中出现地所有c字符删除.在主程序中输入一个字符c和一个字符串s,调用delchar(s,c)函数删除字符串s中所有地c字符,然后输出删除后地字符串.例如:输入字符a和字符串li wangzhajinxiao,输出:li wngzhjinxio.(注:程序文件保存在“第5题”文件夹中)打开proj5.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(6)字符串复制.程序功能:编写一个函数strmcpy(s,t,m),该函数将字符串t中从m个字符开始地全部字符复制到字符串s中去.在主程序中输入一个字符串t和一个开始位置m,调用strmcpy(s,t,m)函数,然后输出字符串s地结果.例如:输入字符串li wangzhajinxiao和开始位置2,输出:wangzhajinxiao.(注:程序文件保存在“第6题”文件夹中)打开proj6.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:编写一个函数strmcpy(s,t,m),将字符串t中从m个字符开始地全部字符复制到字符串s中去.// 在主程序中输入一个字符串t和一个开始位置 m,调用strmcpy(s,t,m)函数,然后输出字符// 串s地结果.//例如:输入字符串liwangzhajinxiao和开始位置2,输出:wangzhajinxiao.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>#include <string.h>void main( ){char s[80], t[80];int m;void strmcpy(char *s, char *t, int m);printf("Input a strings: ");scanf("%s",t);printf("Input begin position: ");scanf("%d",&m);//请在两条星线之间填入相应地代码, 调用strmcpy(s,t,m)函数,将字符串t中从m个字符开始地全部//字符复制到字符串s中去./**************************************************************************/strmcpy(s,t,m);/**************************************************************************/printf("The result is: %s \n", s);}void strmcpy(char *s, char *t, int m){int i;//请在两条星线之间填入相应地代码, 将字符串t中从m个字符开始地全部字符复制到字符串s 中去.//要求:利用指针方法来处理./************************************************************************************ /for(i=0;i<m;i++,*t++);strcpy(s,t);/************************************************************************************ /}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(7)字符串连接.程序功能:编写一个函数strmcat(s,t),该函数将字符串t复制到字符串s地末端,并且返回字符串s地首地址.在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s地结果.例如:输入字符串Li Xiao和Wei,输出:Li Xiao Wei.(注:程序文件保存在“第7题”文件夹中)打开proj7.cpp 文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:编写一个函数strmcat(s,t),将字符串t复制到字符串s地末端,并且返回字符串s地首地址.// 在主程序中输入两个字符串s和t,调用strmcat(s,t)函数,然后输出字符串s地结果.//例如:输入字符串LiXiao和Wei,输出:LiXiaoWei.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>#include <string.h>void main( ){char s[80], t[80], *p;char * strmcat(char *s, char *t);printf("Input the first string: ");scanf("%s",s);printf("Input the second string: ");scanf("%s",t);//请在两条星线之间填入相应地代码, 调用strmat(s,t)函数,将字符串t复制到字符串s中去./********************************************************************************/p=strmcat(s,t);/********************************************************************************/printf("The result is: %s \n", p);}char * strmcat(char *s, char *t){int i,k;//请在两条星线之间填入相应地代码, 将字符串t复制到字符串s中去,并返回字符串s地首地址.//要求:利用指针方法来处理./**********************************************************************************/k=strlen(s);for(i=0;i<=strlen(t);i++)*(s+k+i)=*(t+i);/**********************************************************************************/return s;} ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(8)字符串排序.程序功能:编写一个sort函数,实现对5个字符串按从大到小进行排序.在主程序中输入5字符串,调用sort函数进行排序,然后输出排序后地结果.例如:输入字符串Li Xiao Wang Zhang Yu,输出:Zhang Yu Xiao Wang Li.(注:程序文件保存在“第8题”文件夹中)打开proj8.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单#include <stdio.h>#include <string.h>void main( ){int i;char s[5][80];void sort(char (*p)[80], int n);printf("Input 5 strings: ");for(i=0;i<5;i++) scanf("%s",s[i]);//请在两条星线之间填入相应地代码, 调用sort函数,实现对5个字符串按从大到小进行排序./********************************************************************************/sort(s, 5);/********************************************************************************/printf("The result is: ");for(i=0;i<5;i++) printf("%s ",s[i]);printf("\n");}void sort(char (*p)[80], int n){int i,j,iMax;char t[80];//请在两条星线之间填入相应地代码, 实现对5个字符串按从大到小进行排序.(选择法)//要求:利用指针方法来处理./********************************************************************************/for(i=0;i<n-1;i++){iMax=i;for(j=i+1;j<n;j++) if(strcmp(p[j],p[iMax])>0) iMax=j;strcpy(t,p[i]);strcpy(p[i],p[iMax]);strcpy(p[iMax],t);}/********************************************************************************/}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).题目(9)在数组中查找指定元素.程序功能:输入一个整数n(1<n≤10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应地下标,否则输出“Not found”.要求定义一个函数search(int list[],int n,int x),在数组list中查找元素x,若找到则返回相应下标,否则返回-1,其中:n为list 数组中地元素个数.在main函数中调用search函数实现程序功能.(注:程序文件保存在“第9题”文件夹中)打开proj9.cpp文件,在两条星线之间填入相应地代码,使程序完成该功能.①调试正确地源程序清单//程序功能:输入一个整数n(1<n≤10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a 中// 查找 x,如果找到则输出相应地下标,否则输出"Not found".//要求:定义并调用一个函数search(int list[],int n,int x),在数组list中查找元素x,若找到// 则返回相应下标,否则返回-1,其中:n为list数组中地元素个数.//提示:除在指定位置添加语句之外,请不要改动程序中地其他内容.#include <stdio.h>void main(){int i, x, a[10], res;int search(int *, int, int);for(i=0; i<10; i++) scanf("%d", &a[i]);scanf("%d", &x);//请在两条星线之间填入相应地代码, 调用search函数,查找整数x在数组a中地位置./*************************************************************************/res=search(a,10,x);/*************************************************************************/ if(res==-1)printf("Not found\n");else printf("The position is %d\n", res);}//定义一个函数search(int list[],int n,int x),在数组list中查找元素x,若找到则//返回相应下标,否则返回-1,其中:n为list数组中地元素个数.int search(int *p, int n, int x){int i, pos;//请在两条星线之间填入相应地代码, 查找x在指针p指向地含n个元素地数组中地位置//要求:利用指针方法来处理./*************************************************************************/ pos=-1;for(i=0;i<n;i++,*p++){if(*p==x)pos=i;}/*************************************************************************/return pos;}②运行结果:(提示:通过屏幕截图,贴粘程序运行界面).版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.wt6qb。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《指针程序设计》实验解答
1、改错题
(1)
include<stdio.h>
int digits(char *s)
{
int c=0;
while(*s) //s改为*s
{
if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9'
c++;
s++;
}
return c;
}
void main()
{
char s[80];
printf("请输入一行字符\n");
gets(s);
printf("字符长度是:%d\n",digits(s));
}
(2)
#include<stdio.h>
swap(int *p1,int *p2)
{
int p; //int *p改为int p
p=*p1; //*p=*p1改为p=*p1
*p1=*p2;
*p2= p; //*p2=*p 改为*p2=*p
}
void main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("a=%d\tb=%d\n",a,b);
swap(&a,&b);
printf("a=%d\tb=%d\n",a,b);
}
(3)
#include <stdio.h>
void move(int *pointer) ; //添加
void main(void)
{
int a[3][3],*p,i;
printf("输入数组元素:\n");
for(i=0;i<3;i++)
scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1],
a[i][2])
p=&a[0][0]; // p=a[0][0];
move(p);
printf("转置后的数组为:\n");
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0], a[i][1], a[i][2]);
}
void move(int *pointer)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j); //t=(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t;
}
}
2、程序填空
(1)
#include<stdio.h>
int findmax(int *s,int t )
{
int i,k=0;
for(i=0;i< t ;i++) //1
if( s[i]>s[k]) k=i; // 2
return k ; //3
}
void main()
{
int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;
int j;
for(j=0;j<10;j++)
printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);
k=findmax(a,10);
add=&a[k];
printf("\n%d %d %xh\n",a[k],k+1,add );
}
(2)
#include <stdio.h>
void main()
{
int a[5]={1,3,5,7,9};
int *num[5],i,*p;
int *f(int *x[],int);
for (i=0;i<5;i++)
num[i]= &a[i] ; //1
p=f(num,2);
for ( ; p<=num[4]; p++)
printf(" %d\t", *p ); //2
}
int *f(int *x[],int i)
{
int k=0;
for (; k<i; k++) ;
return x[k] ; //3
}
3、编程题
(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。

#include<stdio.h>
void sort(int *p,int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(*(p+j)>*(p+j+1)) //由小到大排序
{ t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;}
}
void main()
{int a[10],i;
printf("输入%d个正数:",10);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10); //调用排序函数
printf("排序后:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
(2)编写一个程序实现如下功能:利用指针作函数参数,设计一函数对字母进行简单加密,把当前的字母变成后面第3个字母,如最后三个字母x、y、z变成字母a、b、c。

再设计一函数把加密字符还原(程序以文件名sy7_8.c存盘)。

#include<stdio.h>
void jiami(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a' && *p<='z'|| *p>='A'&& *p<='Z')
{*p=*p+3;
if(*p>'Z'&&*p<'a' ||*p>'z') *p=*p-26;}
++p;
}
}
void jiemi(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a'&& *p<='z'||*p>='A'&& *p<='Z')
{ *p=*p-3;
if(*p<'A'||*p<'a'&&*p>'Z') *p=*p+26;}
++p;
}
}
void main()
{
char line[80];
printf("请输入一行字符:\n");
gets(line);
jiami(line);
puts(line);
jiemi(line);
puts(line);
}
(3)编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。

例如123放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数(程序以文件名sy7_9.c存盘)。

#include <stdio.h>
#include <string.h>
void main()
{
char ch[1000],*p=ch;
int a[50],*q=a,num=0,i;
gets(ch);
for( ; *p!='\0'; p++)
if(*p>='0' && *p<='9')
{
*q=(*p)-'0';
p++;
while(*p>='0' && *p<='9')
*q=(*q)*10+(*(p++)-'0');
num+=1;
q+=1;
}
for(i=0,q=a; i<num; i++,q++)
printf("%d ",*q);
printf("\n一共输入了%d个数字。

\n",num); }。

相关文档
最新文档