c语言上机练习题(1) _828701982

上传人:第*** 文档编号:34011260 上传时间:2018-02-20 格式:DOCX 页数:19 大小:56.44KB
返回 下载 相关 举报
c语言上机练习题(1) _828701982_第1页
第1页 / 共19页
c语言上机练习题(1) _828701982_第2页
第2页 / 共19页
c语言上机练习题(1) _828701982_第3页
第3页 / 共19页
c语言上机练习题(1) _828701982_第4页
第4页 / 共19页
c语言上机练习题(1) _828701982_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《c语言上机练习题(1) _828701982》由会员分享,可在线阅读,更多相关《c语言上机练习题(1) _828701982(19页珍藏版)》请在金锄头文库上搜索。

1、C 语言上机考试练习题(1)说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求:(1)在主函数中输入两个字符串,调用子函数 cmpsubstr()判断,并在主函数输出结果。(2)子函数的返回值为-1 表示未找到,否则返回子串的位置(起始下标)。#include#includevoid main()int cmpsub

2、str(char *s1,char *s2);char str120,str250;char *s1=str1,*s2=str2;gets(str1);gets(str2);printf(%d,cmpsubstr(s1,s2);int cmpsubstr(char *s1,char *s2)int i,d,a=0,situation=0;d=strlen(s1);for(i=0;*(s2+i)!=0;i+)if(*(s1+a)=*(s2+i)a+;if(a=d)situation=1;break;else a=0;if(situation=0)return(-1);else return(i-

3、d+2);2、输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组 a 中。例如,123 放在 a0中,456 放在 a1中等等,统计共有多少个整数,并输出这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。(2)子函数的返回值为整数的个数。#include#includevoid main()int search(char *str,int *sum);char str100;int d,sum20,i;gets(str);d=search(str,sum);for(i=0;i=0

4、&*(str+i)=0&*(str+i-1)=03、编写一个主函数和子函数 tran(x, r),要求是:函数 tran(x, r)将十进制整数 x 转换成 r 进制数 y(r 在之间),x 和 r 的值由主调函数(即主函数)传入,y 的值需要返回主调函数进行输出。要求:y 的值利用字符数组进行存储,数组的每一个元素存放 y 的一位数字字符。#include#include#include#includevoid main()char* tran(int x,int r);int x,r;char *y;printf(Please input x scanf(%d,%d,y=tran(x,r)

5、;puts(y);char* tran(int x,int r)int len1,len2,i,t;char *y1,*y2;len1=2+(int)log(double)x)/log(double)r);y1=(char*)malloc(len1*sizeof(char);for(i=0;x!=0;i+)t=x%r;if(t#include#include#includevoid main()int invertion(char ch1, char ch2);int len;char *ch1,*ch2;ch1=(char*)malloc(100);ch2=(char*)malloc(100

6、);gets(ch1);len=invertion(ch1,ch2);puts(ch2);printf(%dn,len);int invertion(char ch1, char ch2)int i,j,t=0,len1,len,sum=0;char *str;str=(char*)malloc(10);for(i=0,len=0;*(ch1+i)!=0;i+,len+);len1=len;for(i=0;*(ch1+i)!=0;i+)if(*(ch1+i)!= )*(str+t)=*(ch1+i); /将 ch1 的单词转移到 str 上/t+;elsesum+; /单词个数加一/*(ch2

7、+len1)= ;len1=len1-t;for(j=0;j#include#include#includevoid main()char *maxlong(char *str);char str100,*str0;gets(str);str0=maxlong(str);puts(str0);char *maxlong(char *str)char *word,*str0;int t=0,i,max=0;for(i=0;*(str+i)!=0;i+) if(*(str+i)!= )t+;/t 为单词字母个数/elseif(tmax)/比较 t 与之前最大的单词个数的大小/word=(str+i

8、-t);max=t;t=0;/t 初始化/if(tmax)/最后一个单词在循环中没有比较/word=(str+i-t);max=t;str0=(char*)malloc(max+1);for(i=0;i#include#include#includevoid main()int *input(int m,int n);void print(int*p,int m,int n);int ad(int *p,int m,int n);int *p,m,n;while(!ad(p,m,n)printf(请输入行数:m,列数:n.n);m=n=7;p=input(m,n);print(p,m,n);i

9、nt ad(int *p,int m,int n)int i,j,k,s,max,l,time=0;for(i=0;i*(*(p+k)+l)s=1;break;if(s=0)printf(NO.%d row NO.%d line:%dn,i+1,l+1,*(*(p+i)+l);time+;return(time);int *input(int m,int n) /建造一个 m 行,n 列二维数组/int *p;int i,j;p=(int*)malloc(m*sizeof(int*);for(i=0;i#include#includevoid main()int sum(int *a,int

10、n);int *input(int n);int max(int *a,int n);int *s,n=10;s=input(n);printf(%5d,%5dn,sum(s,n),max(s,n);int *input(int n)int *a,i;a=(int *)malloc(sizeof(int)*n);srand(time(NULL);for(i=0;i*(a+n-1)return(m);else return(*(a+n-1);int sum(int *a,int n)if(n=1)return(*a);else return(*(a+n-1)+sum(a,n-1);9、编写一个递

11、归程序,利用折半查找法在一个升序数组中查找一个数,如果查找成功,则输出它是第几个数,否则输出“No Find.”。#include#include#includevoid main()int *input(int n);void print(int *s,int n);void sort(int*s,int n);int search(int *s,int n,int key);int *s,n=10,key,d;s=input(n);print(s,n);sort(s,n);print(s,n);scanf(%d,d=search(s,n,key);if(d!=0)printf(The ke

12、y is at NO.%d.n,d);else printf(NO FINDn);int search(int *s,int n,int key)int m,d;if(n=1)if(*s=key)return(1);else return(0);else m=n/2;if(d=search(s,m,key)return(d);else if(d=search(s+m,n-m,key)return(d+m);else return(0);int *input(int n)int *a,i;a=(int *)malloc(sizeof(int)*n);srand(time(NULL);for(i=

13、0;i*(s+j+1)temp=*(s+j);*(s+j)=*(s+j+1);*(s+j+1)=temp;10、用递归法实现:对于一个正整数 n(n 是一个不超过 8 位的任意正整数,由键盘输入),(1)顺序输出它的各位数;(2)判断它是一个几位数。如输入:56439;则输出:5,6,4,3,95要求:不允许使用数组;在递归函数中顺序输出该数的各位数,该数的位数则必须在主函数中输出。#include#include#includevoid main()int f(int n);int n,d;scanf(%d,d=f(n);printf(n 个数为%dn,d);int f(int n)int

14、d;if(nvoid main()int m,n;int max(int m, int n);int min (int m,int n);scanf(%d,%d,printf(%d,%dn,max(m,n),min(m,n);int min (int m,int n)int temp;if(mn)temp=n;n=m;m=temp;while(m!=0)temp=n%m;n=m;m=temp;return(n);int max(int m, int n)int min (int m,int n);return(m*n/min(m,n);14、编写一个排序子函数 sort,和折半查找子函数 find。主函数的功能是:输入组数后,调用 sort 排序,输出数组;再输入一个数给 key,在调用 find查找,并输出查找结果。15、编写一个索引排序函数 index。主函数的功能呢个是:输入未排序的原始数组 A,调用 index 进行索引, index 函数将按照从小到大排好序的索引数组B 返回给主函数,在主函数中分别输出数组 A 与 B。索引数组 B 保存原始数组 A 的下标,经过索引,不改变数组 A , 只改变数组 B,就可以完成对 A 的排序。如图所示:1 0172538454AB1 0573528414AB排 序 前 排 序 后

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号