1、程序员试题阅读以下程序说明和C程序,将应填入_(n)_ 处的字句,写在答卷的对应栏内。程序说明本程序中的函数factor( m,fac,cp )用来计算正整 m ( m 2 )的除自身以外的所有不同因子的和。该函数返回因子和,并把各因子从小到大依次存放在数组 fac 中,其因子个数存入在 cp 所指的变量中。例如 m=16,求得的因子为(1,2,4,8)提示:因子和为15,因子个数为4。程序假定正整数 m 的不同因子个数不会超过100个。程序# include# define N 100long factor (int m,int fac,int *cp)int c1, c2 , i, k;l
2、ong s;fac0 = 1;for(c1 = s = 1,c2 = N-1,_(1)_;)k = m/i;if (_(2)_)if (_(3)_) facc1+ = i;facc2- = k;s + = i+k;else facc1+ = i;s + = i;i+;if(i=k) brdak;for (c2+;c2 = N-1;c2+)_(4)_;*cp=c1;return _(5)_;答案:1)3分 i = 2,或 cl + 12)3分 m % i = 0 (或 !(m % i) 或 m = i * k )3)3分 i ! = k (或 i k )4)3分 fac cl + = fac c
3、2 答 cl + 给 1 分, = 左右只对一半给 1 分。5)3分 s1.以下不是c语言规定保留字的是( )。(1)float(2)integer(3)signed(4) unsigned2.设int型变量x有初始值3,则表达式x+*5/10的值是( )(1)0(2)1(3)2(4)33.下述程序执行后的输出结果是()#includemain()int x=f;printf(% %cn,a+(x-a+1);(1)G(2)H(3)I(4)J4.设有程序,整理!#includemain()int i,j;for (i=0,j=1;i100)break;(2)for (;);(3)int k=10
4、00;do+k;while (k=10000);(4) int s=36;while (s);-s;答案:1.(2) 2.(2) 3.(1) 4.(3) 5.(3)1.假定a和b为int型变量,则执行下述语句组后,b的值为( )。a=1;b=10;dob-=a;a+; while (b-0);(1)9 (2)-2 (3)-1 (4)82.设有变量说明语句int a=1,b=0;则执行以下程序段的输出结果为( )。switch (a)case 1:switch (b)case 0:printf(*0*);break;case 1:printf(*1*);break;case 2:printf(*
5、2*);break;printf(n);(1)*0* (2)*0*2* (3)*0*1*2* (4)有语法错误3.以下合法的数组说明是( )。(1)char a6=string;(2)int a5=0,1,2,3,4,5;(3)char a=string;(4)INT a=0,12,3,4,5;4.下述程序代码中有语法错误的行是( )。int i,ia10,ib10; /*第一行*/for (i=0;i=xxi)while(!isalpha(*p1)&p1!=xxi)p1-;p2=p1;while( (1) )p1-;if(p1=xxi)if(isalpha(*p1)p1-;else if(!
6、isalpha(*(p1+1)break;p2+;(2) ;strcat(t,p1+1);strcat(t, );strcpy(xxi,t);void main()if( (3) )printf(数据文件in.dat不能打开!n007);return;StrOL();writeDat();getch();int ReadDat(void)FILE*fp;int i=0;char*p;if(fp=fopen(e:ain.dat,r)=NULL)return 1;while(fgets(xxi,80,fp)!=NULL)p=strchr(xxi,n);if(p)*p=0;i+;maxline= (
7、4)fclose(fp);return 0;void WriteDat(void)FILE*fp;int i;fp=fopen(e:aout6.dat,w);for(i=0;idata(4) ;小于查找左子树else if(tree-data(5) ;大于查找左子树else return tree;return tree;【答案】(1)p=p-left(2)p=p-right(3)return P(4)return SearchSortTree(tree-left)(5)return SearchSortTree(tree-right)试题三假设以带头结点的单循环链表作非递减有序线性表的存储结
8、构。函数deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。例如:链表初始元素为:(7,10,10,21,30,42,42,42,51,70)经算法操作后变为:(7,10,21,30,42,51,70)【函数1】void deleteklist(LinkList head)LinkNode*p,*q;p=head-next;while(p!=head)q=p-next;while( (1) )(2) ;free(q);q=p-next;p=p-next;【说明2】已知一棵完全二叉树存放于一个一维数组Tn中,Tn中存放的是各结点的值。下面的
9、程序的功能是:从T0开始顺序读出各结点的值,建立该二叉树的二叉链表表示。【函数2】#includetypedef struct node int data;stuct node leftChild,rightchild;BintreeNode;typedef BintreeNode*BinaryTree;void ConstrncTree(int T,int n,int i,BintreeNode*&ptr)if(i=n) (3) ;置根指针为空elseptr=-(BTNode*)malloc(sizeof(BTNode)ptr-data=Ti;ConstrucTree(T,n,2*i+1,
10、(4) );ConstrucTree(T,n, (5) ,ptr-rightchild);main(void)/*根据顺序存储结构建立二叉链表*/Binarytree bitree;int n;printf(please enter the number of node:n%s;n);int*A=(int*)malloc(n*sizeof(int);for(int i=0;i for(int i=0;iN;I+)PRINTF(%D,AI); ConstructTree(A,n,0,bitree);答案:(1)q!=head &q-data=p-data(2)p-next=q-next(3)pt
11、r=NULL(4)ptr-leftchild(5)2*i+2试题四阅读下列函数说明和C函数,将应填入 n 处的字句写在答题纸的对应栏内。函数2.1说明函数strcat(char s, char t)的功能是:将字符串t复制连接字符串s的尾部,并返回新字符串的首地址作为函数值。例如:若s=“abcd”,t=“efg”,则新字符串应该是“abcdefg”。函数2.1char *strcat(char s, char t) char *p;p = s + strlen(s)-1while( (1) ) (2) ;*p = 0;return s;函数2.2说明函数f(char *str, char d
12、el)的功能是:将非空字符串str中的指定字符del删除,形成一个新字符串仍存放在str所指内存单元中。例如若str的值为“33123333435”,del的值为3,调用此函数后,新字符串为:“1245”。函数2.2void f(char *str, char del)int i, j, len;len=strlen(str);i=j=0;while(iif ( (3) )(4) = stri;i+;(5) ;试题五阅读以下说明和C代码,将应填入 n 处的字句写在答题纸的对应栏内。说明下面程序中函数fun的功能是:在含有10 个元素的s数组中查找最大数,及最大数所在位置 (即,下标值),最大数
13、可能不止一个。最大数作为函数值返回,最大数的个数通过指针变量n传回,所在位置由数组pos传回。例如:若输入 2 8 5 7 8 4 5 3 2 8则应输出:The max: 8Total: 3 /最大数出现次数The positions: 1 4 9#include#define M 10int fun(int *a, int *n, int pos) int i, k, max=-32767;(1)for(i=0; iif( (2) ) max=ai;for(i=0; iif( (3) ) posk+=i;*n=k;return max;main() int aM, posM, i=0, j
14、, n;printf(Enter 10 number :);for(i=0; ij=fun( (5) );printf(The max: %dn, j);printf(Total: %d,n);printf(The position:);for(i=0; iprintf(n);阅读以下程序说明和C程序,将应填入_(n)_ 处的字句,写在答卷的对应栏内。程序说明本程序中的函数factor( m,fac,cp )用来计算正整 m ( m 2 )的除自身以外的所有不同因子的和。该函数返回因子和,并把各因子从小到大依次存放在数组 fac 中,其因子个数存入在 cp 所指的变量中。例如 m=16,求得的
15、因子为(1,2,4,8)提示:因子和为15,因子个数为4。程序假定正整数 m 的不同因子个数不会超过100个。程序# include# define N 100long factor (int m,int fac,int *cp)int c1, c2 , i, k;long s;fac0 = 1;for(c1 = s = 1,c2 = N-1,_(1)_;)k = m/i;if (_(2)_)if (_(3)_) facc1+ = i;facc2- = k;s + = i+k;else facc1+ = i;s + = i;i+;if(i=k) brdak;for (c2+;c2 = N-1;
16、c2+)_(4)_;*cp=c1;return _(5)_;答案:1)3分 i = 2,或 cl + 12)3分 m % i = 0 (或 !(m % i) 或 m = i * k )3)3分 i ! = k (或 i k )4)3分 fac cl + = fac c2 答 cl + 给 1 分, = 左右只对一半给 1 分。5)3分 s1.以下不是c语言规定保留字的是( )。(1)float(2)integer(3)signed(4) unsigned2.设int型变量x有初始值3,则表达式x+*5/10的值是( )(1)0(2)1(3)2(4)33.下述程序执行后的输出结果是()#incl
17、udemain()int x=f;printf(% %cn,a+(x-a+1);(1)G(2)H(3)I(4)J4.设有程序,整理!#includemain()int i,j;for (i=0,j=1;i100)break;(2)for (;);(3)int k=1000;do+k;while (k=10000);(4) int s=36;while (s);-s;答案:1.(2) 2.(2) 3.(1) 4.(3) 5.(3)1.假定a和b为int型变量,则执行下述语句组后,b的值为( )。a=1;b=10;dob-=a;a+; while (b-0);(1)9 (2)-2 (3)-1 (4
18、)82.设有变量说明语句int a=1,b=0;则执行以下程序段的输出结果为( )。switch (a)case 1:switch (b)case 0:printf(*0*);break;case 1:printf(*1*);break;case 2:printf(*2*);break;printf(n);(1)*0* (2)*0*2* (3)*0*1*2* (4)有语法错误3.以下合法的数组说明是( )。(1)char a6=string;(2)int a5=0,1,2,3,4,5;(3)char a=string;(4)INT a=0,12,3,4,5;4.下述程序代码中有语法错误的行是(
19、 )。int i,ia10,ib10; /*第一行*/for (i=0;i=9;i+) /*第2行*/ia=0; /*第3行*/ib=ia; /第4行*/(1)第1行 (2)第2行 (3)第3行 (4)第4行5.若已定义int a9,*p=a;提示:在以后的语句中未改变p的值,则不能表示a1地址的表达式是( )。(1)p+1 (2)a+1 (3)a+ (4)+p答案:1.(4) 2.(2) 3.(4) 4.(4) 5.(3)1.假定a和b为int型变量,则执行下述语句组后,b的值为( )。a=1;b=10;dob-=a;a+; while (b-0);(1)9 (2)-2 (3)-1 (4)82设有变量说明语句int a=1,b=0;则执行以下程序段的输出结果为( )。switch (a)case 1:switch (b)case 0:printf(*0*);break;case 1:printf(*1*);break;case 2:printf(*2*);break;printf(n);(1)*0* (2)*0*2* (3)*0*1*2* (4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1