有关算法与数据结构的考题解答参考汇总 [C++] [链表]
2021/9/29 17:40:45
本文主要是介绍有关算法与数据结构的考题解答参考汇总 [C++] [链表],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
早先年考研的主考科目正是【算法与数据结构】,复习得还算可以。也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考。
【1】
原题目地址:
https://zhidao.baidu.com/question/1495132662371543299.html?entry=qb_uhome_tag
题目:使用C++如何将字符串中的除空格外的其他元素赋给一个字符数组?
比如说,我有一个字符串“how are you”,现在希望将它赋给一个字符类型的数组a[],希望
a[1]=='how',a[2]=='are',a[3]=='you'
答:
#include<stdio.h> #include <windows.h> void Func(char (*p)[10],char b[],int *pval) { int j,i,t=0; for(i=0,j=0; b[i]!='\0'; i++,j++) { if(b[i]==' ') //遇到空格 { p[t][j]='\0'; j=-1; t++; } else //遇到是单词 p[t][j]=b[i]; } p[t][j]='\0'; *pval = t; return; } void Show(char (*p)[10],int *pval) { int j=0; int k=0; while(k<=*pval) { printf("a[%d]==",j); for(int i=0; p[k][i]!='\0'; i++) { printf("%c",p[k][i]); } putchar(10); k++; j++; } return; } int main() { int val=NULL; char a[10][10]; char b[]="How are you"; printf("b:%s\n-------------\n",b); char (*p)[10]; p = a; Func(p,b,&val); Show(p,&val); system("pause"); return 0; }
得到结果:
【2】
原题目地址:
https://zhidao.baidu.com/question/712193735370778525.html?entry=qb_uhome_tag
题目:编写字符串插入函数String_Insert,将字符串sub插入到字符串str中,插入位置为pos(从0开始)。
1.编写字符串插入函数String_Insert,将字符串sub插入到字符串str中,插入位置为pos(从0开始)。假设分配给str的内存空间长度足够。
2.上一题,设分配给字符串str的空间有限,为size(字节数,结尾的0字符也算在内),插入后有可能超出,重写该函数,保证不发生非法内存访问。
答:
【1】
#include<stdio.h> #include <windows.h> void String_Insert(char sub[],char str[],int pos) { int i,j=0; int sub_size=strlen(sub); int str_size=strlen(str); for(i=str_size-1; i>=pos-1; i--) { str[i+sub_size]=str[i]; } str[str_size+sub_size]='\0'; for(i=pos-1; i<pos-1+sub_size; i++,j++) { str[i]=sub[j]; } return; } int main() { char sub[10]; char str[30]; int pos; printf("输入sub字符串:"); gets(sub); printf("输入str字符串:"); gets(str); printf("输入插入位置:"); scanf("%d",&pos); String_Insert(sub,str,pos); printf("str:"); puts(str); putchar(10); system("pause"); return 0; }
【2】
#include<stdio.h> #include <windows.h> void String_Insert(char sub[],char str[],int pos,int size) { int i,j=0; int sub_size=strlen(sub); int str_size=strlen(str); int t=sub_size+str_size+1; int k; if(t<=size) { for(i=str_size-1; i>=pos-1; i--) { str[i+sub_size]=str[i]; } str[str_size+sub_size]='\0'; for(i=pos-1; i<pos-1+sub_size; i++,j++) { str[i]=sub[j]; } } else { k=t-size; for(i=str_size-1-k; i>=pos-1; i--) { str[i+sub_size]=str[i]; } for(i=pos-1; ((i<pos-1+sub_size)&&(i<size)); i++,j++) { str[i]=sub[j]; } str[size-1]='\0'; } return; } int main() { char sub[10]; char str[10]; int size = sizeof(str); int pos; printf("输入sub字符串:"); gets(sub); printf("输入str字符串:"); gets(str); printf("输入插入位置:"); scanf("%d",&pos); String_Insert(sub,str,pos+1,size); printf("str:"); puts(str); putchar(10); system("pause"); return 0; }
上机测试:
【1】
【2】
【3】
原题目地址:https://zhidao.baidu.com/question/1495131980697139059.html?entry=qb_uhome_tag
题目:c语言求1到100以内所有只有2,5,7,11四个素数因子的数,并输出这些数的所有因子
答:
#include <stdio.h> #include <windows.h> bool Func2(int a) //判断是否满足要求(因子只有2,5,7,11) { int j,t=0; for(j=2; j<a; j++) { if(0==(a%j)) { if((2==j)||(5==j)||(7==j)||(11==j)) { t++; //有几个因子 continue; } else return false; } } if(0==t) //如果没有因子,也就是素数,则返回false return false; if(0!=t) //满足要求,返回true return true; } void Func(int min,int max) { int i,j; for(i=min; i<=max; i++) { if(Func2(i)) //判断是否符合要求 { printf("[%d]:",i); //输出满足的数 for(j=2; j<i; j++) { if(0==(i%j)) { printf("%d ",j); //输出各因子 } } putchar(10); //输出【回车】(换行) } } return; } int main() { Func(1,100); system("pause"); return 0; }
【注意】:这道题目隐含一个说明吧(至少我是这么理解的)-- 1作为所有数的因子,应该也包括在条件之内!(也就是1,2,5,7,11 5个因子数满足条件),所有我在这把【j】变量从2开始算了。
这篇关于有关算法与数据结构的考题解答参考汇总 [C++] [链表]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势