中山大学计算机历年复试面试考研试题合集(4)
本站小编 免费考研网/2019-12-09
puts (substr);
n=findStr(str,substr);
printf ( "Substr counted is %d ", n);
getch();
}
int findStr(char *str, char *substr)
{
int n=0,i=0,j=0;
while (*(str+i)!= '\0 ')
{
if (*(str+i)==*(substr+j)) {i++; j++;}
else {i=i-j+1; j=0;}
if (*(substr+j)== '\0 ') {n++; j=0;}
}
return n;
}
串的模式匹配问题
int findStr(char *str,char *substr)
{ int n;
char *p , *r;
n=0;
while ( *str )
{ p=str;
r=substr;
while(*r)
if(*r==*p) { r++; p++; }
else break;
if(*r=='\0')
n++;
str++; }
return n;
采用顺序存储结构存储串,编写一个函数计算一个子串在一个字符串中出现的次数,如果该子串不出现则为0。(要求使用KMP算法)
最佳答案 #include <string.h>
/*在此定义一个int型数组next[],next[j]对应于当子串在位置j比较失败时的下一次匹配时子串的开始位置,由子串决定。*/
int StrIndex(char *S,char *T)
{int i,j;
i=0;
j=0;
int Slen=strlen(S);
int Tlen=strlen(T);
while((j<=(Tlen-1))&&((Slen-1-i+1)>=(Tlen-1-j+1)))
{if(S[i]==T[j]) {i++;
j++;}
else {
j=next[j];
if(j==-1){i++;j++;}
}
}
if(j>(Tlen-1)) return (i-j+1);
else return 0;
}
如:
S="a b a b c a b a a b c a a b a a b a b c a a b"
T="a b a a b a b c"
定义
int next[8]={-1,0,0,1,0,0,3,2};
typedef char DataType; //假设结点的数据域类型为字符
typedef struct node{ //结点类型定义
DataType data; //结点的数据域
struct node *next;//结点的指针域
}ListNode
typedef ListNode *LinkList;
ListNode *p;
LinkList head;
注意:
①*LinkList和ListNode是不同名字的同一个指针类型(命名的不同是为了概念上更明确)
②*LinkList类型的指针变量head表示它是单链表的头指针
③ListNode类型的指针变量p表示它是指向某一结点的指针
6、指针变量和结点变量
┌────┬────────────┬─────────────┐
│ │ 指针变量 │ 结点变量 │
├────┼────────────┼─────────────┤
│ 定义 │在变量说明部分显式定义 │在程序执行时,通过标准 │
│ │ │函数malloc生成 │
├────┼────────────┼─────────────┤
│ 取值 │ 非空时,存放某类型结点 │实际存放结点各域内容 │
│ │的地址 │ │
├────┼────────────┼─────────────┤
│操作方式│ 通过指针变量名访问 │ 通过指针生成、访问和释放 │
└────┴────────────┴─────────────┘
①生成结点变量的标准函数
p=( ListNode *)malloc(sizeof(ListNode));
//函数malloc分配一个类型为ListNode的结点变量的空间,并将其首地址放入指针变量p中
②释放结点变量空间的标准函数
free(p);//释放p所指的结点变量空间
③结点分量的访问
利用结点变量的名字*p访问结点分量
方法一:(*p).data和(*p).next
方法二:p-﹥data和p-﹥next
④指针变量p和结点变量*p的关系
指针变量p的值——结点地址
结点变量*p的值——结点内容
(*p).data的值——p指针所指结点的data域的值
(*p).next的值——*p后继结点的地址
*((*p).next)——*p后继结点
注意:
① 若指针变量p的值为空(NULL),则它不指向任何结点。此时,若通过*p来访问结点就意味着访问一个不存在的变量,从而引起程序的错误。
② 有关指针类型的意义和说明方式的详细解释
可见,在链表中插入结点只需要修改指针。但同时,若要在第 i 个结点之前插入元素,修改的是第 i-1 个结点的指针。
因此,在单链表中第 i 个结点之前进行插入的基本操作为:
找到线性表中第i-1个结点,然后修改其指向后继的指针。
#include<stdio.h>
#include<string.h>
int Palindrome(char * s1)//判断是否是回文
{
char str[50];
int k,i,j;
k=strlen(s1);
for(i=k-1,j=0;i>=0;i--,j++)
{
str[j]=s1[i];
}
str[j]='\0';
if(strcmp(s1,str)==0)
return 1;
else
return 0;
}
void main()
{
char s[50];
printf("请输入一个字符串:\n");
scanf("%s",s);
int flag=Palindrome(s);
if(flag==1)
printf("字符串%s是回文\n",s);
else
printf("字符串%s不是回文\n",s);
}
测试:
请输入一个字符串:
jkasjdkf
字符串jkasjdkf不是回文
Press any key to continue
请输入一个字符串:
aabaa
字符串aabaa是回文
Press any key to continue
编写一个程序,将用户输入的一个字符串转换成一个整数
#include "stdio.h"
int cti(char s[])
{
int i,sign,n;
for(i=0;s[i]==' '||s[i]=='\n'||s[i]=='\t';i++){printf("ok");};//跳过前面空格
sign=1;
if(s[i]=='+'||s[i]=='-')
sign=(s[i++]=='+')?1:-1;
for(n=0;s[i]>='0'&&s[i]<='9';i++)
n=10*n+s[i]-'0';
return(sign*n);}
main()
{ char s[50];
int n;
scanf("%s",s);
n=cti(s);
printf("对应的整数:%d\n\n",n);
getch();
}
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
c语言,输入一个字符串,将该字符串中从第m个字符开始的全部字符复制到另一个字符串,m由用户输入……
悬赏分:10 | 解决时间:2010-10-5 20:22 | 提问者:349633487 输入一个字符串,将该字符串中从第m个字符开始的全部字符复制到另一个字符串,m由用户输入,值小于字符串的长度,要求编写一个函数mcopy(char *s,int m)来完成
#include<stdio.h>
#include<string.h> //支持strlen()的应用
#include<stdlib.h> //支持exit(1)
char *mcopy(char*s ,int m); //函数的定义
void main(void)
{
char str1[100];
char *str2;
int m;
printf("请输入你要输入的字符串\n");
gets(str1);
printf("请输入你要开始复制字符的位置m\n");
scanf("%d",&m);
if(m>=strlen(str1)) //若输入m值过大,结束程序
{
printf("输入值超出字符串长度...\n");
exit(1);
}
str2=mcopy(str1,m); //程序的调用
for(int j=0;j<strlen(str2);j++) //把数组进行输出
printf("字符串第%d个元素是%c\n",m++,str2[j]); //字符的输出
}
char *mcopy(char*s ,int m)
{
static char array[100];
int count=0;
for(int i=m-1;i<strlen(s);i++)
{
array[count]=s[i];
count++;
}
return array;
}
一. 笔试 计算机。。
挺简单的。。 具体的忘记了。 。 有
1.关系的题目 还叫画 关系矩阵、
2.图的题目 画 邻接矩阵,可达矩阵, 画哈试图
3.图的证明题 好像是证明一个有 n-1 条边的简单图必定有一个点的度《=1
二。笔试C。
1.写程序。。 将一个 数字字串 如“123” 转换成相应的 数字 123
2. 两个读程序题, 写出结果
3.一个填空题 :
1
6 7
11 12 13
16 17 18 19
21 22 23 24
用一个一唯数组存储这组数据, 并用另一个指针(注,指针是2唯的好像。) 将他们这么打印出来。。
这题也不难。 可能我描述不好。 呵呵。
4.还有一题改错。是关于循环 以及循环中的判断的。 认真点就能检查出来。“物联网概念”是在“互联网概念”的基础上,将其用户端延伸和扩展到任何物品与物品之间,进行信息交换和通信的一种网络概念。
网格计算(grid conputing)
7. 迷宫问题
给一个20×20的迷宫、起点坐标和终点坐标,问从起点是否能到达终点。
输入数据:’.’表示空格;’X’表示墙。
程序如下:
#include <stdio.h>
#include <math.h>
void search(int,int);
int canplace(int,int);
void readdata(); //读入数据
void printresult(); //打印结果
int a[20][20]; //a数组存放迷宫
int s,t;
int main()
{
int row, col;
readdata();
row=s/20;
col=s%20;
search(row,col); //递归搜索
printresult();
}
void search(int row, int col)
{
int r,c;
a[row][col]=1;
r=row; //左
c=col-1;
if(canplace(r,c)) //判断(r,c)位置是否已经走过
search(r,c); //递归搜索(r,c)
r=row+1; //下
c=col;
if(canplace(r,c)) //判断(r,c)位置是否已经走过
search(r,c); //递归搜索(r,c)
r=row; //右
c=col+1;
if(canplace(r,c)) //判断(r,c)位置是否已经走过
search(r,c); //递归搜索(r,c)
r=row-1; //上
c=col;
if(canplace(r,c)) //判断(r,c)位置是否已经走过
search(r,c); //递归搜索(r,c)
}
void printresult()
{
int i,j;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
void readdata()
{
int i,j;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
scanf("%d",&a[i][j]);
}
}
int canplace(int row, int col)
{
if(row>=0&&row<20&&col>=0&&col<20&&a[row][col]==0)
return 1;
else
return 0;
}
char *strRepl(char *s, char *s1, char *s2)
{
char *p,*sp,*dp,*pos;
int len,cnt;
for (pos=s;;) {
if ((p = strstr(pos, s1)) == NULL) {
return s;
}
len = strlen(s2) - strlen(s1);
相关话题/
2017中山大学信号与系统考研906考研真题解析
专业课考研资料 本站小编 免费考研网 2019-11-292019中山大学考研信号系统911试题答案解析
专业课考研资料 本站小编 免费考研网 2019-11-292018中山大学考研904信号系统真题答案解析
专业课考研资料 本站小编 免费考研网 2019-11-292017年中山大学信号系统考研906试题答案解析
专业课考研资料 本站小编 免费考研网 2019-11-29中山大学岭南学院435保险专业基础[专业硕士]历年考研真题汇编
目录封面内容简介目录2017年中山大学岭南学院435保险专业基础考研真题2018年中山大学岭南学院435保险专业基础考研真题2019年中山大学岭南学院435保险专业基础考研真题内容简介本书收录了中山大学岭南学院435保险专业基础[专业硕士]2017~2019年的完整版考研真题,所有真题均不提供答案, ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学国际翻译学院211翻译硕士英语[专业硕士]历年考研真题及详解
目录封面内容简介目录2010年中山大学国际翻译学院211翻译硕士英语考研真题及详解2011年中山大学国际翻译学院211翻译硕士英语考研真题及详解2012年中山大学国际翻译学院211翻译硕士英语考研真题及详解2013年中山大学国际翻译学院211翻译硕士英语考研真题及详解2014年中山大学国际翻译学院2 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学外国语学院241英语(二外)历年考研真题及详解
目录封面内容简介目录2003年中山大学外国语学院221英语考研真题及详解2005年中山大学外国语学院221英语考研真题及详解2006年中山大学外国语学院221英语考研真题及详解2007年中山大学外国语学院221英语考研真题及详解2008年中山大学外国语学院221英语考研真题及详解2009年中山大学外 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学口腔医学综合历年考研真题汇编
目录封面内容简介目录2005年中山大学790口腔综合考研真题(不完整)2006年中山大学377口腔综合考研真题2007年中山大学758口腔综合考研真题2008年中山大学645口腔综合考研真题2009年中山大学663口腔综合考研真题2010年中山大学344口腔综合考研真题2011年中山大学352口腔综 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学352口腔综合[专业硕士]历年考研真题汇编
目录封面内容简介目录2010年中山大学344口腔综合[专业硕士]考研真题2011年中山大学352口腔综合[专业硕士]考研真题2012年中山大学352口腔综合[专业硕士]考研真题2013年中山大学352口腔综合[专业硕士]考试真题2014年中山大学352口腔综合[专业硕士]考研真题2015年中山大学3 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学349药学综合历年考研真题汇编
目录封面内容简介目录2010年中山大学653药学综合(A)考研真题2010年中山大学657药学综合(B)考研真题2011年中山大学349药学综合考研真题2012年中山大学349药学综合考研真题2013年中山大学349药学综合考研真题2014年中山大学349药学综合考研真题2015年中山大学349药学 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学药学综合A历年考研真题汇编
目录封面内容简介目录2010年中山大学653药学综合(A)考研真题2011年中山大学661药学综合(A)考研真题2012年中山大学660药学综合(A)考研真题2013年中山大学666药学综合(A)考研真题2014年中山大学672药学综合(A)考研真题2015年中山大学672药学综合(A)考研真题20 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学308护理综合历年考研真题汇编
目录封面内容简介目录2010年中山大学308护理综合考研真题2011年中山大学308护理综合考研真题2012年中山大学308护理综合考研真题2013年中山大学308护理综合考研真题2014年中山大学308护理综合考研真题2015年中山大学308护理综合考研真题2016年中山大学308护理综合考研真题 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学353卫生综合历年考研真题汇编
目录封面内容简介目录2011年中山大学353卫生综合考研真题2012年中山大学353卫生综合考研真题2013年中山大学353卫生综合考研真题2014年中山大学353卫生综合考研真题2015年中山大学353卫生综合考研真题2016年中山大学353卫生综合考研真题2017年中山大学353卫生综合考研真题 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学基础中医综合历年考研真题汇编
目录封面内容简介目录2017年中山大学682基础中医综合考研真题2018年中山大学682基础中医综合考研真题2019年中山大学687基础中医综合考研真题内容简介本书收录了中山大学基础中医综合近些年的考研真题(注意:部分年份的科目代码会有变动,各年真题的科目代码也可能不一样 ...辅导考试考研资料 本站小编 Free考研 2019-10-03中山大学基础医学综合历年考研真题汇编
目录封面内容简介目录2010年中山大学662基础医学综合考研真题2011年中山大学669基础医学综合考研真题2012年中山大学667基础医学综合考研真题2013年中山大学672基础医学综合考研真题2014年中山大学679基础医学综合考研真题2015年中山大学679基础医学综合考研真题2016年中山大 ...辅导考试考研资料 本站小编 Free考研 2019-10-03