I、课程设计基本练习题目(18分×4)

A组】请从以下1-3题中任意选做一题

1、输出1至100之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*2<1+2,故不输出该数;对于27,有2*7>2+7,故输出该数。

法一:

#include "stdafx.h"
#include<iostream>
using namespace std;
bool isSelectNum(int N)
{
int temp = N;
int sumADD = 0;
int multResult = 1;
do
{
//cout <<"该数字的各位数分别为:"<< temp % 10<<" " << endl;
sumADD = sumADD + temp % 10;
multResult = multResult*(temp % 10);
temp = temp / 10;
} while (temp > 0);
if (sumADD == multResult)
return true;
else
return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
for (int i = 0; i < 100; i++)
{
if (false==isSelectNum(i))
{
cout << i << "\t" << endl;
} } }

法二:

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int m = 0, n = 0;
for (int i = 11; i < 100; i++)
{
m = i % 10;
n = i / 10;
if (m*n>m + n)
cout << i << endl;
}
return 0;
}

2、求任意n个数中的最大数和最小数:先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。

法一:

#include "stdafx.h"
#include <iostream>
#include <malloc.h>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
int MAX, MIN;
int nNumber;
cin>> nNumber;
int *p = (int *)malloc(sizeof(int)*nNumber);
cout << "Please input " << nNumber << "numbers in truns.\n" << endl;
cin >> p[0];
MAX = p[0];
MIN = p[0];
for (int i = 1; i < nNumber; i++)
{
cin >> p[i];
if (p[i]>MAX)
MAX = p[i];
if (p[i] < MIN)
MAX = p[i];
}
cout << "MAX=" << MAX << endl;
cout << "MIN=" << MIN << endl;
free(p);
return 0;
}

法二:

#include "stdafx.h"
#include <iostream>
using namespace std;
void swap(int*m, int *n)
{
int temp = *m;
*m = *n;
*n = temp;
};
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout << "hom many numbers do you want to input?" << endl;
cin >> n;
int *p = new int[n];
cout << "please input " << n << "numbers in turns." << endl;
for (int i = 0; i < n; i++)
cin >> p[i]; /*冒泡排序开始啦*/
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (p[i]>p[j])
{
/*
int temp = p[j];
p[j] = p[i];
p[i] = temp;
*/
swap(p + i, p + j);
}
}
}
cout << "the max number is " << p[n - 1] << endl;
cout << "the min number is " << p[0] << endl;
delete []p;
return 0;
}

B组】请从以下4-6题中任意选做一题

4、对两个有序数组进行合并:设有如下数组A、B,并假设两个数组的元素都已经有序(从大到小降序排列)。编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列)。

int A[10]={123,49,86,86,33,15,7,0,-1,-3};

int B[10]={64,51,50,27,19,15,12,5,2,1};

#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
int i = 0, j = 0;
int A[10] = { 123, 49, 86, 86, 33, 15, 7, 0, -1, -3 };
int B[10] = { 100, 64, 51, 50, 27, 19, 15, 12, 5, 2 };
int *p = (int*)malloc(sizeof(A)+sizeof(B));
cout << "The array A :" << endl;
for (int i = 0; i < 10; i++)
{
cout << A[i] << " "; }
cout << endl;
cout << "The array B :" << endl;
for (int i = 0; i < 10; i++)
{
cout << B[i] << " "; }
cout << endl;
//===================================================
int t = 0;
do
{
if (A[i] > B[j])
{
p[t] = A[i];
i++;
t++;
}
if (A[i] < B[j])
{
p[t] = B[j];
j++;
t++;
}
} while (i < 10 && j < 10 && t<20);
//===================================================
cout << endl; for (int i = 0; i < 20; i++)
{
cout << p[i] << " ";
}
cout << endl;
return 0;
}

5、有一个分数序列:1/2,1/3,1/4,1/5,1/6,1/7,……,编写函数求序列前n项之和,要求在主程序中提示用户输入整数n,并判断所输入数是否合法(大于0为合法),如果合法则调用求和函数并输出结果。

#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std; double sum(int n)
{
double t = 0;
for (int i = 1; i <= n; i++)
{
t = t + double(1.0 /i);
//cout << t << endl;
}
return t;
} int _tmain(int argc, _TCHAR* argv[])
{
int N;
double t = 0;
cout << "please input a integer:" << endl;
cin >> N;
if (N > 0)
t = sum(N);
else
cout << "error!" << endl;
cout <<setw(15)<<setprecision(10)<< t<< endl;
return 0;
}

6、计算两个日期之间的间隔天数:从键盘输入两个日期(如以year1,month1,day1以及year2,month2,day2的方式来输入它们),而后计算出这两个日期的间隔天数并在屏幕上显示出结果。

要求编制具有如下原型的函数difs2Date:

long difs2Date(int y1,int m1,int d1,int y2,int m2,int d2);

它负责计算出两个日期的间隔天数并返回,要求将该函数的代码存放到一个叫做“difs2Date.h”的头文件中,而在main函数的主文件中通过include编译预处理命令将该头文件的内容包含进来,并在main主函数中通过调用difs2Date函数来实现所需的计算。

//计算两个日期之间的天数
int DaysBetween2Date(string date1, string date2)
{
//取出日期中的年月日
int year1, month1, day1; int year2, month2, day2;
if (!StringToDate(date1, year1, month1, day1) || !StringToDate(date2, year2, month2, day2))
{
printf("输入的日期格式不正确。"); return -1;
}
//如果年、月都相同
if (year1 == year2 && month1 == month2)
{
return day1 > day2 ? day1 - day2 : day2 - day1;
}
//如果年相同、月不同
else if (year1 == year2)
{
int d1, d2;
d1 = DayInYear(year1, month1, day1);
d2 = DayInYear(year2, month2, day2);
return d1 > d2 ? d1 - d2 : d2 - d1;
}
//如果年不同
else
{
//确保year1年份比year2早
if (year1 > year2)
{
TSwap(year1, year2);
TSwap(month1, month2);
TSwap(day1, day2);
}
int d1, d2, d3;
if (IsLeap(year1))
d1 = 366 - DayInYear(year1, month1, day1);
else
d1 = 365 - DayInYear(year1, month1, day1);
d2 = DayInYear(year2, month2, day2);
d3 = 0;
for (int year = year1 + 1; year < year2; year++)
{
if (IsLeap(year))
d3 += 366;
else
d3 += 365;
}
return d1 + d2 + d3;
}
}
//从字符串中取得年、月、日 //规定日期的格式是:yyyy-mmm-dd
bool StringToDate(string date, int& year, int& month, int& day)
{
year = atoi((date.substr(0, 4)).c_str());
month = atoi((date.substr(5, 2)).c_str());
day = atoi((date.substr(8, 2)).c_str());
int DAY[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (IsLeap(year))
DAY[1] = 29;
return year >= 0 && month <= 12 && month > 0 && day <= DAY[month] && day > 0;
}
//IsLeap函数判断一个年份是否为闰年,方法如下:
bool IsLeap(int year)
{
return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0);
}
//DayInYear能根据给定的日期,求出它是该年的第几天。代码如下:
int DayInYear(int year, int month, int day)
{
int DAY[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (IsLeap(year))
DAY[1] = 29;
for (int i = 0; i < month - 1; ++i)
day += DAY[i];
return day;
}

C组】请从以下7-10题中任意选做2

7、声明并定义一个日期类CDate,其中数据成员m_iYear,m_iMonth,m_iDay,分别表示年、月、日,成员函数SetDate()用来设置年、月、日,成员函数IsLeapYear()用来判断当前的年份是否为闰年,构造函数带有默认形参值,可接收外部参数对m_iYear, m_iMonth, m_iDay进行初始化,另要求编写测试程序,定义一个CDate类对象,将其日期设置为2005年1月1日, 调用成员函数IsLeapYear()判断该年份是否为闰年并输出判断结果.

说明:闰年的年份可以被4整除而不能被100整除,或者能被400整除.

#include "stdafx.h"
#include <iostream>
using namespace std; class CDate
{
public:
void SetDate(int Year,int Month,int Day)
{
m_iYear = Year;
m_iMonth = Month;
m_iDay = Day;
cout << "Today is" << m_iYear << "年" << m_iMonth << "月" << m_iDay << "日。\n" << endl;
};
bool isLeapYear()
{
if (this->m_iYear % 4 == 0 && this->m_iYear % 100 != 0 || this->m_iYear % 400 == 0)
{
cout <<m_iYear<< "is Leap Year.\n" << endl;
return true;
} else
{
cout << m_iYear << "is not a Leap Year.\n" << endl;
return false;
}
};
CDate()
{
m_iYear = 1900;
m_iMonth = 1;
m_iDay = 1;
cout << "构造函数。" << endl;
};
CDate(int year, int month, int day);
~CDate()
{
cout << "析构函数。\n" << endl;
}
private:
int m_iYear;
int m_iMonth;
int m_iDay;
};
CDate::CDate(int year, int month, int day)
{
this->m_iYear = year;
this->m_iMonth = month;
this->m_iDay = day;
}; int _tmain(int argc, _TCHAR* argv[])
{
CDate CurrDate;
CurrDate.isLeapYear();
CurrDate.SetDate(2014, 10, 21);
CurrDate.isLeapYear();
return 0;
}

-----------------------------------------------------------------------------------------------------------------------

后续内容将继续更新!

-----------------------------------------------------------------------------------------------------------------------

8、编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计算两个长方形的总面积)时使用对象作为参数。

9、设计一个时间类Time,包括3个数据成员,时(h)、分(m)、秒(s),另外包括存取各数据成员和设置时间的成员函数,按上、下午各12小时或按24小时输出时间的成员函数,以及默认构造函数,默认时间值为0时0分0秒。

10、编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。

II、课程设计中期设计题目(28分×1)

11. 求解一元二次方程。

一元二次方程的定义为:

ax2+bx+c=0

(1)如果b2 -4ac>0,方程有两个不同的实根,分别是:

(2)如果b2 -4ac< 0,方程没有实根,但有虚根;

(3)如果b2 -4ac= 0,方程有一个实根。

请你编写一个程序,使其能求出多个二次方程的根。该程序要询问用户是否想继续解下一个方程。用户输入1来继续,输入其它数字,则终止程序。程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案。

要求:使用类实现,

(1) a,b,c为该类的私有成员变量;

(2) 求根的实现为该类的成员函数,形式为:

//函数返回值:实根的个数;

//参数:x- 用以返回实根值的数组;

long CalResult(float x[]);

(3) 该类还包含有参构造函数、析构函数。

(4) 使用MFC工程实现,可酌情加分。

VC++上机实习的更多相关文章

  1. MySQL上机实习报告(一)

    一.实习内容    利用wamp进行MySQL上机实习,建立数据库和一个学生信息表,并能对建的表进行数据插入.修改.查询和删除等内容. 二.实习目的 能将课堂上所学的内容运用到实际的上机操作中,进一步 ...

  2. awk 手册--【转载】

    1. 前言 有关本手册 : 这是一本awk学习指引,  其重点着重于 : l         awk 适于解决哪些问题 ? l         awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...

  3. awk中文手册

    1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l        awk 适于解决哪些问题 ? l        awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模 ...

  4. 见过的最好AWK手册

    原文: http://linuxfire.com.cn/~lily/awk.html 简体中文版由bones7456 (http://li2z.cn)整理. 原文:应该是 http://phi.sin ...

  5. 【译】 AWK教程指南 1前言

    前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...

  6. 【译】 AWK教程指南

    前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...

  7. 04747_Java语言程序设计(一)_第1章_Java语言基础

    二进制0b开头 八进制0开头 十六进制0x开头 package com.jacky; public class Aserver { public static void main(String arg ...

  8. AWK增强的文本处理shell特征--AWK完全手册

    AWK这是一个很好的文字处理工具. 它不仅 Linux 中也是不论什么环境中现有的功能最强大的数据处理引擎之中的一个. 本文主要摘录池中龙写的Unixawk使用手冊(第二版),对当中内容略微修改.感谢 ...

  9. java学习笔记(详细)

    java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序.不同系统上要安装对应的虚 ...

随机推荐

  1. EasyUI学习笔记(二)—— Layout

    一.layout页面布局 EasyUI布局容器包括东.西.南.北.中五个区域,其中中心面板是必须的,而东.西.南.北这四个面板是可选的,如果布局里面不需要东.西.南.北这四个面板,那么可以把相应的di ...

  2. spring中的idref标签详解

    spring中的idref元素 idref元素是一个简单的对容器中存在的另外一个bean的检错途径(通过id); <idref bean="someBeanId"/> ...

  3. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

    组合计数的一道好题.什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\).有若干条有向的脉络连接着这些穴位. ...

  4. POJ - 3764 01字典树+前缀异或和

    异或关于前缀的特性:[u,v]=[1,u]^[1,v] 注意是路径,假设1为根,prexor[1]不保留数值 /*H E A D*/ int to[maxn<<1],nxt[maxn< ...

  5. 在OnActionExecuted 获取请求参数的值(包含类类型)

    1.在OnActionExecuting里 获取请求参数的值 比较简单 /// <summary> /// 获取首参数的值 /// </summary> /// <par ...

  6. C++ STL之Vector

    向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. vector 属于STL(Standard Template Library, 标准模板库)中的一种自定义的 ...

  7. PIE SDK图像旋转

    1.算法功能简介 图像旋转可使图像以中心点为轴沿特定方向旋转指定的角度. PIESDK支持算法功能的执行,下面对图像旋转算法功能进行介绍. 2.算法功能实现说明 2.1 实现步骤 第一步 算法参数设置 ...

  8. element-ui日期组件DatePicker设置日期选择范围Picker Options

    element-UI提供了DatePicker日期选择器组件,可以让我们很方便的获取到日期,默认的选择是全部的日期都可以选择的,但是很多场景中我们要对日期选择范围做限定,比如出行日期就不能选过去的日期 ...

  9. MAC 下 STF 的环境搭建和运行

    STF --WEB 端批量移动设备管理控制工具 安装各种包 (首先安装Macport,因为后面需要用到port:http://www.ccvita.com/434.html) linux的基本包安装, ...

  10. 阿里云服务器对外开放tomcat端口访问

    今天第一次在阿里云服务器ecs上安装完成tomcat,然后启动tomcat之后.在本地输入ip:端口,发现不能访问. 出现这个的原因可能是你购买的服务器是 专有网络 类型的 如果是专有网络类型的服务器 ...