云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > c语言竞赛题目精选

c语言竞赛题目精选

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 19:51:33

Flag[k++] = i;

Combine(n-1, Value-Stamp[i]); Flag[--k] = 0; }

return Found; }

int main(int argc, char* argv[]) {

for(int i=1; Combine(N, i); i++, Found=0); }

10、大整数数相乘的问题。(这是2002年在一考研班上遇到的算法题) void Multiple(char A[], char B[], char C[]) { int TMP, In=0, LenA=-1, LenB=-1; while(A[++LenA] != '\\0'); while(B[++LenB] != '\\0');

int Index, Start = LenA + LenB - 1; for(int i=LenB-1; i>=0; i--) { Index = Start--; if(B[i] != '0') {

for(int In=0, j=LenA-1; j>=0; j--) {

TMP = (C[Index]-'0') + (A[j]-'0') * (B[i] - '0') + In; C[Index--] = TMP % 10 + '0'; In = TMP / 10; }

C[Index] = In + '0'; } } }

11、求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”) int GetSubString(char *strSource, char *strResult) { int iTmp=0, iHead=0, iMax=0;

for(int Index=0, iLen=0; strSource[Index]; Index++) { if(strSource[Index] >= '0' && strSource[Index] <= '9' && strSource[Index-1] > '0' && strSource[Index] == strSource[Index-1]+1) {

iLen++; // 连续数字的长度增1 } else { // 出现字符或不连续数字 if(iLen > iMax) {

iMax = iLen; iHead = iTmp; }

// 该字符是数字,但数字不连续

if(strSource[Index] >= '0' && strSource[Index] <= '9') { iTmp = Index;

iLen = 1;

} } }

for(iTmp=0 ; iTmp < iMax; iTmp++) // 将原字符串中最长的连续数字串赋值给结果串

strResult[iTmp] = strSource[iHead++]; strResult[iTmp]='\\0';

return iMax; // 返回连续数字的最大长度 }

14、实现strstr功能,即在父串中寻找子串首次出现的位置。(笔试中常让面试者实现标准库中的一些函数)

char * strstring(char *ParentString, char *SubString) { char *pSubString, *pPareString;

for(char *pTmp=ParentString; *pTmp; pTmp++) { pSubString = SubString; pPareString = pTmp;

while(*pSubString == *pPareString && *pSubString != '\\0') { pSubString++; pPareString++; }

if(*pSubString == '\\0') return pTmp; }

return NULL; }

16、2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)

int change(char *str) { /* 这个算法并不高效,从后向前搜索效率要高些 */

int count = 0; /* 记录串中字符'*'的个数 */ for(int i=0, j=0; str[i]; i++) { /* 重串首开始遍历 */ if(str[i]=='*') { /* 遇到字符'*' */

for(j=i-1; str[j]!='*'&&j>=0; j--) /* 采用类似插入排序的思想,将*前面 */

str[j+1]=str[j]; /* 的非*字符逐个后移,直到遇到*字符 */

str[j+1] = '*'; count++; } }

return count; }

int change(char *str) { int i,j=strlen(str)-1; for(i=j; j>=0; j--) { if(str[i]!='*') { i--;

} else if(str[j]!='*') { str[i] = str[j]; str[j] = '*'; i--; }

搜索更多关于: c语言竞赛题目精选 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Flag[k++] = i; Combine(n-1, Value-Stamp[i]); Flag[--k] = 0; } return Found; } int main(int argc, char* argv[]) { for(int i=1; Combine(N, i); i++, Found=0); } 10、大整数数相乘的问题。(这是2002年在一考研班上遇到的算法题) void Multiple(char A[], char B[], char C[]) { int TMP, In=0, LenA=-1, LenB=-1; while(A[++LenA] !=

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com