![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
中国地质大学(北京)程序设计实习代码及大作业
主要的是实习题的答案,如果有更好的解法,欢迎补充,瑕疵是某些地方用来C语言,不是C++,但C语言是其子集,这些实习题里用用到C语言的无非就是scanf,和printf,分别对应着cin,和cout。暑假假期我会把代码规范为完全的C++语法(实际上含C语言的语法,也可说是完全的C++语法……)
符义的博客
平淡的时光随风而逝,无人聆听。
展开
-
7-31 10.3.5 D进制加法 (20分)
D进制的A+B:输入两个非负10进制整数A和B,输出A+B的D (1 < D <= 10)进制数,即将十进制数A+B的和转换成D进制数输出。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103#include<stdio.h>int main(){ int a[81],n=0,A,B,N; scanf("%d %d %d",&A,&B,&N);原创 2020-09-08 23:50:36 · 1079 阅读 · 3 评论 -
7-30 10.3.4 个数统计 (20分)
个数统计:给定一个k位整数,请编写程序统计每种不同的数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入格式:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。输入样例:100311输出样例:0:21:33:1#include<stdio.h>#include<string.h>int main(){原创 2020-09-08 23:32:02 · 855 阅读 · 0 评论 -
中国地质大学(北京),程序设计练习题“幻方”。
#include<iostream>using namespace std;int a[15][15];//全局变量,主函数和自定义的函数都可以使用。//构造幻方void gouzao(int n){ for(int j=0;j<n;j++) for(int i=0;i<n;i++) a[j][i]=0; int i=1,row=0,col=n/2,row1,col1; while(i<=n*n) { row1=row;col1=col;//记录初始位置原创 2020-09-08 22:41:16 · 823 阅读 · 0 评论 -
信息抽取
输入一行字符串,可以带有空格。然后判断出里面的大小写,然后按要求输出。如下图源代码#include<iostream>using namespace std;//有同学反映不能完全得分,卡在了某一部测试点,显示运行超时……没有提示//所以很难改动,前面学习字符串时也就看一眼就过,不扎实,后面复习我会再来改动,找出问题并解决//如果有人知道问题所在,欢迎批评。ps.我太菜了int main(){ char da[79],xiao[79],ch; int j=0,k=0; c原创 2020-06-21 10:52:38 · 463 阅读 · 1 评论 -
5 输出范围内的字符及ASCII码 (20分)
输出范围内的字符及ASCII码。从键盘输入2个整数[0~127],按顺序输出范围内的整数及其对应的字符。输入格式:一行中输入2个整数(第1个整数小于等于第2个整数),以空格分隔,2个整数的取值范围是合法的ASCII码整数(0~127)输出格式:输出所有整数范围内内的整数及其对应的ASCII码字符,每行输出5个;若第1个整数大于第2个整数则无输出;若任意一个整数对应的不是合法ASCII码则无输出。输入样例1:48 57输出样例1:48,0;49,1;50,2;51,3;52,4;5原创 2020-06-19 16:32:54 · 1686 阅读 · 0 评论 -
4 自定义函数计算水果的价格 (20分)
本题要求自定义函数,计算水果的价格。水果单价的设置规则为:水果类型包括苹果、香蕉、梨,分别用整数1、2、3表示水果类型。水果单价分为普通价格和会员价格。其中:苹果单价6.99元,会员价5.99元;香蕉单价4.99元,会员价3.99元;梨单价3.99元,会员价1.99元,除此之外水果的单价与会员价均为0。函数接口定义: double cost(int type, double num, char isMember='N');type表示水果的类型,1表示苹果,2表示香蕉,3表示梨;num 表原创 2020-06-19 16:25:30 · 4340 阅读 · 0 评论 -
5.3.4 素数 (20分)
编写函数isPrime,判断某个正整数(大于等于2)是否为素数,函数返回bool类型参数。函数接口定义:bool isPrime(int mum);其中 mum是用户传入的参数,值为非负整数。当num是素 数时函数返回true,不是素数时返回false。裁判测试程序样例:#include <iostream>#include<cmath>using namespace std;bool isPrime(int num);int main(){ int n原创 2020-06-12 12:27:50 · 2479 阅读 · 0 评论 -
6-6 5.3.2 求pai值 (20分)
编写函数,根据下面公式求 的值(要求最后一项小于0.00000001时停止计算)。函数无需传入参数,返回值类型为double。主函数输出时保留7位小数。函数接口定义:double pai();无用户传入参数。裁判测试程序样例:#include<iostream>#include<iomanip>using namespace std;double pai();int main(){ cout<<fixed<<setprecision原创 2020-06-12 12:15:46 · 3279 阅读 · 0 评论 -
4.3.4 水仙花数 (20分)
水仙花数是指一个三位正整数,它的每个位上的数字的3 次幂之和等于它本身。例如:153=13+53+53,则153 是水仙花数。 本题要求编写一个函数判断给定整数是否是水仙花数。函数接口定义:bool narcissistic( int number );number 是用户传入的参数。裁判测试程序样例:#include <iostream>using namespace std;bool narcissistic( int number );int main(){原创 2020-06-12 12:06:58 · 1904 阅读 · 0 评论 -
4.3.2 海伦公式求面积 (20分)
编写函数getArea,传入三角形的三条边长作为参数,利用海伦公式计算三角形的面积(保留小数点后2位 )。【海伦公式】若三角形的三个边长为a、b、c,设s=(a+b+c)/2,则三角形面积为:area = sqrt(s(s-a)(s-b)(s-c))。编写函数validate,传入3 个边长作为参数,判断是否构成有效三角形,若能构成有效三角形,函数返回true,否则返回false。函数接口定义:double getArea(double a, double b,double c);bool vali原创 2020-06-12 11:56:44 · 3064 阅读 · 0 评论 -
10.3.1 字符串长度 (20分)
编写函数strLength,计算字符串的实际有效字符的个数,函数传入参数为字符串的起始地址,返回字符串中有效字符数量。函数接口定义:int strLength(char str[]);其中 str是存储字符串的数组。裁判测试程序样例:#include<iostream> using namespace std;int strLength(char str[]);int main(){ char s[100]; cin.getline(s,100); cout<&原创 2020-06-12 11:41:09 · 3516 阅读 · 0 评论 -
12.3.2 求两点间的距离 (20分)
实现1个简单的二维点类。构造函数可以用初始化列表实现对数据成员的初 始化。(1)实现各个成员函数。(2)实现Point 类中的成员函数getDistance,计算两点之间距离。(3)定义普通函数getDistance,计算2 点之间距离从键盘输入两点的坐标,分别用成员函数和普通函数计算这两点的距离。类的定义:class Point{ public: Point( double newX=0, double newY=0); void setValue(double newX, dou原创 2020-06-12 11:38:23 · 3103 阅读 · 0 评论 -
14.3.3 字符串比较 (20分)
编写函数,实现2个字符串(串长小于80)按照词典顺序的比较。函数接口定义:int stringcmp(char *s1,char *s2);其中 s1 指向字符串1,s2指向字符串2, 如果s1 和s2 相等,函数返回0, 如果s1和s2 不等,返回2 个字符串中从左向右第一个不相等字符的ASCII 码差值,若果s1>s2,返回正值,若果s1<s2,返回负值。裁判测试程序样例:#include <iostream>using namespace std;int st原创 2020-06-12 11:36:26 · 2448 阅读 · 0 评论 -
14.3.2 删除字符串中的指定字符 (20分)
编写函数deleteChar,用于删除字符串(传长不超过100)中指定的字符,将字符 串中与指定字符(非空格字符)相同的字符全部删除。函数接口定义:void deleteChar(char *s, char c);其中 s 是用户传入的字符数组的首地址,c是待删除的字符。裁判测试程序样例:#include <iostream>using namespace std;void deleteChar(char *s, char c);int main(){ char *原创 2020-06-12 11:33:14 · 4096 阅读 · 1 评论 -
7.3.4 删除数组元素 (20分)
编写函数,删除数组中指定位置处的元素。删除数组中的某个元素时,其后的所有元素需要顺序向前移动。函数接口定义:void delNum(int a[],int n,int x);其中 a是待删除元素的数组,n是删除前数组元素的个数,x为待删除元素的位置(从0开始数)。裁判测试程序样例:#include<iostream>using namespace std;void delNum(int a[],int n,int x);int main(){ const int N=10原创 2020-06-12 11:25:48 · 2929 阅读 · 0 评论 -
11.3.4 非负整数排序 (20分)
一个不超过100位的非负整数n,将其各个位上的数字按升序排列,组成一个新数。注意:正整数的首位不为0.输入格式:在一行里输入一个非负整数n(不超过100位)输出格式:输入程序排列后的整数。输入样例:在这里给出一组输入。例如:265123输出样例:在这里给出相应的输出。例如:122356#include<iostream>using namespace std;#include<string.h>int main(){ bool pandu原创 2020-06-11 23:05:43 · 3100 阅读 · 0 评论 -
11.3.2 两个字符串的合并 (20分)
有一个已经排好序的字符串str,要求将另一个字符串a中的每个字符按升序的规律插入到str中。输入格式:在一行输入一个串长不超过20的有序字符串str。(字符串不包括空格、制表符、换行符等空白字符) 在第二行输入待插入的字符串a(字符串不包括空格、制表符、换行符等空白字符,串长不超20)。输出格式:输出新的有序字符串。输入样例:在这里给出一组输入。例如:cefhiknowxfbla输出样例:在这里给出相应的输出。例如:abceffhiklnowx#include<stdi原创 2020-06-11 23:02:13 · 3627 阅读 · 0 评论 -
10.3.5 D进制加法 (20分)
D进制的A+B:输入两个非负10进制整数A和B,输出A+B的D (1 < D <= 10)进制数,即将十进制数A+B的和转换成D进制数输出。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103#include<stdio.h>int main(){ int a[81],n=0,A,B,N,t; scanf("%d %d %d",&A,&B,&原创 2020-06-11 22:59:56 · 862 阅读 · 0 评论 -
10.3.4 个数统计 (20分)
个数统计:给定一个k位整数,请编写程序统计每种不同的数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。输入格式:每个输入包含1个测试用例,即一个不超过1000位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。输入样例:100311输出样例:0:21:33:1#include<stdio.h>#include<string.h>int main原创 2020-06-11 22:58:18 · 2089 阅读 · 0 评论 -
10.3.2 回文 (20分)
编写程序,输入1个字符串,判断并输出该字符串是否是回文串。如果一个字符串从前往后和从后往前读的结果是一样的,该字符串称为回文,如“abcba”就是回文。输入格式:一个字符串(长度不超过99)输出格式:字符串是否为回文输入样例1:abcba输出样例1:abcba是回文输入样例2:abc输出样例2:abc不是回文#include <iostream>#include <string.h> #define MAXN 99 bool pali原创 2020-06-11 22:53:45 · 3421 阅读 · 3 评论 -
9.3.5 幻方 (20分)
在《射雕英雄传》中郭黄二人被裘千仞追到黑龙潭,躲进瑛姑的小屋。瑛姑出了一道题:数字1~9填到三行三列的表格中,要求每行、每列、及两条对角线上的和都相等。这道题难倒了瑛姑十几年,被黄蓉一下子就答出来了。编码实现n阶(n为正奇数)幻方。本题检测算法(n为奇数时):1)将1放在第一行中间一列;2)从2开始直到n×n止各数依次按下列规则存放:按45°方向行走,如向右上;每一个数存放的行比前一个数的行数减1,列数加1。3)如果行列范围超出矩阵范围,则回绕,例如1在第1行,则2应放在最后一行,列数同样加1。原创 2020-06-11 22:43:22 · 2843 阅读 · 0 评论 -
9.3.4 杨辉三角 (20分)
编写程序,从键盘输入杨辉三角的行数n(n<=15),输出杨辉三角。输入格式:输入行数n(1≤n≤15)。输出格式:n行杨辉三角,每个数据占5列。输入样例:5输出样例:11 11 2 11 3 3 11 4 6 4 1int main(){ int n; scanf("%d",&n); int a[n][n]; for(int i=0;i<n;i++)原创 2020-06-11 22:30:01 · 3328 阅读 · 6 评论 -
9.3.3 二维数组最大值 (20分)
编程求出一个m行n列矩阵中最大值,以及其所在的行号和列号(从0开始),输入的元素各不相同。输入格式:输入在第1行中给出m,n(1≤m≤20,(1≤n≤20),在第2~m+1行中每行中给出n个整数,数字间以空格分隔。输出格式:第一行最大值 第二行最大值的行号 第三行最大值的列号输入样例:3 52 7 9 8 15 4 3 19 1217 22 11 4 6输出样例:2221#include<stdio.h>int main(){ int m,n,f,原创 2020-06-11 22:04:12 · 4843 阅读 · 4 评论 -
9.3.2 行列转置 (20分)
编程实现将一个二维数组行和列元素互换,存到另一个二维数组中。输入格式:输入在第1行中给出m,n(1≤m≤20,(1≤n≤20),在第2~m+1行中每行中给出n个整数,数字间以空格分隔。输出格式:行列转置后的二维数组,每个数据占5列(题目保证每个数据不超过5列 )。输入样例:3 52 7 9 8 15 4 3 9 27 2 1 4 6输出样例:2 5 77 4 29 3 18 9 41 2 6#inc原创 2020-06-11 21:58:34 · 1782 阅读 · 0 评论 -
7-7 8.3 排序 (20分)
将从键盘输入的n个整数进行由小到大排序(不限排序方法) 。输入格式:输入在第1行中给出n(1≤n≤100),在第2行中给出n个待排序的整数,数字间以空格分隔。输出格式:输出排序后的结果,用空格分隔(最后一个数据后也有一个空格)。输入样例:55 4 2 1 3输出样例:1 2 3 4 5#include<stdio.h>int main(){ int n,f,i,j,k,t; scanf("%d",&n); int a[n];原创 2020-06-11 21:54:35 · 2801 阅读 · 0 评论 -
7.3.3 数组逆序 (20分)
编写程序,将数组中的元素逆序。程序应包括以下几个部分:通过键盘输入数据、逆序处理、输出逆序后的结果。输入格式:两行:第一行为数组元素的个数n (0<n<100),第二行为n个数字。输出格式:逆序后的n个元素,每个数据占4列。输入样例:51 2 3 4 5输出样例:5 4 3 2 1#include<stdio.h>int main(){ int n,i,j; scanf("%d",&n); int a[n原创 2020-06-11 21:37:39 · 6927 阅读 · 0 评论 -
7-5 6.3.5 打印沙漏 (20分)
打印沙漏:本题要求你写个程序把给定的符号打印成沙漏的形状。所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。输入样例:19 *输出样例:原创 2020-06-11 21:34:06 · 1496 阅读 · 0 评论 -
7-4 6.3.4 打印数字三角 (20分)
请输出下列图形:12 23 3 34 4 4 45 5 5 5 5…要求:从键盘输入行数。输入格式:输入1-10之间的行数。输出格式:每种数一行,每个数占3列。输入样例:5输出样例:12 23 3 34 4 4 45 5 5 5 5 #include<stdio.h> main(){ int hang=0; scanf("%d",&hang); for(int i=1;i<=hang;i++) {原创 2020-06-11 21:24:01 · 2630 阅读 · 0 评论 -
7-3 6.3.3 完数 (20分)
求1000以内的完数。说明:一个数如果恰好等于它的因子之和(自身除外),则称该数为完数,例如6=1+2+3,则6为完数。输入格式:无输出格式:每行输出1个完数及其所有因数(不包括自身的因数)。输入样例:无部分输出样例:6=1+2+3… #include<stdio.h> int main() { int jhe=0; for(int i=2;i<=1000;i++,jhe=0) { for(int j=1;j<=i/2;j++) if(i原创 2020-06-11 21:22:04 · 3340 阅读 · 0 评论 -
7-2 6.3.2 100-200之间素数 (20分)
通过循环计算并输出从100开始到200之间的素数,记录程序代码。输出时每5个素数占1行。输入格式:无输出格式:每行输出5个素数,每个数据占4列。输入样例:无部分输出样例:101 103 107 109 113127 131 137 139 149…#include<stdio.h>int main(){ bool isPrime(int num); int i,k=0; for(i=100;i<=200;i++) if(isPr原创 2020-06-11 21:20:35 · 2553 阅读 · 0 评论 -
7-1 6.3.1 百马百担 (20分)
用100匹马驮100担货物,大马驮3担,中马驮2担,2匹小马驮1担,问大、中、小马各有多少匹?编写程序,输出所有的可能,大、中、小马的匹数可以为0。按大马匹数由小到大排序。输入格式:无输出格式:每行输出一组符合要求的大、中、小马的匹数。输入样例:无部分输出样例:2 30 685 25 70…#include<iostream>using namespace std;int main(){ int i,j,k; for(i=0;i<=40;原创 2020-06-11 21:17:51 · 1963 阅读 · 1 评论 -
7-1 计算分段函数[1] (20分)
本题目要求计算下列分段函数f(x)的值:公式:输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。输入样例1:10输出样例1:f(10.0) = 0.1输入样例2:0输出样例2:f(0.0) = 0.0#include<stdio.h>int main(void){ double x, y; scanf("%lf",&x); y=x==原创 2020-06-04 15:50:06 · 4924 阅读 · 0 评论 -
7-4 统计字符出现次数 (20分)
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。输入格式:输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。输出格式:在一行中输出给定字符在给定字符串中出现的次数。输入样例:programming is More fun!m输出样例:2#include<iostream>using namespace std;#include<string.h>#define MAX 100int main()//录入,然原创 2020-06-04 15:01:47 · 5343 阅读 · 0 评论 -
7-5 求整数序列中出现次数最多的数 (20分)
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。输入格式:输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。输出格式:在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。输入样例:10 3 2 -1 5 3 4 3 0 3 2输出样例:3 4这个题算不上什么难度,把思维划成4步,录入---->比对记载,确定有哪些“值”---->判断记载出现次数最多的数字---->输出,剩下的原创 2020-06-04 14:36:30 · 3738 阅读 · 0 评论 -
5-4 下面程序是向已经升序的字符串中插入1个字符,使得插入后的字符仍然保持有序。请将程序补充完整。
#include<iostream>using namespace std;void insertString (char str[], char c);int main(){ char str[100],c; cin.getline(str,99); cin>>c; insertString (str, c); cout<<str<<endl; return 0;}void insertString (char str[],原创 2020-06-12 19:01:27 · 4187 阅读 · 8 评论 -
5.3.3 最大公约数 (20分)
编写函数gcd,计算2个非负整数的最大公约数,可以用辗转相除法,也可以用递归等其他方法。函数接口定义:int gcd(int m,int n);其中 m 和 n 都是用户传入的参数,值都为非负整数。函数须返回 m 和 n 的最大公约数。运行程序3次,输入不同数据,记录运行结果。裁判测试程序样例:#include <iostream>using namespace std;int gcd(int m,int n);int main(){ int m,n; int count原创 2020-06-12 12:26:15 · 3652 阅读 · 1 评论 -
5-3 下面的程序是对数组进行冒泡排序(由小到大)。请将程序补充完整。
#include<iostream>using namespace std;const int N=10;void BubbleSort(int a[],int n); int main(){ int a[N],i; for(i=0;i<N;i++) cin>>a[i]; BubbleSort(a,N); for(i=0;i<N;i++) cout<<a[i]<<" "; return 0;}void Bubbl原创 2020-06-12 18:58:59 · 3973 阅读 · 1 评论 -
5-2 下面的程序是在有序的数列中采用折半法查找数据,如果找到所需的数据,程序输出该数据的下标;如果没有找到所需的数据,输出“没有找到”。请将程序补充完整。
#include<iostream>using namespace std;const int N=10;int main(){ int x, mid,bottom,top,a[N]={6,9,15,26,38,47,55,63,77,90}; cin>>x; bottom=0; top=N-1; while(bottom<=top) { mid=(top+bottom)/2; if(x==a[mid]) break; e原创 2020-06-12 18:54:43 · 3093 阅读 · 2 评论 -
5-1 下面的程序输入某个同学的各科成绩并计算平均分,请将程序补充完整。
#include <iostream>using namespace std;int main(){const int COURSE_NUM=5;int scores[COURSE_NUM];double aveScore=0;int i;for(i=0; i<COURSE_NUM; ++i) //通过键盘输入成绩数据{ cin>>scores[i];}for(i=0;i<COURSE_NUM;++i) aveScore=a原创 2020-06-12 18:51:48 · 3695 阅读 · 0 评论 -
5 下三角矩阵的和 (20分)
下三角矩阵指主对角线以上的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否下三角矩阵,若是,输出该矩阵下三角所有元素之和。输入格式:输入第一行给出一个正整数N(1≤N≤10),接下来给出N行,每行给出N个整数,其间以空格分隔。输出格式:第一行输出判断结果:如果输入的N在指定范围并且N×N矩阵是下三角矩阵,输出“YES”,否则输出“NO”。如果是下三角矩阵,第二行给出和:sum=和,如果不是则不输出。输入样例1:31 0 02 4 00原创 2020-06-11 13:59:25 · 1693 阅读 · 0 评论