




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 读程序,写执行结果1、(2006年)#include void main()int a = 2,4,6,8,*p3 = a+2,a+1,a,*q = p;printf(%dn,*(p0+1)+*(q+2);结果:102、(2006年)#include void main()int x,y,z,w;z=(x=-1)?(y=-1,y+=x+5):(x=7,y=3);w=A+y;printf(%d %d %d %cn,x,y,z,w);结果:-1 3 3 D3、 (2005年)#include int main()int a=4,b=3,c=1,x;x=ab;printf(%dn,x);x=-a+b+;printf(%dn,x);x=ab;printf(%dn,x);x=c&b=c;printf(%dn,x);return 0;结果:1 6 0 04、(2005年)#include int main()int i,j;for(i=0;i8;i+=2)for(j=0;j(8-i)/2;j+)printf(+);for(j=0;j=i;j+)printf(*);printf(n);return 0;结果:+*+*+*+*5、(2007年)#include int main(void)int i=1,j=3;printf(%d,i+);int i=0;i+=j*2;printf(%d,%d,i,j);printf(%d,%dn,i,j);return 0;结果:1,6,3,2,36、(2007年)#include #define N 2#define M N+1#define NUM (M+1)*M/2int main(void)int i,n=0;for(i=1;i=NUM;i+)n+;printf(%d,n);printf(n);return 0;结果:123456787、(2003年)#include void swap(int *p1,int *p2)int *t;t=*p1;*p1=*p2;*p2=t;void main()int a=1,b=3,*p=&a,*q=&b;swap(&p,&q);printf(%d,%d,%d,%dn,a,b,*p,*q);结果:1,3,3,18、(2003年)#include void merge(char *d,char *s1,char *s2)while(*s1!=0&*s2!=0)if(*s1b&a|a; 答案:1(5) a=!ba&!ab; 答案:1三、 下面的程序构造一个有向图,请画出其示意图。(2004年)#include struct node /*有向图的节点类型*/int key;struct node *left,*right,*up,*down;int main()int i;struct node nodes5;for(i=0;i5;i+)nodesi.key=i;nodesi.left=NULL;nodesi.right=NULL;nodesi.up=NULL;nodesi.down=NULL;nodes0.left=nodes+1;nodes1.left=nodes;nodes1.up=nodes+2;nodes2.down=nodes+3;nodes3.right=nodes+4;nodes4.up=nodes;nodes4.down=nodes+1;return 0;答:四、 按要求完成C函数1、 int maxSameChar(char *s); 该函数计算字符串s中最大连续相同的字符个数。例如,若s为”aaabbbb”,则返回值为4;若s为”abcde”,则返回值为1。(2003年)解:int maxSameChar(char *s)int temp = 1,max = 0;char c = 0;while (*s)if(c = *s)temp+;elsec=*s;temp = 1;if(max pNext;while (q != NULL)t = q-pNext;q-pNext = p;p = q;q = t;pHead-pNext = NULL;pHead = p;return pHead;3、 int sameCharsAtSamePos(char *s1,char *s2);两个字符串的字符进行同位置比较,返回相同的字符数(串结束符0不比较)。例如,若s1= “abc”,s2 = “ Abc”,则返回值为2。(2004年)解:int sameCharsAtSamePos(char *s1,char *s2)int counter = 0;while (*s1 & *s2)if(*s1 = *s2)counter+;s1+;s2+;return counter;4、 一种最简单的字符串加密方法是将字符串的每一字符加上一个偏移量offset(不考虑溢出)。请编写相应得编解码函数,其原型分别为:char *encode(char *s,int offset);char *decode(char *s,int offset); (2005年)解:char *encode(char *s,int offset)char *p = s;while (*p)*p += offset;return s;char *decode(char *s,int offset)char *p = s;while (*p)*p -= offset;return s;5、 编写函数将两个节点值递增的单向链表归并为一个。要求利用原节点空间。链表节点定义为:Struct nodeint value;struct node *pNext;函数原型为:Struct node *merge(struct node *a,struct node *b);其中a,b为要归并的两个单向链表头结点指针,函数返回值为归并后的单向链表头结点指针。(2005年)解:struct nodeint value;struct node *pNext;struct node *merge(struct node *a,struct node *b)struct node *p;struct node *q;struct node *t;if(a-value value)p = a;q = b;elsep = b;q = a;t = p;while(q)if(p-pNext = NULL)p-pNext = q;break;if(q-value pNext-value)struct node *k = q-pNext;q-pNext = p-pNext;p-pNext = q;q = k;continue;p = p-pNext;return t;6、 加密字符串的最简单方法是采用异或运算法,设原文为A,密钥为B,则密文为AB,如果解密,则再异或一次,即ABB,请设计出加密函数,其原型如下:Void encfile(char *s,int pwd);(2006年)解:char encfile(char *s,int pwd)char *p = s;while (*p)*p = pwd;p+;return s;7、(n阶Hanoi塔问题)假设有三个命名为x,y,z的塔座,在塔座x上插有n个直径大小各不相同、依小到大编号为1、2、.n的圆盘,要求将x塔座上的n个圆盘移至z上,并仍按同样的顺序叠排,圆盘移动时应遵守下列规则:(1)、每次只能移动一个圆盘;(2)、圆盘可插在x、y和z中任一塔座上;(3)、任何时刻都不能将一个较大的原盘压在较小的圆盘的上面。如下图所示为3阶Hanoi塔问题的初始状态。试编写实现Hanoi塔问题的函数,函数原型如下:Void Hanoi(int n,char x,char y,char z);(2006年)解:void Hanoi(int n,char x,char y,char z)/将x塔座上的n个盘子移到塔座z上,塔座y可用作辅助塔座if(n0)/将x上编号为1至n-1的原盘移到y,z作辅助塔Hanoi(n-1,x,z,y);/将编号为n的圆盘从x移到zcoutendln.x=0&strNum0=9)/*整数开始*/sign = 0;absValue = strNum0-0;else/*非法字符*/return 0;for(i=1;i=0&strNumi=9)/*s数字字符*/absValue = 10*absValue+strNumi-0;else/*非法字符*/break;if(sign = 0)/*正数*/return absValue;else/*负数*/return -absValue;9、设有整数序列a0,a1,.an-1,给出球平均值的递归函数,函数原型如下:float Average(int a,int n);(2007年)解:float Average(int a,int n)/*求a0.an-1的平均值*/if(n = 1)/*数组a只有一个元素,a0的值为平均值*/return (float)a0;else/*注意a0.an-1的平均值与a0.an-2的平均值的关系*/return (Average(a,n-1)*(n-1)+an-1)/n;五、 运用编程题1、 按要求完成简单的客车车次查询程序。(2003年)某车站需要一个简单的客车车次查询程序。说明如下:1、客车车次数据文件checi.txt放在c:data目录下,格式为:T8 成都 北京西 09:301364 成都 北京西 14:20K118 攀枝花 北京西 22:00 其中每行为一次车的信息,分为4个数据项:车次,始发站,终点站和离开本站时间。前三个数据项留的宽度为8字符,最后一项结束后即换行。数据项间一定有空格隔开,每一数据项内无空格。2你的程序对用户通过命令行参数指一的车次,在客车车次数据文件中查找相应车次信息并输出该次车的始发站,终点站和离开本站时间,如果未找到,则输出“找不到该次车信息!”。3你的程序可以使用标准的C库函数,可以不引用文件。程序中应给出必要的注释。解:int main (int argc, char *argv ) char info 4 20;FILE * fp;int I,found=0;if (argc!=2) printf(参数个数不正确!n);return 1;fp=fopen (c:checi. txt ,r);if (fp=NULL) printf (无法打开数据文件!n);return 1;while (! feof (fp) for (I=0;i4; i+) fscanf (fp,%s,infoi);if (!stricmp (info0,argv1) found=1;printf(始发站:%sn,info 1);printf(始发站:%sn,info 2);printf(离本站时间:%sn,info 3);break;if (! found )printf(找不到该次车信息!n);return 0;2、按要求编写程序对一种特殊字符串解码。(2004年)要处理的特殊字符串由A,C,G,U四个字符组成,如下所示:ACUGCCCAUGAAAAACUUUUGACAC其有效信息子串从第一次出现“AUG”后开始,遇到“UGA”结束(不包括“AUG”和“UGA”。)如上面的编码串需解码的有效子串为:AAAAACUUU有效子串中每3个字符(如“AAA”,“CGA”)作为一个密码子(可以保证,有效子串的长度一定为3的整数倍。)可能的密码子(62种)及相应码值以如下形式放在编码文件code.txt中(按密码子字典序排列);AAA KAAC NUUU F请编写C程序对存放在文件中的特殊字符串解码,在屏幕输出解码串。如:KNFKNE要求:1、编码文件code.txt放在c盘根目录下;2、要解码的特殊字符串以文件形式存放,其串长不超过1024字符;3、你编写的程序应能处理命令参数,指定要解码的字符串文件;4、程序中可以使用C语言的标准库函数,不需要写出头文件;5、程序中应有必有的注释。解:#include stdio.h#include string.hstruct char name4;char code;table 62;int main (int argc,char *argv )FILE *code file=NULL, *string file =NULL;char string 1024+2,buffer4,*p,*end ;int I;/* 检查命令行参数*/if (argc=1)/*打开编码文件以及待解码文件*/code file=fopen (c:code. txt,r);string file =fopen (argv1,r);if (code_file= = NULL | | string_file = =NULL) return 1;/* 读编码文件,将结果记入表中 */for (i=0; i62; i+) fscanf(code_file, %s %cn, tabiei, name, &tablei.code);/*读待解码文件内容到string中 */fgets (string, sizeof (string), string_file);/* 扫描有效子串头 */p= strstr(string, AUG);end = strstr (p + 3 , UGA);/*读有效子串,查表输出解码字符,直到子串尾 */for (p+=3; pend; P+=3) for (i=0; i3; i+) buffer i = p i;buffer i =0;for (i=0; i62; i+) if (strcmp (buffer, table ) = = 0) printf(%c, tablei. code); break; /* 关闭编码文件以及待解码文件 */fclose (code_file);fclose (string_file);return 0;3、编写程序模拟数字LED显示。(2005年)编写程序完成如下功能:用户键盘输入最多四位的整数,在屏幕上以类似LED方式显示。如用户输入为:8234则输出其中每个数字字模均为7行4列。0-9+个数字的字模顺序地以文本形式存放在方件C:font.txt中。要求:1、 输出的各数字间有1个空格;2、 你的程序可以使用C语言标准库函数,不需要写出头文件;程序中应有必有的注释。解:char font1075;int n;int digit4;int lenth = 0;/*装载字体文件*/void load_fonts()int i,j,k;FILE *file;file = fopen(c:font.txt,r);if(file = NULL)printf(打开字体文件font.txt错误!n);exit(1);for(k=0;k10;k+)for(i=0;i7;i+)char line10;fgets(line,10,file);for(j=0;j4;j+)fontkij = linej;fontkl4 = 0;fclose(file);/*将输入的整数解码为单个的数字*/void decode()int i;int m = n;for(i=0;i= 4)lenth = 4;/*显示LED*/void display()int i,j;for(i=0;i=0;j-)printf(%s,fontji);printf( );printf( n);int main()load_fonts();scanf(%d,&n);decode();display();4、文件分割程序(2006分)编写程序完成如下功能 :提示输入原始文件、分割后文件名和文件大小,根据输入的参数对原文件进行分割,得到分割后的文件。要求:1 程序中可使用C语言的标准库函数,不需要写出头文件。程序中应有必要的注释。解:void main()FILE *in,*out;char source32,target32;long int len;int num = 1;printf(请输入源文件名:n);scanf(%s,source);if(in = fopen(source,rb) = NULL)printf(打开源文件时失败n);exit(0);while(!feof(in)printf(输入第%d个目标文件名:n,num);scanf(%s,target);if(out = fopen(target,wb) = NULL)printf(打开目标文件时失败!n);exit(0);printf(请输入目标文件的长度:n);scanf(%ld,&len);/*依次读入指定字节数的文件内容,并存入到相应文件中*/for(;len0;len-)char temp = getc(in);if(!feof(in)putc(temp,out);elsebreak;fclose(out);num+;printf(分割文件结果!);5、程序设计 (2007年)HTML文件由标签,标题和正文主体等部分组成,如下图所示:HTML标题部分这里是HTML文件的主体部分。换新行。符号”及其之间的内容是标签,如,等。其它部分是标题和主体。请按以下说明和要求完成程序,将简单的HTML文件转换成TXT文件:(1)程序将HTML文件的所有标签和换行符(n)去掉,标题部分结束(遇到标签)后加上换行符(n)。每一个标签换成一个换行符(n)。其余部分原样保留。如上面的简HTML文件处理为HTML标题部分这里是HTML文件的主体部分。换新行。(2)HTML文件的标签可能由嵌套情况,即在”之间可能会出现”。(3)标签内的内容大小写无关。如,等价。(4)标签的”与标签内容间无空格。即不会出现或等情况。(5)标题和正文不会出现”字符,它们通过转义字实现,这里不考虑。(6)程序必须进行必要的出错处理,如打开文件失败等。(7)程序可以不包括头文件。解:#include #include #include #include #define MAX_FILE_LENGTH 256int main(void)enum tag,other status = other;/*状态变量*/int len;i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63522-31:2025 FR Electrical relays - Tests and measurements - Part 31: Magnetic remanence
- 课件河中石兽
- 口腔机构管理培训
- 随机抽查单词课件
- 课件模式设置
- 幼儿美术颜色课件
- 煤矿防疫培训课件
- 课件最后一页文案壁纸
- 课件显示设置
- 广东高数工专自考试题及答案
- 【音乐】七年级开学第一课音乐课件
- 防火防烟分区检查
- 人工智能在智能体育中的应用
- 服装季度分析报告
- 农产品营销的渠道策略讲义
- 工程总承包(EPC)模式市场应用现状
- 食品安全管理制度小卖部
- 初中语文阅读ppt课件ppt
- 学生上下学交通方式台账
- 建筑垃圾处理及清运方案
- 路边停车经营管理方案
评论
0/150
提交评论