1.定义一个”数据类型” datatype类,能处理包含字符型、整型、浮点型三种类型的数据,给出其构造函数。
实现方式:
DataType.h
#pragma once class DataType { public: enum { character, integer, float_point } vartype; union { char c; int i; float f; }; DataType(char ch); DataType(int i); DataType(float f); ~DataType(void); void print(); };
DataType.cpp
#include "DataType.h" #include <iostream> using namespace std; DataType::DataType(char ch) { vartype = character; c = ch; } DataType::DataType(int ii) { vartype = integer; i = ii; } DataType::DataType(float ff) { vartype = float_point; f = ff; } DataType::~DataType(void) { } void DataType::print() { switch (vartype) { case character: cout<<"字符型:"<<c<<endl; break; case integer: cout<<"整形:"<<i<<endl; break; case float_point: cout<<"浮点型:"<<f<<endl; break; } }
main.cpp
#include <iostream> #include "DataType.h" using namespace std; void main() { DataType A('a'),B(1),C(2.0f); A.print(); B.print(); C.print(); }
2.用穷举法找出1~100间的质数,显示出来
#include <iostream> #include <cmath> using namespace std; void main() { int i = 1; while (i++ < 100) { int flag = 1; int k = sqrt(float(i)); for (int j = 2; j <= k; j++) { if (i % j == 0) { flag = 0; break; } } if (flag) { cout<<i<<"是质数"<<endl; } } }
3.在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。
第一种写法:
#include <iostream> #include <cmath> using namespace std; void main() { int n = 55; int m; cout<<"请输入你猜的数:"; cin>>m; while (n != m) { if (n > m) { cout<<"你猜的数太小了"<<endl; } else if (n < m) { cout<<"你猜的数太大了"<<endl; } cout<<"请输入你猜的数:"; cin>>m; } cout<<"恭喜你,猜对了!"<<endl; }
第二种写法:
#include <iostream> #include <cmath> using namespace std; void main() { int n = 55; int m; do { cout<<"请输入你猜的数:"; cin>>m; if (n > m) { cout<<"您猜的数太小了"<<endl; } else if (n < m) { cout<<"您猜的数太大了"<<endl; } else { cout<<"恭喜你,猜对了!"<<endl; } } while (m != n); }
4.编写函数求两个整数的最大公约数和最小公倍数。
#include <iostream> #include <cmath> using namespace std; void main() { int m,n; cout<<"请输入两个正整数:"; cin>>m>>n; int A = 1; int B; int min = m < n ? m : n; for (int i = 2; i <= min; i++) { if (m % i == 0 && n % i == 0) { A = i; } } B = m * n / A; cout<<m<<"和"<<n<<"的最大公因子是"<<A<<",最小公倍数是"<<B<<endl; }
5.编写递归函数GetPower(int x, int y)计算x的y次幂, 在主程序中实现输入输出。
#include <iostream> #include <cmath> using namespace std; long GetPower(int x, int y); void main() { cout<<GetPower(2,7)<<endl; } long GetPower(int x, int y) { if (y == 0) { return 1; } else { return x * GetPower(x, y-1); } }
6 .定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积
Rect.h
#pragma once class Rect { private: float length; float width; public: Rect(void); Rect(float len, float wid); float GetArea(); float GetLength(); float GetWidth(); ~Rect(void); };
Rect.cpp
#include "Rect.h" Rect::Rect(void) { } Rect::Rect(float len, float wid) { length = len; width = wid; } float Rect::GetArea() { return length * width; } float Rect::GetLength() { return length; } float Rect::GetWidth() { return width; } Rect::~Rect(void) { }
main.cpp
#include <iostream> #include "Rect.h" using namespace std; void main() { Rect r(1.2,1.5); cout<<r.GetArea()<<endl; }
7.编写一个函数,统计一个英文句子中字母的个数,在主程序中实现输入输出
#include <iostream> using namespace std; void main() { char ch[100]; cin.getline(ch,100); int count = 0; for (int i = 0; i < strlen(ch); i++) { if ((ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] >= 'a' && ch[i] <= 'z')) { count++; } } cout<<"输入的句子中含有字母的个数为:"<<count<<endl; }
8.编写函数int index(char *s, char *t),返回字符串t 在字符串s中出现的最左边的位置,如果在s中没有与t匹配的子串,就返回-1。
int index(char* s, char* t) { int i,j,k; for (i = 0; s[i] != '\0'; i++) { for (j = 0, k = i; t[j] != '\0' && s[k] == t[j]; k++,j++); if (t[j] == '\0') { return i; } } return -1; }