版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机软件基础实验指导主编徐显秋重庆科技学院计算机系实验一 C程序的运行环境、运行方法和数据类型、运算符的简单输入输出一、实验目的I.熟悉使用计算机系统,c程序运行环境.熟悉并掌握C程序的编辑、编译、连接和运行.掌握C语言的数据类型以及各种数据的正确输入、输出.学会编写和运行简单的C语言程序.二、实验内容.进入C编译集成环境,熟悉集成环境的界面和菜单的使用方法.输入并运行教材第2页的程序. ttinclude void main () int a, b, max;scanf (;if (ab)max=a;elsemax=b;printf ( max二%dn” , max);检查输入的程序有无错
2、误,对源程序进行编译,观察屏幕上显示的编译信息,无错 后再进行下一步连接.运行程序,观察分析运行结果,该程序的功能是:.输入以下程序.# include void main () int a, b;float x, y;char cl,c2;scanf (z/%d, %d, &a, &b);scanf (/,%f,&x, &y);scanf (c, %c”, &cl, &c2);printf (a=%d,b=%dn, a, b);printf (z,a=%c, b=%cn,/, a, b);printf (x=%f, y=%en, x, y);printf (z/cl=%c, c2=%cn,
3、cl, c2);printf (,zcl=%d, c2=%dn,/, cl, c2);编译、连接后,运行时输入以下数据.9798运行结果:三、完成实验报告实验完成后应整理并写出实验报告.报告内容应包括:题目、实验目的、程序流程图、 程序清单、运行结果、功能分析、心得与体会.(其中“程序流程图”和“心得与体会”为 选做)实验五线性表的基本操作一、实验目的.掌握线性表的基本运算.掌握顺序存储的概念,学会对顺序存储数据结构进行操作.加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力.二、实验内容要求先编写好教材142页习题六中各小题的程序,然后上机调试、运行,得出结果.长度为n的线性表A采
4、用顺序存储结构,请写一算法,找出该线性表中值最小的数 据元素.分析与提示:由于线性表A采用顺序存储结构,表中数据节点是存放在一段连续的空间中,所以在算法中 按一位数组处理比拟方便. 参考算法(参照教材类C语言描述):# define M 100/*设顺序表最大长度为M*/ int data M; int n; int data M; int n;struct/*设节点数据类型为整型*/*n代表线性表表长*/ A;/*A代表线性表*/int find (A , n) /*Ai替代 A datai, n 替代 A n*/ int i,min;min=A0;for (i=0;i=n-l;i+) if
5、 ( Aimin) min=Ai;)printf ( min二%dn” , min); )参考程序:#include /*设顺序表最大长度为M*/*设节点数据类型为整型*/An代表线性表表长*/min=ptr-datai;# define M 100 struct list int dataM;int n;);int find(list *ptr) int i,min;min=ptr-data0;for (i=0;in;i+) if (ptr-datai=0;i一) if (Aiitem) Ai+l=Ai; elseAi+l=item; n+; ) 参考程序: ttinclude # defi
6、ne M 100/*设顺序表最大长度为M*/struct list int dataM;/*设节点数据类型为整型*/int n;/*n代表线性表表长*/ ); void insert (list *ptr, int item) ( int i; if (ptr-n=M) printf (表满,无法插入); elseif (ptr-n=O)/*表空,直接插入*/ptr-data0=item;else for (i=ptr-n-l;i=0;i-) if (ptr-dataiitem) ptr-datai+l=ptr-datai;else break;)ptr-datai+l=item;)ptr-n
7、=ptr-n+l;/*表长加 1*/)return;)void main()(int i,iteml;struct list A=1, 3, 9, 12, 45, 78, 6 ; /*线性表初始化*/scanf (d,;/*输入要插入的值*/insert (&A, iteml) ;/*调用 insert ()函数插入值*/for (i=0; iA. n; i+) /*显示插入操作后的线性表*/printf(dt,A. datai);3.长度为n的线性表A采用顺序存储结构,并且元素按值的大小非递减排列,写一算 法,删除该线性表中值相同的多余元素(该算法完成后,线性表中数据元素严格按值递增排 列.
8、参考算法(参照教材类C语言描述):# define M 100structint dataM;int n;A;void delete (A , n)int i, j, k;for i=0;i=n-l;i+for (j=i+1; j=nT, j+) if (Ai=AjJ)for (k=j;k=n-l;k+)Ak=Ak+l;n一;参考程序:# include # define M 100# define M 100/*设顺序表最大长度为M*/struct list int dataM;/*设节点数据类型为整型*/int n;/*n代表线性表表长*/);void deleteitem (list *
9、ptr) int i, j, k;for (i=0;in-l;i+)for (j=i+l;jn-l;j+)(if (ptr-datai=ptr-dataj) for (k=j;kn-l;k+) ptr-datak=ptr-datak+l ; ptr-n=ptr-n-l;/*删除相同元素(相同元素后的元素依次向前移动)后,需从新的ptr-dataj开始判断*/j;return;)void main ()(int i;struct list A=1,3, 3, 3,45, 78, 78, 90, 8); /*线性表初始化*/ deleteitem(&A) ;/*调用 deleteitem()函数删
10、除相同元素*/ for (i=0 ;inext!=NULL) p=p-next;n+;return (n);)参考程序:ttinclude ttinclude ttinclude struct nodeint data;struct node *next;);int length (struct node *p)int n=0;/*用n返回线性表长度*/while (p-next!二NULL) p=p-next;n+; return (n); ); void main () (/*链表初始化,产生具有5个节点的链表,list为链表头节点指针*/ int i,len=0;struct node*
11、list, *ptrl, *ptr2;list=(struct node*) malloc(sizeof (struct node) ;/*申请一个表头节点list*/list-next=NULL;ptrl=list;/*指针perl指向头节点*/for (i=0;idata=(rand()%100+l);ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;/*移动perl始终指向尾节点,为下一个新增节点插入作准备*/)/*求链表list的长度*/len=length(list);printf (链表的长度 length=%dn,len);.非空线性链表第
12、一个链节点的指针为list,请写一算法,删除线性链表的第i个节 点.参考算法(参照教材类C语言描述):struct node int data;struct node*next;*p, *q, *list;struct node*del (list, i) int j;p=list;for(j=0;jnext;q=p-next;p-next=p-next-next;free (q);)参考程序:include include include struct node(int data;struct node *next;;void deletenode (struct node *p, int
13、i)(/*查找第i个节点*/int j;struct node *front=p;for(j=0;jnext=NULL)break;else(front=p;p=p-next;)if (j=i)/*查找成功,删除第i个节点*/(front-next =p-next;free (p);return;void main()|/*链表初始化,产生具有5个节点的链表Jist为链表头节点指针*/ int i;struct node*ptrl, *ptr2;list=(struct node*) malloc(sizeof(struct node);list-next=NULL;ptrl=list;sra
14、nd( (unsigned)time(NULL);for (i=0;idata=(rand()%100+1);ptr2-next二NULL;ptrl-next=ptr2;ptrl=ptrl-next; /*移动ptrl指向新节点,为下一个新节点的插入坐准备*/)ptrl=list;while (ptrl-next!=NULL)(ptrl=ptrl-next;printf (dt, ptrl-data);)printf(n);scanf (%d, &i) ;/*输入要删除的节点*/deletenode (list, i);printf (n);ptrl=list;while(ptrl-next!
15、=NULL)(ptrl=ptrl-next;printf(dt, ptrl-data);).非空线性链表第一个链节点的指针为list,请写一算法,找出链表中数据域值最小 的那个链节点,并将其链接到链表的最前面.参考算法(参照教材类C语言描述):struct node int data;struct node *next;*p, *q, *s, *list;struct node *find(list) int i;p= list;min= p-data;while (p!=NULL)p= p-next;if (p-datanext;q-next=q-next-next;s-next=list-
16、next;list-next=s;)参考程序:ttinclude ttinclude ttinclude struct node (int data;struct node *next;;void FindAndExchange (struct node* p) struct node *head=p, *min, *minfront,*front; if (head-next=NULL) return;/*查找最小值节点*/ minfront二front=p; min=p-next ; p=p-next ;while(p-next !=NULL) (front=p;/*随p向表尾移动并始终保
17、存p节点的前一个节点指针*/p=p-next ;if(min-data p-data )minfront=front;Aminfront为指向最小节点的前一个节点指针*/min=p;/*将最小值节点放到链表的最前面*/ minfront-next =min-next ;min-next =head-next ; head-next =min;void main()(/*链表初始化,产生具有5个节点的链表,list为链表头节点指针*/ int i;struct node *list, *ptr2;list=(struct node*) malloc(sizeof(struct node);lis
18、t-next=NULL;ptrl=list;srand( (unsigned)time(NULL);for (i=0;idata=(rand()%100+l);ptr2-next二NULL;ptrl-next=ptr2; ptrl=ptrl-next;)ptrl=list;while (ptrl-next!=NULL) ptrl=ptrl-next;printf (dt, ptrl-data);)printf (n);FindAndExchange(list);ptrl=list;while (ptrl-next!=NULL) ptrl=ptrl-next;printf (%dt, ptrl-
19、data);).设不带头节点的循环链表第一个节点指针为list,请写一个逆置该循环链表的算法. 参考算法:struct node int data;struct node *next; *p, *list, *rear,*front;struct node*inversion(list) rear-next=list;front=list;p= front-next;while (p!=list)(rear=p-next;p-next=front; front=p;p=rear;) list-next=front;)参考程序:include include include struct nod
20、e (int data;struct node *next;);/*链表倒置函数*/struct node *inversion (struct node * head) (struct node *front, *p,;front=head; p=front-next;while(p!=head)(rear=p-next;p-next=front;front=p;p=rear;)head-next=front; return front;)void main()/*链表初始化,产生具有5个节点的循环链表Jist为链表头节点指针*/观察结果,分析原因,得出结论.总结出数据输入、输出的规律和容易
21、出错的地方.(数值的默认分隔符可以是回车或空格,如果scanf语句中数值的输入格式是逗号 分隔,数值输入时就要用逗号隔开.).尝试编辑一个简单的C语言程序,并上机调试、运行,得出结果.用C语言程序编写教材11页习题中二、6题,输出表达式3*9%2+9%2*5的值. 程序: 运行结果:三、完成实验报告实验完成后应整理并写出实验报告.报告内容应包括:题目、实验目的、程序流程图、 程序清单、运行结果、功能分析、心得与体会.(其中“程序流程图”和“心得与体会”为 选做)实验二顺序结构、选择结构和循环结构的C程序设计一、实验目的I.掌握在c语言中,正确使用赋值语句,正确使用逻辑运算符和逻辑表达式.熟练掌
22、握if语句(包括if语句的嵌套),多分支选择switch语句.熟练掌握while语句、dowhile语句和for语句实现循环的方法.在程序设计中掌握一些简单常用的算法.二、实验内容要求先编写好教材42页习题五中各小题的程序,然后上机调试、运行,得出结果.1.从键盘输入假设干个字符,分别统计其中字母(区分大、小写)、数字字符和其他字符的个 数.分析:利用字符的ASCH值不同,分别设置统计不同字符个数的条件,假设从键盘输入一个 字符给C,当A,WCW Z,时,C为大写字母;当a WCW z,时,C为小写字母; 当O WCW 9时,C为数字字符;其余为其他字符.注意C语言中逻辑运算符和逻辑表 达式的
23、正确使用.参考程序:# include void main() (char c;int nl, n2, n3, n4;nl=n2=n3=n4=0;/*要进行加、减运算的变量赋0,乘、除的赋1*/printf (请输入假设干字符:);while (c=getchar( )!=n) if (c=A & c二Z) nl+;else if (c=,a9 & c=O & cnext=NULL;srand( (unsigned)time(NULL);list-data=(rand()%100+l);ptrl=list;for (i=0;idata=(rand()%100+1);ptr2-next=NULL
24、;ptrl-next=ptr2;ptrl=ptrl-next; )ptrl-next=list;/*尾节点指向头节点,形成循环链表*/*显示链表*/ ptrl=list;printf (线dt, ptrl-data); while(ptrl-next !=list) ( ptrl=ptrl-next ;printf (dt, ptrl-data);)printf(nn);/*倒置*/list=inversion (list);/*再次显示链表*/ ptrl=list;printf(dt, ptrl-data); while(ptrl-next !=list) ptrl=ptrl-next ;p
25、rintf(%dt, ptrl-data);printf(nn);8.非空线性链表第一个链节点的指针为list,请写一算法,将该链表中数据信息为 iteml的所有节点的数据信息修改为item2.算法:心得与体会:三、完成实验报告实验完成后应整理并写出实验报告.报告内容应包括:题目、实验目的、程序流程图、程序清单、运行结果、功能分析、心得与体会.(其中“程序流程图”和“心得与体会”为 选做)实验六常用的排序方法 一、实验目的.掌握常用的排序方法和算法,直接插入排序、冒泡排序、直接选择排序.理解各种方法的特点,并能灵活应用.加深对排序的理解,逐步培养解决实际问题的编程能力.二、实验内容要求先编写好
26、教材208页习题五中各小题的程序,然后上机调试、运行,得出结果.1.两个单链表中的元素递增有序,试写一算法将两个有序表合并成一个递增有序表.算 法应利用原有的链表节点空间.参考程序:# include # include struct node int data; struct node *next;);void FindAndlnserter(struct node *listl,struct node *list2) (struct node *ptrl, *front, *ptr2;front=listl;ptrl=front-next ;while(list2-next !=NULL)
27、( ptr2=list2-next ; while (ptri!=NULL)(if (ptrl-dataptr2-data) break;front=ptrl;ptrl=ptrl-next ;if (ptrl二NULL) front-next =list2-next ;break;) else list2-next =ptr2-next ; front-next=ptr2; ptr2-next =ptrl; front=front-next ;void main ()/*建立第一个链表并初始化,headl为链表头节点指针*/ int i,lenl=0,len2=0;struct node *h
28、eadl, *head2, *ptrl, *ptr2;headl=(struct node*) malloc(sizeof(struct node);headl-next=NULL;ptrl=headl;printf (请输入第一个链表节点个数:);scanf(%d, &lenl);for(i=0;idata);ptr2-next二NULL;ptrl-next=ptr2;ptrl=ptrl-next;)/*建立第一个链表并初始化,head2为链表头节点指针*/head2= (struct node*) malloc(sizeof(struct node);head2-next=NULL;ptr
29、l=head2;printf (请输入第二个链表节点个数:);scanf(d,&len2);for(i=0;idata);ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;)/*显示两个链表*/printf (n 链表 1 如下:n);ptrl=headl;while (ptrl-next!=NULL)ptrl=ptrl-next ;printf (/,%dt,z, ptrl-data ); printf Cn 链表 2 如下:n); ptrl=head2;while(ptrl-next!=NULL) ( ptrl=ptrl-next ;printf (
30、z,%dt,z, ptrl-data );)FindAndlnserter(headl, head2);/*显示合并后的链表*/printf (n合并后的链表如下:n); ptrl=headl;while (ptrl-next!二NULL) ( ptrl=ptrl-next ;printf (z,%dt,z, ptrl-data );) printf ( n” ); )2.一维数组a10中存放了 09共10个互不相同的无序数字,试编一算法,将它们对 号入座(如,a0中存放0、al中存放1等).要求算法的时间复杂度为0(n).参考程序:ftinclude void main () int i,
31、j, t;int a10 = 2, 5, 7,9, 3, 6, 4, 8, 1,0);for (i=0;i=9;i+) printf(%dt, ai); printf (n);/*对数组a排序(冒泡排序法)*/ for (i=0;i9;i+)(for(j=0;jaj+l) (t=aj;aj=aj+l;aj+l=t; )for (i=0;i=9;i+) printf(dt,ai) ; printf(n);3.序列(3 5,78,12,26,90,41,66,5 8),请写出对该序列分别采 用插入排序、选择排序、冒泡排序方法进行升序排序的各趟结果,并分析它们的时间复杂度.插入排序各趟结果:插入排序
32、时间复杂度:选择排序各趟结果:选择排序时间复杂度:冒泡排序各趟结果:冒泡排序时间复杂度:三、完成实验报告实验完成后应整理并写出实验报告.报告内容应包括:题目、实验目的、程序流程图、 程序清单、运行结果、功能分析、心得与体会.(其中“程序流程图”和“心得与体会”为 选做)参考答案实验一.求出a、b中大的数.尝试编辑一个简单的C语言程序,并上机调试、运行,得出结果.用C语言程序编写教材11页习题中二、6题,输出表达式3*9%2+9%2*5的值. 参考程序:# include main () float x;x=3 *9%2+9%2*5;printf ( x=%fn,x );) 实验二.编程求解以下
33、函数:x + 8当100H 寸Y= -x + 8当x10时0尤为其他值时参考程序:# include void main () int x,y;printf ( x=”);scanf ( “%d,&x);if (x100) y=x+8;else if (x-10) y=一x+8;elsey=0;printf ( x=%d, y=%dn”,x, y);实验三5.有一行字符,要求将每个单词中的第一个字符改写成大写字母(如果原来已是大写字 母,那么不变).参考程序:4include ttinclude void main ()(int i;char s 100;printf (请输入一行字符:);g
34、ets(s);for (i=0;si!= 0 ;i+)(if (s0=,& s0=z)s0=s0-32;if (si-l=,& si=a & si二z)si=si-32;)puts (s);实验四4.编写一个程序,主函数输入年份,输出是否闰年的结果,调用fun函数进行判断,假设参 数year为闰年,那么返回1,否那么返回0.参考程序:# include int fun(int y)(if(y%4=0 & y%100!=0)|(y%400=0)return 1;elsereturn 0;)void main () int x,year;printf (请输入年份:);scanf (d, &yea
35、r);x=fun(year);if (x=l)printf (,z%d 年是闰年. n,year);elseprintf (/z%d 年不是闰年.n, year);实验五8.非空线性链表第一个链节点的指针为list,请写一算法,将该链表中数据信息为 iteml的所有节点的数据信息修改为item2.参考算法: struct node char data;struct node *next;*p, *list;struct node *replace(list, item2) int i;char iteml, item2; p= list-next;while (p!=NULL) p= p-ne
36、xt;if (p-data=iteml) p-data=item2;参考程序:# include # include # include struct node (int data;struct node *next;);/*查找并修改函数(针对非循环链表)*/void FindAndModify(struct node *head, int iteml, int item2) (struct node *p=head; do(if(p-data =iteml) p-data =item2; p=p-next ;while(p!=NULL);)void main ()(/*链表初始化,产生具有
37、5个节点的非循环链表Jist为链表头节点指针*/ int i,num=0, iteml, item2;struct node *list,*ptr2;list=(struct node*) malloc(sizeof(struct node); list-next=NULL;printf (请输入节点数据值(整数);scanf(d, &num);list-data=num;ptrl=list;for(i=0;idata=num;ptr2-next=NULL;ptrl-next=ptr2;ptrl=ptrl-next;/*显示链表*/ ptrl=list;printf(dt, ptrl-data
38、);while(ptrl-next !=NULL)( ptrl=ptrl-next ; printf(%dt, ptrl-data);printf(nn);/* 将 iteml 修改为 item2*/ printf (请输入 iteml); scanf(d, &iteml);printf (请输入 item2z/);scanf(d,&item2);FindAndModify(list, iteml, item2);/*再次显示链表*/ ptrl=list;printf (,/%dt,/, ptrl-data);while(ptrl-next !=NULL) ( ptrl=ptrl-next ;
39、printf (dt,ptrl-data);printf (nn);实验六3.序列(3 5,78,12,26,90,41,66,5 8),请写出对该序列分别 采用插入排序、选择排序、冒泡排序方法进行升序排序的各趟结果,并分析它们的时间复杂 度.插入排序各趟结果:R:0R2R3R4R:5R6R7R8初始3578122690416658第1趟783578122690416658第2趟121235782690416658第3趟261226357890416658第4趟901226357890416658第5趟411226354178906658第6趟661226354166789058第7趟5812
40、26354158667890时间复杂度:0(1?)选择排序各趟结果:初始3578122690416658第1趟1278352690416658第2趟1226357890416658第3趟1226357890416658第4趟1226354190786658第5趟1226354158786690第6趟1226354158667890第7趟1226354158667890时间复杂度:0(/)冒泡排序各趟结果:初始3578122690416658第1趟3512267841665890第2趟1226354166587890第3趟1226354158667890第4趟1226354158667890时间
41、复杂度:0(r)2).输入a、b、c、d四个整数,求最小值Min和最大值Max.分析与提示:参照书上26页例2-12求四个数中最大数的解题思路,同样可以求出四个数中的最小 数.先将a赋给变量Min,然后分别用其他三个数和Min比拟,假设某数小于Min,就把这个数赋 给Min(替换Min的值),比拟完成后,Min中存放的就是a、b、c、d四个数中的最小数.参考程序:ttinclude void main () int a, b, c, d, Min, Max;printf (请输入4个整数:);scanf (d, %d, %d, %d, &a, &b, &c, &d);Min=a;if(bMin
42、) Min=b;if(cMin) Min=c;if(dMax) Max=b;if(cMax) Max二c;if(dMax) Max=d;printf (z,Min=%d, Max=%dnz,, Min, Max);).银行整存整取存款不同期限的月息利率分别为:0.63%期限一年0.66%期限两年月息利率二 0.69%期限三年0.75%期限五年0.84%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计. 提示:使用多分支switch语句编写程序.参考程序:ttinclude void main () double m, 1; Afloat有效数字67位,double有效数
43、字1516位*/ int y;printf (请输入本金和存款期限:);scanf %d,&m, &y) ;/*double 型输入用1建/ switch (y)(l=m*0. 63/100;break;l=m*0. 66/100;break;case 3:l=m*0. 69/100;break;case 4:l=m*0. 75/100;break;case 5: l=m*O. 84/100;break;default:printf (输入错误n);)printf (lfn,m+1) ;double 型输出可用lf、%e %g4编程输出如以下图形:1 xjsxyxx?sxTs参考程序:# in
44、clude void main () (int i, j, k;for (i=l;i=4;i+) (for (j=l;j=10-i;j+)printf ( );/*注意空格的表示*/for (k=1;k=2*i+3;k+)printf (*);printf (n);5.编程求解以下函数:x + 8当x100U 寸Y= -x + 8当x10B寸0 x为其他值时分析与讨论:程序:运行结果:三、完成实验报告实验完成后应整理并写出实验报告,报告内容应包括:题目、实验目的、程序流程图、 程序清单、运行结果、功能分析、心得与体会.(其中“程序流程图”和“心得与体会”为 选做)实验三 C程序设计中数组的应用
45、一、实验目的.掌握一维数组和二维数组的定义、赋值和输入、输出的方法.掌握字符数组和字符串的使用方法.掌握一些与数组有关的常用算法.二、实验内容要求先编写好教材66页习题六中各小题的程序,然后上机调试、运行,得出结果.L在具有10个数的递增序列中加入一个x ( x由键盘输入),使结果仍然有序.分析:假设a10中存放着10个递增序列的数,由键盘输入一个x, x需要和a10中的数 依次比拟大小,寻找适当的位置插入,插入后原数组中10个数变为11个数,仍然递增,注意 开始需预留数组空间.参考程序:ttinclude void main () int all, i,x;printf (请输入10个递增序
46、列的数:);for (i=0;ix) ai + l=ai;else ai+l=x;break;)printf (x插入后的数组序列:);for (i=0;i=10;i+)printf r%ldt/z,ai);/*” t :将当前位置移到下一个水平制表位(输出)*/printf (n);.从键盘输入字符串a和字符串b,并在a串中的最小元素后面插入字符串b.参考程序:ttinclude ftinclude void main () (char a100, b50, c100, min;/*数组大小的设置要恰当*/int i, k;printf (请输入字符串a: );gets(a);printf
47、(请输入字符串b:);gets(b);min=a0;for (i=0;ai!=0 ;i+) if (aimin) min=ai ; /*min中存放新的更小值,参与后面的循环,寻找最小值*/ k=i;) for (i=0;ai+k+l!=0 ;i+) ci=ai+k+l;ci+l= 0 ;/*此语句是在c串结尾加“ 0,也可移到循环体外*/)for (i=0;bi!=0 ;i+) ai+k+l=bi;ai+k+2= W ; /*此语句是在a串结尾加“ 0,也可在循环体外用ai=0实现*/)strcat (a,c); puts(a);).编写一个程序,将两个字符串si和s2比拟,如果sls2,输
48、出一正数;sl=s2,输出 0;sls2,输出一个负数.不要用strcmp函数.两个字符串用gets函数读入.输出的正数或负 数的绝对值应是相比拟的两个字符串的相应字符的ASCH码的差值.分析:两个字符串的比拟方法:两个字符串自左向右逐个字符比拟(按ASCII码值大小),直到出现 不同的字符或遇到0为止.参考程序:ttinclude ttinclude ttinclude void main () char sl100, s2100;int i, k;printf(请输入字符串sl:);gets (si);printf (请输入字符串s2:);gets(s2);for(i=0;sii!=0 |
49、s2i!=0;i+) k=sli-s2i;if(k=0) continue;else break; if(k0)printf (sls2, %dn,k);if (k=0)printf (sl=s2, %dn,k);if(k0)printf (z/sls2, %dn,k);.编写一个程序,将字符串s2中的全部字符拷贝到字符数组si中.不用strcpy函数,复 制时(T也要复制过去J 0,后面的字符不复制.参考程序:#include ttinclude void main ()(int i, j;char si 100,s250;printf(请输入字符串sl:);gets (si);printf (请输入字符串s2:);gets (s2);for (i=0; si i != 0 ; i+);for (j=0; s2j != 0 ; j+)sii=s2j;i+;sli=s2j ;/*也可用语句0实现*/puts (si); ).有一行字符,要求将每个单词中的第一个字符改写成大写字母(如果原来已是大写字母, 那么不变). 分析与提示:首先把一行字符串放在一个字符串数组ci中,要将每个单词中的第 一个字符改写成大写字母,考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学一年级加减法口算100道A4直接打印
- 小学五年级数学上期小数点乘除法计算习题
- 中国中学生心理健康量表共60项-分为10个因子-各因子所包
- 企业财务报表附注
- 《华为管理之道教材》课件
- 电火焊工必知必会知识点
- 食品行业食品安全检测总结
- 健身行业的个人发展规划计划
- 印刷行业印刷排版培训总结
- 纺织业人事工作总结
- 压缩空气气体管道吹扫试压专项方案
- 2021年海南省公务员考试《行测》真题和答案解析
- 餐厅创新改革方案课件
- 《社会历史的决定性基础》共171张高中语文选择性必修中册
- 铁岭卫生职业学院招聘考试题库2024
- 铁路信号基础信号机课件
- 广东省珠海市斗门区2023-2024学年七年级上学期期末英语试卷+
- 《中医基础理论讲座》课件
- 江西省九江市都昌县2023-2024学年八年级上学期1月期末历史试题(含答案)
- 2023年医院麻醉科手术数量报告
- 蛋鸡预混料培训课件
评论
0/150
提交评论