北方民族大学c语言实验习题.pdf
1. 数据类型数据类型 a.输入一个小数点后有多位数字的小数,实现将其保留三位小数, 并输出;3.141593.142, 10.123456 10.123 b. 输入一个 4 位整数,求其得各位数字的平方和; (1234 1491630). c.定义字符型变量 ch,写出六种给 ch 赋值字符A的代码; d. 编写程序输出 26 组大小写字母; (AaBbCc.XxYyZz) e.定义浮点型变量 f1、f2,为 f1 赋值 10 的-30 次,为 f2 赋值 10 的 30 次 f.定义一个单精度浮点型变量 f 和一个双精度浮点型变量 d, 为 f 和 d 都赋值 3.14159265358979323846264338327950288,输出 f 和 d 得值,要求保留 20 位小数,观察输出结果; g. 输入华氏温度求摄氏温度。转换公式为 c5/9(f-32) ,输出结果 取两位小数。 2. 分支结构分支结构 a.输入三角形得三个边的边长,以此判断能否组成三角形,是什么 形状的三角形; (等边三角形、等腰三角形、直角三角形、等腰直 角三角形、一般三角形) b. 输入一个年份值,判断是否为闰年; c.输入 a、b、c 三个整型变量,分别使用 if 语句和条件运算符求出 三个数的最大值和最小值; d. 输入任意实数,求出其所对应的函数值(调用数学函数库) 。 ze 的 x 次幂(x10 zlogx3 x-3bu 会 zsinx/cosx4 e.输入一个成绩,输出此成绩对应的级别; (优、良、中、及格、不 及格) ,要求分别使用 if 语句和 switch 语句; f.判断一个字符是否为字母或者数字;bu 会 g 使用条件运算符实现让 c 等于 a、b 中较大的,d 等于 a、b 中较小 的,e 等于 a 的绝对值。 h 读入一元二次方程的三个系数,a,b,c,求出各种情况下方程的根, 无解或输入数据不正确输出提示信息不会 3. 循环结构循环结构 a.编写程序实现 1234n,n 由用户输入; b. 修改程序 1,实现 135792*n-1; c.修改程序 1,实现 2468102*n; d. 修改程序 2,实现 11/31/51/71/2*n-1; e.修改程序 4,实现 1-1/31/5-1/71/2*n-1; f.编程实现 1*2*3*4*5*.n; g. 编程实现 输入 n,判断 n 是不是质数; h. 求 sumdddddddd.dn 个 d,其中 d 为 1-9 的数字,d 和 n 输入。 i.用一元五角钱兑换人民币 5 分、2 分和 1 分的硬币(要求每种至 少有一个)共 100 枚,请输出每种具体的兑换方案以及共有多少 种方案。 j.编程输出下三角式的九九乘法表. k. 输出斐波那契数列的前 20 项,该数列的前两项都是 1,以后各项 是前两项之和。 l.实现 123.n,n 由用户输入; m. 实现 1(12)(123)(1234).(1234.n) , n 由用户输入; n. 求 1 到 100 之间的偶数之积; o. 输入 n 和 m,求出他们的最大公约数和最小公倍数; p. 在屏幕上输出以下图形,要求使用循环嵌套实现 1. * * * * * 2. * * * 3. * * * 4. * * * 5. * * * 6. * * * * 4. 函数调用函数调用 a.编写一个函数,返回一个整数的绝对值.; b. 编写一个函数,判断一个整数是否为素数,如果是则返回 1,否 则返回 0.; c. 编写一个函数,找出一个大于给定整数且紧随这个整数的素数。 d. 通过调用素数函数,实现求出 1000 以内所有素数的和; e. 通过调用素数函数,验证哥德巴赫猜想在 10000 以内有效; f. 编写一个函数,求一个整型数的各位数字的立方和; g. 编写函数 fun 计算并返回分段函数的值 x2x6x0 且 x-3 fx x2-5x60 x10 且 x2 及 x3 x2-x-1其它 h. 编写一个函数,用递归法求阶乘; i. 编写一个函数,用递归法求 fibonacci 数列的的前 n 项,n 为形 参; j. 编写一个函数,在函数中定义一个静态局部变量 count,统计该 函数被调用的次数; k. 编写一个函数,参数为整型 n,输出 n 行的菱形;例如 n7,则图 形为 * * * * * * * 5. 一维数组一维数组 a.建立一个整型数组,在定义数组的时候为数组初始化任意 10 数 字,体会初始化的用法; a 建立一个长度为 10 的一维整型数组,提示用户为数组输入数 据; b 求出数组的最大值、平均值; b. 将数组分别使用选择排序法和冒泡排序法排序,并输出排序后的 数组; c.建立一个字符数组, 将 26 个小写字母保存到数组中, 并逆序输出; d. 用数组保存 fibonacci 数列的前 20 项; 6. 二维数组二维数组 a.建立一个 5 行 5 列的二维数组,提示用户输入数组的值,分别按 照先行后列和先列后行的顺序输入相同值; 将数组显示到屏幕上, 按矩阵显示;观察两种读入顺序的不同; b. 求出二维数组的主对角线之和、副对角线之和; c.求出数组的上三角的平均值和下三角的平均值; d. 求出矩阵的周边元素之和; e.判断矩阵是不是上三角矩阵;判断矩阵是不是下三角矩阵; f.将矩阵转置,输出转置后的矩阵; g. 建立一个二维数组,将九九乘法表保存到数组中并且输出出来; h. 建立一个二维数组,数组的第一行保存 26 个小写字母,第二行保 存 26 个大写字母; i.建立二维数组 a43,并为数组输入值,求出数组每行的最大值保 存到数组 b4中,求出数组每列的最大值,并保存到数组 c3中; 7. 字符串字符串 a.输入一个字符串,以回车作为结束标志,并将字符串输出出来; b. 输入一个字符串,再输入一个字符,统计该字符在字符串中出现 的次数; c.输入一个字符串,统计字符串中字母、数字、空格出现的字数; ; d. 输入一个字符串,再输入一个字符,然后将该字符在字符串出现 的第一个删除掉,输出删除后的字符串; e.输入一个字符串,再提示用户输入两个整型值 n、m,要求将字符 串第 n 个字符开始,删除 m 个字符,输出删除后的字符串; f.输入一个字符串,再提示用户输入一个字符 x,和一个整型值 n, 要求 n 小于字符串的长度,将 x 插入到下标为 n 的位置,输出插 入后的字符串; g. 提示用户输入两个字符串保存到字符数组 str1 和 str2 中,再输入 一个整型值 n,将 str2 代表的字符串插入到 str1 中下标为 n 的位 置,输出插入后的字符串; h. 输入一个字符串,将字符串逆序,输出逆序后的字符串; i.已有两个字符串,分别保存在字符数组 str180和 str23中,统计 在 str1 保存的字符串中 str2 保存的字符串出现了多少次; (str2 中 的字符串长度为 2) j.输入一个字符串,以回车作为结束标志,然后将字符串中的字符 排序 (依照 ASCII 码的大小由低到高) , 并将排序后的字符串输出 出来; 8. 指针和函数指针和函数 a.编写函数实现 void funcint a,int b,int c,int *pmax,int *pmin,float *pavg ,求出 a,b,c 的最大值和最小值、平均值通过指针返回; b. 编写函数 void swapint *x , int *y 交换想 x 和 y 指向变量的值; c.编写函数 int aSumint *a ,int n 求出 a 所指向数组的前 n 项的和; d. 编写函数 void cpyStrchar *stra,char *strb,将字符串 strb 复制给 stra 所指向的空间; e.编写函数void catStrchar *stra,char *strb, 将字符串strb连接到stra 所指向的字符串的后面; f.编写函数 int cmpStrchar *stra,char *strb,将字符串 strb 和 stra 进 行比较; g. 编写函数 void insertchar *stra,char ch,int n,将将字符 ch 插入到 字符串 stra 中第 n 个位置; h. 编写函数 int lenStrchar s,求字符串的长度; i.编写函数 int findChchar *str , char ch,找出字符 ch 在字符串 str 中出现的第一个位置;编写函数 void funcchar *str,将 str 所指向字符串中的所有大写字母全变成小写字母; j.编写函数 int funcchar *str,将字符串中所有的数字字符删除掉, 并将新生成的字符串的长度作为返回值;比如 “abc123xyz” 过 滤后 “abcxyz”返回值为 6 k. 编写函数 void findChchar *str , char ch,判断字符 ch 是否与 str 所指串中的某个字符相同; 若存在相同,什么也不做,若不同, 则将其插在串的最后。 l.编 写 函 数intfuncintn , 函 数 返 回 值 为 sum1121231234.1234.n m. 编写函数 int funcint a,int n,int b,将 b 插入到一个已按 降序排好的数组 a 中,a 中现在有 n 个元素,要求插入后的数组 仍然是降序的; n. 请编写函数 void fun(char *str),对字符串,按降序排列。例 如原来的字符串为 CEAedcab,排序后输出为 edcbaECA。 o. 请编写函数 void fun(char *s,char *t) ,将 s 所指字符串的 正序和反序进行连接,形成一个新串放在 t 所指的数组中。例如 当 s 串为“ABCD“时,则 t 串的内容应为“ABCDDCBA“。 p. 9. 算法补充算法补充 a. 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 4 报数) ,凡报到 4 的人退出圈子,问最后留下的是原来第几号的那 位。 (建议用链表实现) b. 读入一个英文文本行,将其中每个单词的第一个字母改成大写, 然后输出此文本行(这里的“单词”是指由空格隔开的字符串) 。 例如若输入“i am a student to take the examination.”, 则应输出“I Am A Student To Take The Examination.”。 c. 有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变 成最前面的 m 个数。 d. 给定 n 个实数,输出平均值,并统计在平均值以下(含平均值) 的实数个数。 e. 将一个正整数分解质因数。例如输入 90,打印出 902*3*3*5 f. 打印出杨辉三角形(要求打印出 10 行) g. 求广义菲玻那契级数的第n项。 广义菲玻那契级数的前n项为1, 1,1,3,5,9,17,31, h. 例如若 n 15,则应输出The value is 2209。 i. 在字符串 str 中找出 ASCii 码值最大的字符,将其放在第一个位 置上,并将该字符的原字符向后顺序移动。例如调用 fun 函数 之前给字符串输入ABCDeFGH,调用后字符串中的内容为 eABCDFGH。 j. 猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还 不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。 到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了 多少。 k. 一个自然数被 8 除余 1 ,所得的商被 8 除也余 1 ,再将第二 次的商被 8 除后余 7 ,最后得到一个商为 a。又知这个自然数被 17 除余 4 , 所得的商被 17 除余 15, 最后得到一个商是 a 的 2 倍。 编写程序求这个自然数。 l. 用二分法求方程 2X34X23X-60 在(-10,10)之间的根 ,其 中 Xn 代表 X 的 n 次方。 m. 已知 X、Y、Z 分别表示 09 中不同的数字,编程求出使算式 XXXXYYYYZZZZYXXXZ 成立时 X、Y、Z 的值,并要求打印该算式。 n. 输出 1 到 100 之间每位数的乘积大于每位数的和的数。例如数 字 26,数位上数字的乘积 12 大于数字之和 8。 o. 求 100999 之间的水仙花数说明 水仙花数是指一个三位数的各 位数字的立方和是这个数本身。 p. 编写一个函数求任意给两个日期(Y0 年 M0 月 DO 日和 Y1 年 M1 月 D1 日)相差的天数。