- 博客(51)
- 收藏
- 关注
原创 编译原理 赋值语句翻译成四元式
赋值语句及算数表达式的翻译将赋值语句翻译成四元式的语义描述:(1) S-> id:=A(2) A->id(3) A->int(4) A->real(5) A->A1+A2(6) A->A1*A2(7) A->-A1(8) A->(A1)
2022-07-15 18:30:44
2141
原创 C语言 分解质因数
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)#include<stdio.h>#include<math.h>int ss(int x){ int i; if((x==1)||(x==2))return 1; for(i=2;i<x;i++) if(x%i==0)return 0; e
2020-09-16 21:10:01
1247
原创 C语言 矩阵乘法
问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22输入格式 第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开#include<stdio.h>int
2020-09-16 10:56:46
1356
原创 C语言 矩形面积交
问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。#include<stdio.h>int main(){ double min(double,double); double ma
2020-08-14 21:34:32
1273
原创 C语言 数的读法
问题描述 Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi qian
2020-08-14 16:12:05
1691
原创 C语言 Sine之舞
问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+…sin(n))…) Sn=(…(A1+n)A2+n-1)A3+…+2)An+1 FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。输入格式 仅有一个数:N<201。输出格式 请输出相应的表达式S
2020-08-14 12:30:09
338
原创 C语言 芯片测试
问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多。 每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时,会随机给出好或是坏的测试结果(即此结果与被测试芯片实际的好坏无关)。 给出所有芯片的测试结果,问哪些芯片是好芯片。输入格式 输入数据第一行为一个整数n,表示芯片个数。 第二行到第n+1行为n*n的一张表,每行n个数据。表中的每个数据为0或1,在这n行中的第i行第j列(1≤i, j≤n)的数据表示用第i块芯
2020-08-14 11:26:54
963
原创 C语言 龟兔赛跑预测
问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔子和乌龟的赛跑。他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后兔子发现自己领先t米或以上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。 然而有些比赛相当漫长,全程观看会耗费大量时间,而
2020-08-08 15:47:14
713
2
原创 C语言 回形取数
问题描述 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。一开始位于矩阵左上角,方向向下。输入格式 输入第一行是两个不超过200的正整数m, n,表示矩阵的行和列。接下来m行每行n个整数,表示这个矩阵。输出格式 输出只有一行,共mn个数,为输入矩阵回形取数得到的结果。数之间用一个空格分隔,行末不要有多余的空格。#include<stdio.h>int main(){ int n,m,count; scanf("%d%d",&n,&
2020-08-08 14:02:16
1000
1
原创 C语言 2n皇后问题
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。 输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。 输出格式 输出一个整数,表示总共有多少种放法。#inc
2020-07-26 09:28:25
1048
2
原创 C语言 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa + pb。 2. 重复步骤1,直到{pi}中只剩下一个数。 在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。 本题任务:对于给
2020-07-11 09:39:15
251
原创 C语言 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。 计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[
2020-06-28 17:44:27
1375
1
原创 C++ 静态成员的访问
设计一个书类,能够保存书名、定价,以及所有书的本数和总价。#include<iostream>#include<string>using namespace std;class Book {private: string bkName; double price; static int number; static double totalPrice;public: Book() { bkName = ""; price = 0; number++; }; B
2020-05-28 09:01:04
676
原创 C++ 无参构造函数
设计表示平面坐标位置的点类,可以修改和获取点的x、y坐标值,设置构造函数对点的数据成员进行初始化,并且能够用数组保存一系列的点。#include<iostream>using namespace std;class Point {private: int x, y;public: Point(int a, int b) { setPoint(a, b); } int getx() { return x; } int gety() { return y; } Point() {
2020-05-28 08:59:20
9653
原创 C++ 构造函数和类内初始值
某桌子类Desk具有长、宽、高、重四个数据成员,为它设计构造函数,通过构造函数的参数对数据成员进行初始化。#include<iostream>using namespace std;class Desk {public: Desk(int, int); void outData() { cout << "Wight=" << weigth << "\tHeight=" << high << endl; cout &l
2020-05-27 17:53:33
395
原创 C++对象的定义
设计时钟类,要求能够完成时间的设置和显示,并创建时钟类的对象,演示对象的概念和用法。#include<iostream>#include<string>using namespace std;class Clock {public: void setHour(int h) { hour = h; } void setMinute(int m) { minute = m; } void setSecond(int s) { second = s; } void dis
2020-05-27 17:37:29
895
原创 C++ 类(class)
设计复数Complex,提供复数的修改、输入和显示功能。#include<iostream>using namespace std;class Complex {public: void display() { cout << real << "+" << image << "i" << endl; } void inputData() { cout << "input real:"; cin >&
2020-05-27 17:12:13
176
原创 C++ c++对struct的扩展
用struct对圆进行抽象,构造出计算圆周长和面积的抽象数据类型。#include<iostream>#include<string>using namespace std;struct Circle {public: void setR(double radio) { r = radio; } double getR() { return r; } double perimeter() { return 2 * 3.24 * r; } double area()
2020-05-27 15:36:32
219
原创 C++ 文件输入和输出
建立一磁盘文件D:\data.txt,从键盘输入数据(23,34,56,78,98,23,32,89,12)到文件中,然后从磁盘文件中将这些数据读出到数组a中,并计算其总和。#include<iostream>#include<fstream>using namespace std;void main() { ofstream outData("d:\\data.txt"); ifstream inData; int x, a[10]; for(int i=0;i&l
2020-05-27 14:11:35
330
原创 C++ 局部变量与函数返回地址
函数f1()返回局部对象的引用,会产生不可预知的错误运行值。#include<iostream>using namespace std;int& f1(int x) { int temp = x; return temp;}void main() { int& i = f1(3); cout << i << endl; cout << i << endl;}...
2020-05-27 13:56:51
449
原创 C++ 变量类型及生命期
静态变量的生存期长于其作用域的例子。#include<iostream>using namespace std;static int n;//n被初始化为0void f() { static int i;//i被初始化为0 int j = 0; i += 2; j += 2; cout << "i=" << i << ","; cout << "j=" << j << endl;}void main(
2020-05-27 13:38:01
251
原创 C++ 条件编译
#ifdef条件编译的应用例子。#include<iostream>using namespace std;#define DK#ifdef DKvoid f1() { cout << "DK is defined!" << endl; }#elsevoid f1() { cout << "DK is not defined!" << endl; }#endifvoid main() { f1();}...
2020-05-27 13:14:19
287
原创 C++ Lambda表达式
Lambda表达式调用形式的简单例程.#include<iostream>#include<algorithm>using namespace std;void main() { float f = 6.0; cout << [&](float x) {return f += abs(x); }(-3); cout << '\t' << f << '\n'; double a6[] = { 23,10,-4,9,
2020-05-27 12:54:36
116
原创 C++ 内联函数
求两个数最大值的内联函数。#include<iostream>using namespace std;inline int max(int a, int b) { return a > b ? a : b;}void main() { int x1 = max(3, 4); int x2 = max(7, 2); int x4 = max(x1, x2);}
2020-05-27 12:52:53
178
原创 C++ 函数与const和constexpr
返回const引用的函数。#include<iostream>using namespace std;const int& index(int x[], int n) { return x[n];}void main() { int a[] = { 0,1,2,3,4,5,6,7,8,9 }; cout << index(a, 6) << endl; index(a,2)=90;//错误 cout << a[2] <<
2020-05-26 19:45:34
191
原创 C++ 函数重载
设计通过底层const引用区分重载函数f(),通过底层const指针区别的函数g()。#include<iostream>using namespace std;void f(int& x) { cout << "f(int&)" << endl; }void f(const int& x) { cout << "f(const int&)" << endl; }void g(const int* x) {
2020-05-26 19:20:06
142
原创 C++ 函数重载
函数重载解析的例子。#include<iostream>using namespace std;void f(int i) { cout << i << endl; }void f(const char* s) { cout << s << endl; }void main() { char c = 'A'; int i = 1; short s = 2; double ff = 3.4; char a[10] = "12345
2020-05-26 19:09:28
136
原创 C++ 函数重载
重载计算int、float、double三种类型数据绝对值的函数。#include<iostream>using namespace std;int Abs(int x) { return x > 0 ? x : -x; }float Abs(float x) { return x > 0 ? x : -x; }double Abs(double x) { return x > 0 ? x : -x; }void main() { cout << Ab
2020-05-26 17:23:02
451
原创 C++ 函数返回值
返回引用的两数相加函数。#include<iostream>using namespace std;int temp;int& f(int i1, int i2) { temp = i1 + i2; return temp;}void main() { int t = f(1, 3); cout << temp << " "; f(2, 8)++; cout << temp << " "; f(2, 3) = 9;
2020-05-26 17:11:40
183
原创 C++ 函数默认参数
设计函数dog(),输出狗的名字、高和长。默认狗的名字为tom,0.8米高,1.1米长。#include<iostream>#include<string>using namespace std;string name = "tom";double h = 0.8, len = 1.1;void dog(string dogname = name, double high = h, double lenth = len) { cout << "Dogname
2020-05-26 15:07:51
187
原创 C++ 函数默认参数
设计函数sqrt()计算给定数字的平方,默认计算1.0的平方。#include<iostream>using namespace std;double sqrt(double f = 1.0);//sqrt具有默认参数值,默认时f为1.0void main() { cout << sqrt() << endl;//调用sqrt时没有提供实参,按默认值f=1.0调用函数 cout << sqrt(5) << endl;//调用时提供了实参
2020-05-26 14:56:19
165
1
原创 C++ 函数参数传递的类型
按值传递参数与引用传递参数的效率对比。#include<iostream>#include<string>using namespace std;struct student { char name[12] = "";//学生姓名,初始化为空字符串 char Id[8] = "";//学号,初始化为空字符串 int age = 0;//年龄,初始化为0 double score[10] = { 0 };//10科成绩,初始化为0};void print(stude
2020-05-26 14:40:47
240
原创 C++ 函数参数传递的类型
用引用参数完成两数交换的函数swap()。#include<iostream>using namespace std;void swap(int& a, int& b) { int temp = a; a = b; b = temp;}void main() { int x = 5, y = 10; swap(x, y); cout << "x=" << x << "\ty=" << y << en
2020-05-26 14:25:14
159
原创 C++ 函数参数传递的类型
设计对具有6个元素的整数数组进行冒泡法排序的函数。#include<iostream>void sortArr(int a[6]) { for(int i=0;i<6-1;i++) for (int j = 0; j < 6 - i - 1; j++) { if (a[j] > a[j + 1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } }}int main() {
2020-05-26 14:16:37
147
原创 C语言 01字串
问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。#include<stdio.h>int main(){ int a,b,c,d,e,i; for(i=0;i<100000;i++) {a=i/10000; b=i%10000/1000; c=i%1000/100; d=i%100/10; e=i%10; if((a==1||
2020-05-23 12:15:02
2145
原创 C语言 用指向数组的指针作函数参数
有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。#include<stdio.h>int main(){ void average(float*p,int n); void search(float(*p)[4],int n); float score[3][4]={{65,67,70,60},{80,87,90,81},{90,99,100,98}}; average(*score,12);//求12个分数的平均分 search(score,2);//求序号
2020-05-22 18:05:11
1040
原创 C语言 字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。#include<stdio.h>#include<math.h>int main(){ int m,n; scanf("%d%d",&n,&m); int i,j; for(i=0;i<n;i++)
2020-05-22 16:57:58
1812
3
原创 C++ 虚函数和多态性
#include<iostream>using namespace std;class Figure {protected: double x, y;public: void set(double i, double j) { x = i; y = j; } virtual void area() = 0;};class Triangle :public Figure {public: void area() { cout << "三角形面积:" <<
2020-05-21 16:19:06
161
原创 C++ 虚函数和多态性
#include<iostream>using namespace std;class B {public: void f() { cout << "bf"; }; virtual void vf() { cout << "bvf"; }; void ff() { vf(); f(); }; virtual void vff() { vf(); f(); };};class D :public B {public: void f() { cout &
2020-05-21 16:03:08
162
基于C++的通讯录管理系统
2023-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人