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

C语言笔试题答案(6)

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

}

{ if(*cpSource == ch) { iTemp = 0; cpTemp = cpSource; while(*cpSource == ch) ++iTemp, ++cpSource; if(iTemp > iCount) iCount = iTemp, cpDest = cpTemp; if(!*cpSource) break; } ++cpSource; }

return cpDest;

16. 给定字符串A和B,输出A和B中的最大公共子串。

#include #include #include

char *commanstring(char shortstring[], char longstring[]) { int i, j; char *substring=malloc(256); if(strstr(longstring, shortstring)!=NULL) //如果??,那么返回shortstring return shortstring; for(i=strlen(shortstring)-1;i>0; i--) //否则,开始循环计算 { for(j=0; j<=strlen(shortstring)-i; j++){ memcpy(substring, &shortstring[j], i); substring[i]='\\0'; if(strstr(longstring, substring)!=NULL) return substring; } } return NULL; }

int main() { char *str1=malloc(256); char *str2=malloc(256); char *comman=NULL;

}

gets(str1); gets(str2);

if(strlen(str1)>strlen(str2)) //将短的字符串放前面 comman=commanstring(str2, str1); else comman=commanstring(str1, str2);

printf(\return 0;

17. 编程实现:把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系

列库函数。

include #include #include

#define SIZE 32

char *dec_bin(long num) { int i = SIZE; char *buffer = (char *) malloc(SIZE+1); if(NULL == buffer) { printf(\ return NULL; } buffer[SIZE] = '\\0'; memset(buffer,'0',SIZE); while(num) { buffer[i--] = num % 2 + '0'; num = num / 2; } return buffer; }

char *dec_hex(long num) { int i ; char *buffer = (char*)malloc(11); if(NULL == buffer) { printf(\

return NULL; } buffer[0] = '0'; buffer[1] = 'x'; buffer[10] = '\\0'; char* temp = buffer + 2; for ( i = 0; i < 8; i++) { temp[i] = (char)(num<<4*i>>28); temp[i] = temp[i] >= 0 ? temp[i] : temp[i] + 16; temp[i] = temp[i] < 10 ? temp[i] + 48 : temp[i] + 55; } return buffer; }

int main() { long int num = 20; printf(\ //dec_bin(num); printf(\ return 0; }

18. 在不用第三方参数的情况下,交换两个参数的值。

#include void main() {

int i=60; int j=50;

/*方法一*/ i=i+j; j=i-j; i=i-j;

printf(\ printf(\}

方法二: i^=j; j^=i; i^=j;

方法三:

// 用加减实现,而且不会溢出

a = a+b-(b=a);

19. 写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数

分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)。

①递归算法: {

#include #include

int resolve(unsigned int num) { int i; char buf[10] = {0}; for(i = 2;i <= sqrt(num);i++) { if(0 == num % i ) { printf(\ return resolve(num /= i); break; } } return printf(\}

int main() { unsigned int num; while(scanf(\ resolve(num); return 0; }

②数组

#include #include #include

int resolve(unsigned int number) { int i = 2,num = number; int j = 0; char buf[30] = {0}; while(i <= sqrt(num))

{ if(0 == num % i) { buf[j++] = i + '0'; buf[j++] = '*'; num /= i; continue; } else { i++; } } buf[j+2] = '\\0';

// buf[j++] = num + '0'; 如果num大于9将会出错 char tmp[3] = {'0'};/*100以内最大地质数最多两位*/ sprintf(tmp,\ strcat(buf,tmp); if(0 == j) { printf(\ } else { printf(\ } return 0; }

int main() { unsigned int num; printf(\ while(scanf(\ resolve(num); return 0; }

20. 完成字符串拷贝可以使用sprintf、strcpy及memcpy函数,请问这些函数有什么区别,

你喜欢使用哪个,为什么?

sprintf 可以进行额外的格式化

strcpy 会复制直到出现 '' 为止,可能溢出

memcpy 只负责复制指定数量的 bytes,不处理 '' 的情况

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

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