77范文网 - 专业文章范例文档资料分享平台

C语言笔试题答案(5)

来源:网络收集 时间:2019-03-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

9. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)。功能:在字符串

中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:\的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789

int continumax(char *outputstr, char *inputstr) {

char *in = inputstr, *out = outputstr, *temp, *final; int count = 0, maxlen = 0; while( *in != '\\0' ) {

if( *in > 47 && *in < 58 ) {

for(temp = in; *in > 47 && *in < 58 ; in++ ) count++; } else

in++;

if( maxlen < count ) {

maxlen = count; count = 0; final = temp; } }

for(int i = 0; i < maxlen; i++) {

*out = *final; out++; final++; }

*out = '\\0'; return maxlen; }

10. 不用库函数,用C语言实现将一整型数字转化为字符串。

int getlen(char *s) {

int n;

for(n = 0; *s != '\\0'; s++) n++; return n; }

void reverse(char s[]) {

int c,i,j;

for(i = 0,j = getlen(s) - 1; i < j; i++,j--) {

c = s[i]; s[i] = s[j]; s[j] = c; } }

void itoa(int n,char s[]) {

int i,sign;

if((sign = n) < 0) n = -n; i = 0;

do{/*以反序生成数字*/

s[i++] = n + '0';/*get next number*/ }while((n /= 10) > 0);/*delete the number*/ if(sign < 0) s[i++] = '-'; s[i] = '\\0'; reverse(s); }

#include using namespace std;

void itochar(int num); void itochar(int num) {

int i = 0; int j ;

char stra[10]; char strb[10]; while ( num ) {

stra[i++]=num+48; num=num/10; }

stra[i] = '\\0'; for( j=0; j < i; j++) {

strb[j] = stra[i-j-1]; }

strb[j] = '\\0'; cout >> strb;

}

int main() {

int num; cin>>num; itochar(num); return 0; }

11. 用指针的方法,将字符串“ABCD1234efgh”前后对调显示。

#include #include #include

int main() { char str[] = \ int length = strlen(str); char * p1 = str; char * p2 = str + length - 1; while(p1 < p2) { char c = *p1; *p1 = *p2; *p2 = c; ++p1; --p2; } printf(\// system(\ return 0; }

12. 有一分数序列:1/2,1/4,1/6,1/8??,用函数调用的方法,求此数列前20项的和。

#include

double getValue() { double result = 0; int i = 2; while(i < 42) { result += 1.0 / i;/*一定要使用1.0做除数,不能用1,否则结果将自动转化成整数,即0.000000*/

i += 2; }

return result; }

int main() { printf(\ system(\ return 0; }

13. 实现子串定位。

char * mystrstr(char* MainStr, const char* SubStr) { const char *q; char * tmp = MainStr,*p;

assert((MainStr!=NULL)&&( SubStr!=NULL));//用断言对输入进行判断

while(*tmp++) //内部进行递增 { p = tmp; q = SubStr; while(*q && *p && *p++ == *q++); if(!*q ) {

return tmp;/* MainStr指向当前起始位*/ } } return NULL; }

int main() { char str[30] = \ char substr[10] = \ char *p = NULL; if(NULL == ( p = mystrstr(str,substr) ) ) { printf(\ } else { printf(\ } return 0;

}

14. 有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复

杂度O。

#include

void sort(int *arr,int len) { int temp,i = 0; for(int i = 0; i < len; ) { temp = arr[arr[i] - 1]; arr[arr[i] - 1] = arr[i]; arr[i] = temp; if ( arr[i] == i + 1) i++; } }

int main() { int a[] = {10,6,9,5,2,8,4,7,1,3}; int len = sizeof(a) / sizeof(int); int temp; sort(a,len); for (int j = 0; j < len; j++) { printf(\ if(!(++j % 5)) { putchar('\\n'); } } putchar('\\n'); return 0; }

15. 编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由

同一字符组成的。

char * search(char *cpSource, char ch) { char *cpTemp=NULL, *cpDest=NULL; int iTemp, iCount=0; while(*cpSource)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言笔试题答案(5)在线全文阅读。

C语言笔试题答案(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/554103.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: