资源描述:
《C语言上机练习题(1) _828701982》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言上机考试练习题(1)说明:我们已经学习完成了基本数据类型、基本控制语句,以及数组、函数这些知识了,请同学们看看附件中的这些题目是否能够快速编写出来?可能有个别题目与过去的练习有些重复,请尽量不要去参考过去的答案。如果现在编写起来困难还很多,那你就要加倍努力了。1、编写一个程序,判定一个字符串是否是另一个字符串的子串,若是,返回子串在主串中的位置。要求:(1)在主函数中输入两个字符串,调用子函数cmpsubstr()判断,并在主函数输出结果。(2)子函数的返回值为-1表示未找到,否则返回子串
2、的位置(起始下标)。#include#includevoidmain(){intcmpsubstr(char*s1,char*s2);charstr1[20],str2[50];char*s1=str1,*s2=str2;gets(str1);gets(str2);printf("%d",cmpsubstr(s1,s2));}intcmpsubstr(char*s1,char*s2){inti,d,a=0,situation=0;d=strlen(s1);f
3、or(i=0;*(s2+i)!=' ';i++){if(*(s1+a)==*(s2+i)){a++;if(a==d){situation=1;break;}}else{a=0;}}if(situation==0)return(-1);elsereturn(i-d+2);}2、输入一个字符串,内有数字和非数字字符,如:a123x45617960?302tab5876,将其中连续的数字作为一个整数,依次存放到数组a中。例如,123放在a[0]中,456放在a[1]中等等,统计共有多少个整数,并输出
4、这些整数。要求:(1)在主函数中输入字符串,并输出结果。调用子程序处理字符串。(2)子函数的返回值为整数的个数。#include#includevoidmain(){intsearch(char*str,int*sum);charstr[100];intd,sum[20],i;gets(str);d=search(str,sum);for(i=0;i5、){inti,t=0,a=0;for(i=0;*(str+i)!=' ';i++){if(*(str+i)>='0'&&*(str+i)<='9'){if(a==0){*(sum+t)=(int)(*(str+i)-'0');a++;}else{*(sum+t)=*(sum+t)*10+(int)(*(str+i)-'0');}}elseif(*(str+i-1)>='0'&&*(str+i-1)<='9'){t++;a=0;}}if(*(str+i-1)>='0'&&*(str+i-1)<=
6、'9')return(t+1);elsereturn(t);}3、编写一个主函数和子函数tran(x,r),要求是:函数tran(x,r)将十进制整数x转换成r进制数y(r在2-16之间),x和r的值由主调函数(即主函数)传入,y的值需要返回主调函数进行输出。要求:y的值利用字符数组进行存储,数组的每一个元素存放y的一位数字字符。#include#include#include#includevoidmain(){char
7、*tran(intx,intr);intx,r;char*y;printf("Pleaseinputx&r=");scanf("%d,%d",&x,&r);y=tran(x,r);puts(y);}char*tran(intx,intr){intlen1,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
8、%r;if(t<10)*(y1+i)=(char)(t+48);else*(y1+i)=(char)(t+87);x=(int)x/r;}*(y1+i)=' ';len2=strlen(y1);y2=(char*)malloc(len2*sizeof(char));for(i=0;i