实验7指针
C语言实验-第七章-第九章2

实验七:指针的应用【实验目的】1.掌握指针和指针变量,内存单元和地址、变量与地址、数组与地址的关系;2.掌握指针变量的定义和初始化,指针变量的引用方式;3.能正确使用数组的指针和指向数组的指针变量;【实验内容】1.填空题输入一个字符串,将其中的大写字母转换成小写字母,然后输出本程序主要是比较scanf()输入和gets()输入的区别#include <stdio.h>void main(){ char s[20];char *p=s;scanf(“%s”,p); /*注意用scanf()输入和gets()输入的区别*/while( 1 ){if( 2 ) *p=*p+ (‘a’-‘A’);p++ ;}puts ( 3 );}答案:1、*p!=’\0’2、(*p>='A')&&(*p<='Z')3、s运行结果:输入:Program输出:program输入:This is Program输出:this提示:scanf ()输入时遇到空格认为字符串结束,用gets()输入时只有遇到回车才认为字符串结束。
如键入any boy并回车,则2。
补充程序题输入15个整数存入一维数组,再按逆序重新调整该数组中元素的顺序然后再输出。
下面给出部分程序的内容,请将程序补充完整,然后上机调试。
部分程序清单如下:#include <stdio.h>void main(){ int a[15],*p1,*p2,x;for(p1=a;p1<a+15;p1++)scanf("%d",p1);for(p1=a,p2=a+14;p1<a+7;p1++,p2--){ x=*p1;*p1=*p2;*p2=x;}……}答案:for(p1=a;p1!=a+15;p1++)printf("%d ",*p1); // %d后面有一个空格运行结果:输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1提示:(1)在整型数组中,没有结束标志,必须依靠数组中数据元素的个数控制循环次数。
C语言教材第七章指针实验

C语⾔教材第七章指针实验第七章指针第⼀部分知识训练【知识要点】1. 地址与指针指针变量的概念:⽤⼀个变量专门来存放另⼀个变量的地址。
2. 指向变量的指针变量指针变量的形式:基类型 *指针变量名;&: 取地址运算符;*:指针运算符。
3. 指针与数组引⽤⼀个数组元素可以⽤下标法和指针法;可以⽤数组名作函数的参数。
4.指针与函数函数指针变量定义的⼀般形式为:类型说明符 (*指针变量名)();⼀个函数的返回值可以是⼀个函数。
【典型习题与解析】5. char * const p;char const * pconst char *p上述三个有什么区别?【解析】char * const p; //常量指针,p的值不可以修改;char const * p;//指向常量的指针,指向的常量值不可以改;const char *p; //和char const *p。
6. main(){int a[5]={1,2,3,4,5};int *ptr=(int *)(&a+1);printf("%d,%d",*(a+1),*(ptr-1));}输出结果是什么?【解析】答案:输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执⾏结果是2,5。
&a+1不是⾸地址+1,系统会认为加⼀个a数组的偏移,是偏移了⼀个数组的⼤⼩(本例是5个int)。
1)&a是数组指针,其类型为 int (*)[5];⽽指针加1要根据指针类型加上⼀定的值,不同类型的指针+1之后增加的⼤⼩不同。
2)a是长度为5的int数组指针,所以要加 5*sizeof(int),所以ptr实际是a[5],但是prt与(&a+1)类型是不⼀样的(这点很重要),所以prt-1只会减去sizeof(int*) a,&a的地址是⼀样的,但意思不⼀样。
3)a是数组⾸地址,也就是a[0]的地址,&a是对象(数组)⾸地址,a+1是数组下⼀元素的地址,即a[1],&a+1是下⼀个对象的地址,即a[5]。
C语言实验六实验报告——指针

一、实验项目名称指针二、实验目的1.掌握指针的基本概念和基本用法..包括:变量的地址和变量的值;指针变量的说明、指针变量的初始化、指针的内容与定义格式、指针的基本运算等;2.掌握数组与指针的关系并能够利用指针解决数组的相关问题;3.掌握字符串与指针的关系并能够利用指针处理字符串的问题;4.掌握指针与函数的关系并能够利用指针处理函数问题;5.了解指向指针的指针的概念及其使用方法;6.能够使用指针进行程序设计..三、实验内容有关指针的程序设计1.编程实现:任意输入的10个数;求其平均值..要求:110个数采用scanf语句读入..2利用指针实现对这10个数的访问..3要求平均值的精度为小数后面2位..2.编程实现:将一个任意整数插入到一个已排序的整数数组中;插入后数组中的数仍然保持有序..要求:1整数数组由初始化方式输入..任意整数由scanf函数输入;2实现过程采用指针处理;3输出原始数组数据以及插入数据后的数组数据并加以相应说明..3.编写函数newcopychar *new;char *old;它的功能是删除old所指向的字符串中的小写字母;并将所得到的新串存入new中..要求:1在主函数中以初始化方式输入一个字符串;2调用newcopy函数;3在主函数中输出处理后的结果..4.编程实现:输入三个整数;按由大到小的顺序输出..要求:1通过scanf函数输入三个数据并存入三个变量中;2利用指针实现从大到小输出;3修改程序;将三个整型数据改为字符型数据;输入三个字符;按从大到小数顺序输出;4修改程序;将三个字符型数据改为字符串数据;输入三个字符串;按从小到大顺序输出;5体会指针对不同数据处理的特点..四、实验步骤及结果一、#include <stdio.h>void main{int a10;n;sum=0;float aver;/* 定义平均数为浮点型*/int *p=a;/*初始化*/printf"Please input 10 numbers:\n";for n=0;n<10;++nscanf"%d";&an;/*输入十个数*/for n=0;n<10;++nsum=sum+*p+n;/*使用指针访问数据*/aver=floatsum/n;printf"Average is %.2f";aver;/*精确到小数点后两位*/}二、#include <stdio.h>void arrint *a;int n;/*定义排序函数*/void insertint *a;int num;/*插入并排序函数*/int n=10;/*定义数据个数;可修改*/void main{int *a;num;j;k;b10;printf"请输入个数据:\n";for j=0;j<n;++jscanf"%d";&bj;/*输入原始数据*/a=&b0;/*初始化*/arra;n;/*调用排序函数*/printf"排序好的数据为:\n";for j=0;j<n;++jprintf"%d ";*a+j;/*输出排序好的原始数据*/ printf"\n请输入要插入的数:";scanf"%d";#printf"插入%d后的数据为:\n";num;inserta;num;/*调用插入并排序函数*/}void arrint *a;int n/*排序函数*/{int k;j;h;for k=0;k<10;++kfor j=0;j<n-k-1;++jif *a+1+j<*a+j{h=*a+1+j;*a+1+j=*a+j;*a+j=h;}}void insertint *a;int num{void arrint *a;int n;int j;k;*a+n=num;/*将插入的数排在数组最后一位*/ arra;n+1;/*将新数组重新排序*/for j=0;j<n+1;++jif *a+j==num{k=j;break;}/*找到插入的数在数组中的位置*/ for j=0;j<n+1;++jprintf"%d ";*a+j;printf"\n插入的数据排在数组的第%d位";k+1;}三、#include <stdio.h>void newcopychar *new1;char *old;void main{char *new1;*old;a10;/*new是不能当做变量;所以用new1*/old=a;new1=a;/*字符串的初始化*/printf"请输入字符串:\n";scanf"%s";a;newcopynew1;old;/*调用函数*/printf"新的字符串为:\n";printf"%s";new1;}void newcopychar *new1;char *old{int n;j=0;for ;* old='\0';++oldif * old>'z' || * old<'a'{* new1+j=* old;++j;}/*排除原字符串中的小写字母;将其他字符存入新字符串*/ *new1+j='\0';/*结束新字符串;否则新字符串的输出会故障*/}四、#include <stdio.h>void main{void exchangeint *q1;int *q2;int*q3;int a;b;c;*q1;*q2;*q3;printf"请输入个数:\n";scanf"%d;%d;%d";&a;&b;&c;q1=&a;q2=&b;q3=&c;/*将三个数的地址存入q1q2q3中*/ exchangeq1;q2;q3;/*调用排序函数*/printf"3个数从大到小排列为:\n%d;%d;%d";a;b;c;}void exchangeint *q1;int *q2;int *q3{void swapint *q1;int *q2;/*调用交换函数*/if *q1<*q2swapq1;q2;/*若*q1小于*q2;交换地址位置*/if *q1<*q3swapq1;q3;if *q2<*q3swapq2;q3;}void swapint *q1;int *q2/*交换函数*/{int n;n=*q1;*q1=*q2;*q2=n;}修改程序;将三个整型数据改为字符型数据;输入三个字符;按从大到小数顺序输出:只需将程序中的所有int改为char;将%d改为%c即可..修改程序;将三个字符型数据改为字符串数据;输入三个字符串;按从小到大顺序输出:#include<stdio.h>#include<stdlib.h>#include<conio.h>int cmpchar *p1;char *p2 /* 字符串比较函数*/{int i=0;while *p1+i==*p2+iif *p1+i++=='\0' return 0; /* 这里是先判断*p1+i=='\0';然后再是i++ */ return *p1+i-*p2+i;}void sortchar *a3 /*排序函数*/{char *temp;int i;j;fori=0;i<3-1;i++/* 选择排序*/forj=i+1;j<3;j++ifcmpai;aj>0{temp=ai;ai=aj;aj=temp;}}void main{int i;char s381;*p3;/* 设定每个字符串不超过字节*/printf"请输入3个字符串:\n";fori=0;i<3;i++{getssi;pi=si;}sortp;printf"字符串从小到大排序为:\n";fori=0;i<3;i++printf"%s\n";pi;}五、思考题或实验感想小结函数指针、数组指针、字符串指针的使用..对于指针的使用;最重要的是搞清楚函数指针、数组指针和字符串指针的概念;不能混乱起来..函数指针变量指向一个函数;然后通过该指针变量调用此函数..函数指针中;函数名代表该函数的入口地址..函数指针只能指向函数的入口而不能指向函数中的某一条指令处;因此不能用*p+1表示函数的下一条指令..数组元素的指针就是数组元素的地址..C语言中规定数组名代表数组中首元素的地址;所以p=&a0和p=a等价..p+i;a+i就是ai的地址;或者指向数组的第i个元素..*p+i 或*a+i是p+i或a+i所指向的数组元素;即ai..指向数组的指针变量可以带有下标;如pi 与*p+i等价..字符串指针实际上是把字符串的第一个字符赋给指针变量..指针变量只能指向一个字符变量或其他字符型数据;不能同时指向多个字符数据..。
C语言程序设计教程(第二版)张敏霞 参考答案

c语言程序设计教程(第2版)课后题及模拟题参考答案习题1 (3)1-1 填空题 (3)1-2 思考题 (3)1-3 编程题 (3)习题2 (4)2-1 单选题 (4)2-2 思考题 (4)习题3 (5)3-1 选择题 (5)3-2 填空题 (5)3-3 编程题 (5)习题4 (7)4-1单选题 (7)4-2填空题 (7)4-3 编程题 (7)习题5 (10)5-1单选题 (10)5-2填空题 (10)5-3 编程题 (10)习题6 (13)6-1单选题 (13)6-2填空题 (13)6-3 编程题 (13)习题7 (15)7-1单选题 (15)7-2填空题 (15)7-3 编程题 (15)习题8 (16)8-1单选题 (16)8-2填空题 (16)8-3 编程题 (16)习题9 (18)9-1单选题 (18)9-2填空题 (18)9-3 编程题 (18)习题10 (22)10-1单选题 (22)10-2填空题 (22)10-3 编程题 (22)习题11 (24)11-1单选题 (24)11-2填空题 (24)习题12 (25)12-1单选题 (25)12-2 填空题 (25)实验篇 (26)实验1 熟悉Visual C++6.0可视化集成开发环境 (26)实验2 顺序结构程序设计 (26)实验3 选择结构程序设计 (26)实验4 循环结构程序设计 (26)实验5 函数 (28)实验6 数组 (32)实验7 指针 (33)实验8 结构体和共用体 (35)实验9 文件 (36)实验10 综合编程 (36)模拟试卷(一)参考答案 (37)模拟试卷(二)参考答案 (38)习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5.{, }6./*, */7.顺序结构,选择结构,循环结构8..c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。
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格式(因为内存地址是无符号的整数)。
2.[目的]通过指针访问变量。
[题目内容]已知,int x,y;int *ptr; 而且x=10;ptr=&x;y=*ptr;,运行下列程序,使用运算符*来访问指针所指的值。
[输入]无[输出] x,&x、*&x,&x、*ptr,ptr、y,&*ptr、ptr,&ptr、y,&y。
[提示]地址输出采用%u格式3.[目的]练习指针表达式。
[题目内容]已知,int x,y,a,b;int *ptr1,*ptr2; 而且x=12;y=4;ptr=&x;ptr2=&y;,编写程序,当执行表达式:a=*ptr1**ptr2-6;以及:b=(4*(-*ptr2))/(*ptr1)+10;后,各变量的值分别为多少?[输入]无[输出]各变量的值。
[提示]地址输出采用%u格式4.[目的]指针与数组[题目内容]已知,int *p,sum,i; int x[5]={5,9,6,3,7};,编写程序,使用指针来计算数组中所有元素的总和。
[输入]无[输出]Element Value Addressx[0] 5 1245024x[1] 9 1245028x[2] 6 1245032x[3] 3 1245036x[4] 7 1245040sum=30[提示]关键语句:sum=sum+*p;以及p++;5.[目的]指针与数组[题目内容]编写一个函数,用于对作为参数的数组中的元素求平均值,函数以指针方式进行处理。
指针实验报告常见问题(3篇)

第1篇一、实验背景指针是C语言中非常重要的一个概念,它提供了对内存的直接访问,使得程序能够高效地操作数据。
在指针实验中,同学们可能会遇到各种问题。
本文将对指针实验中常见的几个问题进行总结和分析。
二、常见问题及解答1. 指针概念理解不清问题:如何理解指针的概念?解答:指针是存储变量地址的变量,通过指针可以访问内存中的数据。
简单来说,指针就是一个指向另一个变量的地址的变量。
2. 指针变量的定义和使用问题:如何定义指针变量,并使用它访问数据?解答:定义指针变量需要使用星号(),例如:int p;。
使用指针访问数据时,需要使用取地址符(&)和间接访问符()。
例如,访问指针p指向的变量a的值,可以使用p。
3. 指针与数组的关系问题:指针与数组有何关系?解答:数组名本身就是一个指向数组首元素的指针。
通过数组名可以访问数组元素,也可以通过指针操作数组元素。
4. 指针与函数的关系问题:指针在函数调用中有什么作用?解答:指针在函数调用中可以传递数据的地址,使得函数能够直接修改调用者的数据。
此外,指针还可以用于函数返回多个值。
5. 指针数组与指向数组的指针问题:指针数组与指向数组的指针有何区别?解答:指针数组是一组指针元素的集合,每个元素都存储一个变量的地址。
指向数组的指针是指向整个数组的指针,它存储的是数组的起始地址。
6. 字符指针与字符串操作问题:如何使用字符指针操作字符串?解答:字符指针可以指向字符串中的任意位置。
使用字符指针可以遍历字符串、获取字符串长度、比较字符串等。
7. 动态内存分配与释放问题:如何使用指针进行动态内存分配和释放?解答:使用malloc、calloc、realloc等函数进行动态内存分配,使用free函数释放内存。
8. 指针与指针运算问题:指针可以进行哪些运算?解答:指针可以进行加减运算、比较运算等。
加减运算用于移动指针,比较运算用于判断指针是否指向相同的地址。
9. 指针与递归函数问题:如何在递归函数中使用指针?解答:递归函数中使用指针可以方便地访问和修改调用者的数据。
淮阴工学院c++实验报告实验七 指针与引用

实验七指针与引用一、实验目的和要求1.掌握指针、指针变量、指针常量的基本概念;2.掌握指针与数组、指针与函数的关系及应用。
3.初步掌握引用的概念及简单应用。
二.相关知识点1.指针变量的定义,由数据类型后跟星号,再跟指针变量名组成。
2.引用值是引自所指向的实体。
3.指针与数组都可以作为参数。
三.实验内容1.题目:下面的程序中,调用了findmax()函数,该函数寻找数组中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现findmax()函数。
1.思路分析:2.编程如下:# include < iostream.h >int * findmax(int * array, int size, int * index);void main ( ){int a[10] = {33,91,54,67,82,37,85,63,19,68};int * maxaddr;int idx;maxaddr = findmax(a, sizeof(a)/sizeof( * a), &idx);cout<<idx<<endl<<maxaddr << endl<<a[idx] << endl;}int * findmax(int * array, int size, int * index){ int i,max;int *p;p=array;max=*array;for(i=0;i<size;i++)if(*(array+i)>max){ max=*(array+i);p=array+i;*index=i;}return p;}}3.实验结果:}2.读下列程序,将其改写为传递引用参数;将findmax()函数改写成非递归函数(重新考虑参数个数)。
# include < iostream.h>const size= 10;void findmax(int* a, int n, int i, int * pk); void main ( ){int a[size];int n = 0;cout << "请输入" << size << "个数据:";for(int i=0; i< size; i++)cin >> a[i];findmax(a, size,0, &n);cout <<"最大值为:" << a[n] << endl<<"其下标为:" << n << endl;}void findmax(int * a, int n, int i, int * pk) {if(i<n){if(a[i] >a[*pk])*pk= i;findmax(a,n,i+1,&(*pk));}}1.思路分析:2.编程如下:# include < iostream.h> const size= 10;//void findmax(int* a, int n, int i, int * pk); void findmax(int *a,int n,int i,int &pk); void main ( ){int a[size];int n=0;cout << "请输入" << size << "个数据:"; for(int i=0; i< size; i++)cin >> a[i];// findmax(a, size,0, &n);findmax(a,size,0,n);cout <<"最大值为:" << a[n] << endl<<"其下标为:" << n << endl;}/*void findmax(int * a, int n, int i, int * pk) {if(i<n){if(a[i] >a[*pk])*pk= i;findmax(a,n,i+1,&(*pk));}}*/void findmax(int *a,int n,int i,int &pk) {for(;i<n;i++)if(a[i]>a[pk])pk=i;}3.实验结果3.编制程序,将输入的一行字符加密和解密。
实验七 指针

实验七指针一、目的要求1.掌握指针的定义和使用指针变量;2.学会使用字符串的指针和指向数组的指针变量;3.学会使用指向函数的指针变量;4.按实验内容要求完成全程程序设计后才允许上机。
二、实验内容与步骤设计一个函数,它有三个参数(1)被查找的字符串str;(2)待查找的字符xCh;(3)在字符串str中xCh出现的位置i=0,1,…它的返回值是在str中xCh 出现的次数(若str中无xCh,则返回值=0)三、上机要求1、键入待查的字符xCh;2、键入被查的字符串str;3、调用该函数;4、打印它的返回值和出现的位置;5、允许重复执行,每次以清屏开始(用循环语句控制重复执行)。
四、提示xCh在str出现位置应设计为一整型指针,以便记下0~N个位置(整数)。
#include<stdio.h>#include<conio.h>int run ();void main(){char temp;int j;int (*prun)();temp='Y';while(temp!='N'||temp!='n'){if(temp=='Y'||temp=='y'){prun=run;j=(*prun)();if (j==0){printf("Can Not Find The xCh! j=%d",j);}else{printf("\nj=%d",j);}printf("\nParden>Y/N:");fflush(stdin);temp=getch();}if(temp=='N'||temp=='n')break;if(temp!='Y'&&temp!='y'){printf("Wrong!You can only put Y(N) or y(n)\nPlease put again(Y/N):");fflush(stdin);temp=getch();}}}int run (){char xCh;char str[100];int i, j;char *p;clrscr();printf("xCh=");xCh=getch();printf("%c\nstr=",xCh);gets(str);p=&str[0];i=0;j=0;while(*p){if (*p==xCh){j++;printf("xCh :%d\t",i);}p=p+1;i++;}return j;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七、指针---10071 求平均成绩
1、【问题描述】某班期末考试后要统计本班某门课程得平均成绩、最高成绩与最低成绩,您
得任务就是编程序实现
这一功能。
一个班得人数不超过30人,要求实现求最高成绩,最低成绩与平均成绩得功能用一个
函数完成,并用参数返回最高成绩,最低成绩与平均成绩。
ﻫ【输入形式】一组测试数据,第一行为一个整数N,表示本班有N个人(N<=30),接下来得N行中每行一个整ﻫ数,表示一个人得成绩。
ﻫ【输出形式】输出一行。
该行包含三个数,分别就是:最高成绩、最低成绩与平均成绩。
成绩之间由空格分隔,ﻫ其中平均成
ﻫ8
90
绩为实数,并精确到小数点后两位。
ﻫ【样例输入】5ﻫ
85
3ﻫ76ﻫ
62ﻫ【样例输出】906279、20
【样例说明】某班有5个学生,她们得成绩分别就是90、83、76、85、62。
ﻫ该班得最高成绩、最低成绩与平均成绩分别为90、62以及79、20。
ﻫ【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include<stdio、h>
#define MAX 30
int max_all(int score[]);
intmin_all(int score[]);
int max(int a,int b);
int min(int a,int b);
float average(int score[]);
int i,number;
int main(void)
{
ﻩint score[MAX];
scanf("%d",&number);
for(i=0;i<number;i++)
ﻩscanf("%d",&score[i]);
ﻩprintf("%d %d%、2f",max_all(score),min_all(score),average(score));
return0;
}
int max_all(int*score)//求最高成绩
{
ﻩint max_number=score[0];
ﻩfor(i=1;i<number;i++)
ﻩﻩmax_number=max(max_number,score[i]);
return max_number;
}
int min_all(intscore[])//求最低成绩
{
ﻩint min_number=score[0];
ﻩfor(i=1;i<number;i++)
ﻩﻩmin_number=min(min_number,score[i]);
ﻩreturnmin_number;
}
int max(int a,intb)
{
ﻩreturn a>b?a:b;
}
int min(inta,int b)
{
return a<b?a:b;
}
float average(int score[]) //求平均成绩
{
int sum=0;
for(i=0;i<number;i++)
ﻩsum+=score[i];
return sum*1、0/number;
}
实验七、指针---10072 字符串排序
2、【问题描述】按字典顺序输出某班所有人得名单。
ﻫ【输入形式】一组测试数据,第一行
为一个整数N,表示本班有N个人(N<=30),接下来得N行中每行一个人名
(人名均由小写字母组成,并且名字长度小于20)。
ﻫ【输出形式】按字典顺序排列得人员名单。
每个人名占一行。
【样例输入】5ﻫzhangsanﻫliyangﻫ wangxiao
liqingﻫwuhui
【样例输出】liqingﻫ liyangﻫwangxiao
wuhuiﻫzhangsan
【样例说明】某班有5个人,名字为zhangsan、liyang、wangxiao、liqing、
wuhui,ﻫ按字典得排列顺序为:liqing、liyang、wangxiao、wuhui、zhangsan。
【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include <stdio、h>
#include<string、h>
#define MAX_NUMBER 30
#defineMAX_SIZE20
int number,i;
void sort(char name[MAX_NUMBER][MAX_SIZE]);
voidsa[],char b[]);
intmain(void)
{
ﻩchar name[MAX_NUMBER][MAX_SIZE];
scanf("%d",&number);
ﻩgetchar();
ﻩfor(i=0;i<number;i++)
ﻩﻩscanf("%s",name[i]);
sort(name);
ﻩfor(i=0;i<number;i++)
ﻩputs(name[i]);
return0;
}
void sort(char name[MAX_NUMBER][MAX_SIZE])
{
int j;
ﻩfor(j=0;j<number-1;j++)
ﻩfor(i=0;i<number-j-1;i++)
ﻩif(strcmp(name[i],name[i+1])>0)
ﻩﻩs[i],name[i+1]);
}
voidsa[],char b[])
{
char temp[MAX_SIZE];
strcpy(temp,a);
strcpy(a,b);
ﻩstrcpy(b,temp);
}
实验七、指针---10073字符串比较
3、【问题描述】按字符串比较过程对给定得两个字符串进行比较,若相等则结果为0,若不等则结果为对应不等
字符得差。
按要求实现对给定字符串得比较。
要求程序中用函数实现两个字符串得比较。
int stringcmp(char *str1 ,char *str2 )ﻫ【输入形式】第一行为一个整数N,表示测试数据得组数,接下来得N行中每行包含两个字符串,字符串之间由ﻫ空格分隔。
ﻫ【输出形式】输出共N行,每行为对应输入一行得两个字符串得比较结果。
ﻫ【样例输入】3ﻫHa ppyHelpﻫ Help Help
HelpHappyﻫ【样例输出】- 4
0ﻫ 4
【样例说明】测试3组字符串。
第1组为“Happy”与"Help",第2组为“Help”与“Help”,第3组为“Help”与ﻫ“Happy”,比较结果分别为-4、0与4。
【评分标准】本题共2个测试点,每个测试点1、0分,共2、0分。
#include<stdio、h>
#include <string、h>
intstringcmp(char *str1,char *str2);
intmain(void)
{
ﻩintnumber,i,cmp[100];
ﻩchar str1[100],str2[100];
scanf("%d",&number);
for(i=0;i<number;i++)
ﻩ{
ﻩscanf("%s%s",str1,str2);
cmp[i]=stringcmp(str1,str2);
ﻩ}
ﻩfor(i=0;i<number;i++)
ﻩprintf("%d\n",cmp[i]);
return0;
}
int stringcmp(char *str1,char *str2)
{
ﻩint j;
for(j=0;str1[j]==str2[j]&&str1[j]!='\0';j++)ﻩcontinue;
if((str1[j-1]=='\0')&&(str1[j]=='\0'))
ﻩreturn0;
ﻩelse
ﻩﻩreturn str1[j]-str2[j];
}。