long n;
printf(“enter a number:\\n”); scanf(“”,&n);
printf(“enter new base:\\n”); scanf(“%d”,&base); do{c=[A]; i++;n=n/base; }while(n!=0);
printf(“transmite new base:\\n”); for(--i;i>=0;--i) { d=c;
printf(“%c”,b); } }
三、 程序设计题(卷面有分)
(1) 从键盘输入10个数,输出其中最大数和最小数。(本题10分)
(2) 求300以内的双素数,并输出,判断一个数m是否为素数的方法如下:让m被2到 除,当且仅当m不能被2~ 之间的任何一个数所整除,则m为素数,而当m为素数,同时m+2也为素数,则m与m+2就是双素数。(本题15分)
(3) 编写一个子程序能将主程序传过来的数组按行分别进行从小到大的排序,再编写一个二分法查找子程序,判定主函数传过来的待查数是否在已排序的数组中,若查找到则返回它在数组中的位置(可以在多个位置出现),否则返回-1。(本题15分)
(4) 利用递归方法找出从自然数1,2,……n中任取r个数的所有组合,并画出程序N-S图,例如n=5,r=3,所有组合为:(本题20分) 5 4 3 5 2 1 5 4 2 4 3 2 5 4 1 4 3 1 5 3 2 4 2 1 5 3 1 3 2 1
(5) 利用单项循环链表和顺序存储结构设计一个算法解决约瑟夫(JOSEHUS)问题。设有N个人围坐一圈,现从某个人开始报数,数到M的人出现,接着从出列的下一个人开始重新报数,数到M的人又出现,如此下去知道所有人都出列为止。试求出他们的出列次序。(本题20分)
(6) 编号为A,B,C,D的四辆列车,顺序开进一个栈式结构的站台。问开出车站的顺序有多少种可能?请具体写出来。
(7) 试将下面的树转换成二叉树,并写出二叉树前序遍历后的结点序列。(本题15分)
2002年南京师范大学地理信息信息系统 C程序设计(含数据结构) 1、简答题(20分)
1)头文件中的ifndef/define/enfif干什么用?
2)#include
4)请简述以下两个for 循环的优缺点。 第一个 第二个
6
For(i=0;i If (condition) DoSomething; else DoOtherthing; } If(condition) { For(i=0;i { for(i=0;i 优点: 优点: 缺点: 优点: 2、写一个程序(1)实现m×n矩阵的转置;(2)矩阵A(m×n)和矩阵B(n×1)的相乘。 3、利用格利高利公式求Л. Л/4=1-1/3=1/5-1/7+……直到最后一项的值小于0.000001为 止。(“Л”表示圆周率) 4、 用一个程序实现表达式括号匹配的合法性检查;对于输入一个字符串,检查其括号的使用是否合法。表达式中允许出现圆括号()、[]、{} ,但这些括号的使用必须匹配。假设输入的表达式两端加上#,即以#开始,当再次遇到#表示字符串输入结束。 5、编写函数stringReverse,取包含字符串的字符数组为参数,逆向打印字符串且不返回任何内容。函数在接收到#终止符时停止处理并返回。 6、编写递归程序recursiveMinimum,取数组和长度为参数并返回数组中最小的元素,当函数在接收但长度为1的数组时停止处理并返回。 7、写一个程序,读入全班学生的学号、姓名、成绩,用冒泡法对学生的成绩由小到大排序,将排序的好的学生纪录输出。 2001年南京师范大学地理信息信息系统 C程序设计(含数据结构) 1、设有4行2列的矩阵A和2行3列的矩阵B,求A和B的乘积C. 2、输入若干姓名,统计各种姓氏的人数。 3、m只猴子要选大王,选取办法如下:所有猴子按1……m编号围坐成一圈,从第一号开始按顺序1、2、3、……、n报数,凡报n号的猴子退出圈外,如此循环报数,直到圈内只剩下一只猴子时,这只猴子就是大王。m和n由键盘输入。 4、写出折半查找的递归算法。 5、写一个函数,以删除指定的链表结点。 6、a和b单项链表的每一个结点中存放一个正整数,并在链表中按由小到大的顺序排列,请写一个过程,把b链表合并到b链表中去,合并后的链表仍然有序。 2000年南京师范大学地理信息信息系统 C程序设计(含数据结构) (说明一下:试题可以采用C语言、C++、Pascal、BASIC或FORTRAN任意一种语言,要求划出算法流程图和写出算法,试卷总分100分) 1、 有一个函数如下: 5X (X<1) Y(X)= 5X-1 (1<=X<10) 7 3X-1 (X>=10) 编写一个程序,输入X,输出结果。要求:①将其显示在屏幕上。②用文本格式写入名为“Result.txt”的文件中。③画出流程图。(20分) 2、“完数”定义:一个数恰好等于它的因子之和。如6的因子是1、2、3,而6=1+2+3,所以6为完数。编程找出1000以内的所有“完数”。要求:①将其显示在屏幕上。②用文本格式写入名为“Result.txt”的文件中。③画出流程图。(20分) 3、 数方阵是这样的一个方阵,它的每行、每列和对角线之和均相等,如三阶幻数方阵 为以下方阵。编写一个算法,求出3阶方阵的所有形式。要求:①将其显示在屏幕上。②用文本格式写入名为“Result.txt”的文件中。③画出流程图。(30分) 8 1 6 3 5 7 4 9 2 4、编写一个算法,从键盘输入某年某月某天,计算出该天是星期几。要求:①将其显示在屏幕上。②用文本格式写入名为“Result.txt”的文件中。③画出流程图。(30分) (提示:一年12个月,1、3、5、7、8、10、12为大月,每月31天;4、6、9、11为小月,每月30天,2月如是闰年为29天,否则28天。每7天为一周。闰年判别:该年能够被4整除、但不能被100整除,该年为闰年;该年能够被4整除、又能被100整除,如果该年还能被400整除,该年为闰年,否则,该年不为闰年。 1999年南京师范大学地理信息信息系统 C程序设计(含数据结构) 二、程序设计 1、 求下列矩阵的转置,并在屏幕上输出(15分) 2、 1 3 5 7 92 6 8 7 10 1 0 8 42。整数N的阶乘记作N!,他为整数1至N的连续乘积,要求从键盘输入一个正整数N,计算出阶乘的结果,并显示(15分) 3、 从键盘若干名学生某门课成绩,同几个分数段成绩的人数,程序运行结果如下(20分)Student's number=[12]input student's scores:[92 87 100 60 94 78 65 52 96 43 100 89]results:100 : 290~99: 380~89: 270~79: 160~69: 20 ~59: 2注:[]中的为用户输入 4、 用筛选发求出3~200只见的所有素数,每5个打印一行,并将结果输出到文件result.dat中要求:1需用循环赋值初始化数组p[n],p[n]内存放3~200中的奇数2用筛选发筛出p[n]中的非素数3打印p[n]并输出到文件中(30分) 2003C语言题: 从N个数中选R个数的所有组合(用递归算法)N=5,R=3时所有组合是543;542;541;532;531;521;432;431;421;321; int comb(int n,int m) { if ((n>=0&&m==0)||(n>=0&&m==n)) return(1); else { if(n>m&&n>=0&&m>=0) return(comb(n-1,m)+comb(n-1,m-1)); else { printf(\值不正确\\n\return(-1); } } } 8 9