一、程序调试题(文件名)(40分)磁盘上有,其功能是:计算一个英文句子中最长单词的长度max(单词长度即为单词中字母的个数)。
假设该英文句子中只含有字母和空格,在空格之间连续的字母串称为单词,当输入回车符时标志句子结束。
调试程序使之能输出正确的结果。
注意:可以增加和修改程序行,但不得删除程序中的整行。
在一处增加的程序行不得超过两行,不得更改程序的结构。
#include <>int len_max(char *strp){ int max=0,len=0;while(strp!='\0'){ while((*strp>='A'&&*strp<='Z')&&(*strp>='a'&&*strp<='z')){ len++;}if(len<max) max=len;len=0;strp++;}return;}void main(){ char str[100];int maxlen;printf("Input a sentence:\n");gets(str);maxlen=len_max(&str);printf("maxlen=%d\n",maxlen);}二、编写程序(程序文件名为)(60分)请用函数调用方式编写程序,要求::l、写一create函数,功能是:根据形参n的值(1<=n<=10),按如下所示规律构造二维数组下三角的前n行:1579 11 1313 15 17 1917 19 21 23 25………….2、在main函数中输入一整数m(1<=m<=10)并调用create函数,输出该二维数组下三角的前m行。
3、结果要求输出到屏幕和文件中。
一、程序调试题(文件名(40分)磁盘上有,其功能是:把一个正整数各位上的数转换成对应的数字字符,并逆序输出(输出时每个数字字符之后插入一个*号)。
例如:输入256,则输出的字符为6*5*2*注意:可以增加和修改程序行,但不得删除程序中的整行。
在一处增加的程序行不得超过两行,不得更改程序的结构。
#include <>void fun(int m, char s){ int k, i=10;while(m!=0){ k=m/i ;*s=k+"0";s++ ;m=(m-k)/i ;}}void main(){ int x, i;char s[10];scanf("%d", &x);if(x>0){ fun(x, s);for(i=0 ; s ; i++)printf("%c*" , s[i]) ;}else printf("x value error\n");}二、编写程序(程序文件取名为(60分)已知磁盘上的文本文件中包含有3个字符串,每个字符串的长度小于80且3个字符串之间以换行符做分隔。
编写程序要求实现:1. 从文件中读入3个字符串并把它们按升序排序。
2. 将排序后的3个字符串输出到屏幕和追加到原磁盘文件的尾部。
一、程序调试题(文件名(40分)磁盘上已有一文件,其中函数fun的功能是计算两矩阵之乘积。
请改正程序中的错误,使它能计算出正确的结果。
注意:只能修改语句行,不得增加或删除行,也不得更改程序的结构。
#include <>#define M 2#define N 3#define P 2void fun(int a[M][N],b[N][P],c[M][P]){ int i,j,k;for(i=0;i<=P;i++)for(j=0;j<P;j++){ c[i][j]=0;for(k=0;k<n;k++)c[i][j]=a[i][k]*b[k][j];}}void main(){ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2]={{1,2},{3,4},{5,6}};int c[2][2], i, j;fun(*a,*b,*c);for(i=0;i<2;i++){ for(j=0;j<2;j++)printf("%d ",c[i][j]);printf("\n");}}二、编写程序(程序文件名为(60分)用函数调用方式编写程序。
在主函数中提示输入自然数n,调用函数fun,并输出结果。
函数fun用递归的方法求1+2+…+n的值。
要求:1. 将结果显示在屏幕上的同时输出到文件中。
2. 文件名要求从命令行参数给出。
20-1套参考答案:一、程序调试题(文件名)(40分)#include <>int len_max(char *strp){ int max=0,len=0;while(strp!='\0'){ while((*strp>='A'&&*strp<='Z')&&(*strp>='a'&&*strp<='z')) /* 改为|| */ { len++;/* 增加一行语句:strp++; */}if(len<max) max=len; /* 改为len>max */len=0;strp++;}return; /* 改为return max */}void main(){ char str[100];int maxlen;printf("Input a sentence:\n");gets(str);maxlen=len_max(&str); /* 改为str */printf("maxlen=%d\n",maxlen);}二、编写程序(程序文件取名为)(60分)评分标准:1.文件打开、关闭正确2.屏幕结果输出正确3.文件结果输出正确4.函数定义、形参书写正确5.正确定义实参二维数组,并能正确调用creat函数6.函数中对二维数组的处理正确参考程序:# include <>void creat(int a[10][10],int n){ int i,j;for(i=0;i<n;i++)for(j=0;j<=i;j++)a[i][j]=i*4+j*2+1;}main(){ int a[10][10],m,i,j;FILE *fp;fp=fopen("","w");printf("Input m(1~10):");creat(a,m);for(i=0;i<m;i++){ for(j=0;j<=i;j++){ printf("%5d",a[i][j]);fprintf(fp,"%5d",a[i][j]);}printf("\n");fprintf(fp,"\n");}fclose(fp);}20-2套参考答案:一、程序调试题(文件名)(40分)#include <>void fun(int m, char s) /* 改为*s*/{ int k, i=10;while(m!=0){ k=m/i ; /* 改为m%i */*s=k+"0"; /* 改为'0' */s++ ;m=(m-k)/i ;}/*增加一行内容:*s='\0'; */ }void main(){ int x, i;char s[10];scanf("%d", &x);if(x>0){ fun(x, s);for(i=0 ; s ; i++) /* 改为s[i] */printf("%c*" , s[i]) ;}else printf("x value error\n");}二、编写程序(程序文件取名为)(60分)评分标准:1.文件打开和关闭正确2.串的读入正确3.串的排序正确4.文件位置指针定位正确5.屏幕输出和文件输出正确6.程序结构合理参考程序:# include <>main(){ char str[3][80],string[80];int i,j,k;FILE *fp;fp=fopen("","r+");for(i=0;i<3;i++)fgets(str[i],80,fp);printf("The strings:\n");for(i=0;i<3;i++)printf("%s",str[i]);for(i=0;i<2;i++){ k=i;for(j=i+1;j<3;j++)if( strcmp( str[k] , str[j] ) > 0 ) k=j;if(k!=i){ strcpy(string,str[k]);strcpy(str[k],str[i]);strcpy(str[i],string);}}printf("Sorted result:\n");fseek(fp,0,2);for(i=0;i<3;i++){ printf("%s",str[i]);fprintf(fp,"%s",str[i]);}fclose(fp);}20-3套参考答案:一、程序调试题(文件名)(40分)#include <>#define M 2#define N 3#define P 2void fun(int a[M][N],b[N][P],c[M][P]) /* 改为int b[N][P],int c[M][P]*/ { int i,j,k;for(i=0;i<=P;i++) /* 改为i<P */for(j=0;j<P;j++){ c[i][j]=0;for(k=0;k<n;k++) /* 改为k<N */c[i][j]=a[i][k]*b[k][j]; /* 改为+= */}}{ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2]={{1,2},{3,4},{5,6}};int c[2][2], i, j;fun(*a,*b,*c); /* 改为fun(a,b,c) */for(i=0;i<2;i++){ for(j=0;j<2;j++)printf("%d ",c[i][j]);printf("\n");}}二、编写程序(程序文件取名为)(60分)评分标准:1.文件打开和关闭正确2.函数定义、调用和参数使用正确3.屏幕输出和文件输出正确4.递归调用方法正确5.命令行参数使用正确6.程序结构合理参考程序:# include <>int fun(int n){ int f;if(n<1) return 0;else if(n==1) f=1;else f=fun(n-1)+n;return f;}main(int argc,char *argv[]){ int sum,n;FILE *fp;if(argc!=2){ printf("Error!\n");exit(0);}fp=fopen(argv[1],"w");printf("Input n: ");scanf("%d",&n);sum=fun(n);printf("1+2+...+%d=%d\n",n,sum);fprintf(fp,"1+2+...+%d=%d\n",n,sum);fclose(fp);}一、选择题A. 算法的执行效率与数据的存储结构无关B. 算法的空间复杂度是指算法程序中指令(或语句)的条数C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止D. 以上三种描述都不对(2) 以下数据结构中不属于线性数据结构的是(C)A. 队列B. 线性表C. 二叉树D. 栈(3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得A. 8B. 16C. 32D. 15(4) 下面描述中,符合结构化程序设计风格的是(A)A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句(5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58A. 对象B. 继承C. 类D. 过程调用(6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)A. 可行性分析B. 需求分析C. 详细设计D. 程序编码(7) 在软件开发中,下面任务不属于设计阶段的是(D)A. 数据结构设计B. 给出系统模块结构C. 定义模块算法D. 定义需求并建立系统模型(8) 数据库系统的核心是(B)A. 数据模型B. 数据库管理系统C. 软件工具D. 数据库(9) 下列叙述中正确的是(C)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致(10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108A. 内模式B. 外模式C. 概念模式D. 逻辑模式(11) 算法的时间复杂度是指(C)A. 执行算法程序所需要的时间B. 算法程序的长度C. 算法执行过程中所需要的基本运算次数D. 算法程序中的指令条数A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间(13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出A. 349B. 350C. 255D. 351(14) 结构化程序设计主要强调的是(B)A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性(15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段A. 概要设计B. 详细设计C. 可行性分析D. 需求分析(16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。