烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
返回:贺老师课程教学链接 项目要求 【项目5-方程也是类】设计一元一次方程类,求形如ax+b=0的方程的解。例如:输入3x-8=0时,输出的方程的解为x=2.66667;再如:输入5s+18=0时,输出的方程的解为s=-3.6; 参考界面如下:参考代码为: class CEquation { private: double a; // 未知数系数 double b; /
返回:贺老师课程教学链接 项目要求 【项目4-我的向量类】 建立一个向量类MyVector,声明如下,请完成类的定义 class MyVector //定义向量类 { public: MyVector(int m); //构造函数,共有m个元素的向量,元素值预置为0 MyVector(const MyVector &v); //复制构造函数
返回:贺老师课程教学链接 项目要求 【项目3-分数类中的运算符重载(续)】 在分数类中的运算符重载基础上(1)定义分数的一目运算+和-,分别代表分数取正和求反,将“按位取反运算符”~重载为分数的求倒数运算。(2)定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。[参考解答] #include <iost
返回:贺老师课程教学链接 项目要求 【项目1-复数类中的运算符重载(续)】在复数类中的运算符重载基础上(1)再定义一目运算符 -,-c相当于0-c。(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。[参考解答] #include <iostream> using namespace
返回:贺老师课程教学链接 项目要求 【项目2-Time类中的运算符重载(续)】 在Time类中的运算符重载基础上(1)定义对时间对象的自增和自减一目运算符 //一目运算符的重载 CTime operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒,前置与后置返回值不一样 CTime operator--( int);//后置-
返回:贺老师课程教学链接 【项目1-复数类中的运算符重载(续)】在复数类中的运算符重载基础上(1)再定义一目运算符 -,-c相当于0-c。(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。[参考解答]【项目2-Time类中的运算符重载(续)】 在Time类中的运算符重载基础上(1)定义对时间对象的
返回:贺老师课程教学链接 阅读下面的程序,领会其中用到的设计方案、技术手段与算法。 /* 对于要定义的字符串类CMyString, 数据成员包括: - 字符串的长度; - 指向字符串第一个字符的指针 成员函数包括: - 不带参数的构造函数; - 带一个类型为const char *类型的参数(用于对字符串初始化)的构造函数; - 带一个const CMyString&类型的复制构造参
返回:贺老师课程教学链接 阅读程序“简单C++学生信息管理系统”,找出其中出现构造函数、友元函数、运算符重载、静态数成员语法现象出现的位置,仔细体会其用法,在以后的设计中能够灵活应用有关方法和技巧。 #include <iostream> #include <cstring> using namespace std; #define MAX 100 clas
返回:贺老师课程教学链接 下面的程序,想在main函数中要完成实数加复数、复数加实数,不可以。编译下面的程序出现错误,就是因为没有提供对应类型数据的运算符重载函数。 #include <iostream> using namespace std; class Complex { public: Complex():real(0), imag(0){} Com
返回:贺老师课程教学链接 谈及运算,我们总是习惯“数”的运算。而实际上,像时间之类的对象也是可以进行加减运算的。再进一步,我们的思维还可以拓展,运算加以加到任何事物上,只要我们可以为这些“运算”设计好意义。 例如:有班级类和学生类。两个学生相加,组成了一个由两个学生构成的班级;班级加学生,代表班级增加了一名新同学;学生乘学生,结果为这两个学生“结对子”,可以做某些事(这个对子,需
返回:贺老师课程教学链接 项目要求 【项目2- 成绩处理】在数组score中将要存储某小组C程序设计的成绩,请完成下面的处理:(1)输入小组人数及成绩,要保证成绩在0-100之间;(2)输出该小组的最高成绩、最低成绩、平均成绩;(3)输出考得最高成绩和最低成绩的同学的人数;(4)输出考得最高成绩和最低成绩的同学的学号(设数组下标即学号,可能有相同的成绩)。(5)(选做)求出所有同学成绩的
返回:贺老师课程教学链接 项目要求 【项目1 - 数组大折腾】(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。 int main( ) { int a[20]={...}; //初始化前10个元素 //键盘输入后10个元素的值
返回:贺老师课程教学链接 【项目1 - 数组大折腾】(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行。 int main( ) { int a[20]={...}; //初始化前10个元素 //键盘输入后10个元素的值 /
返回:贺老师课程教学链接 1、 下面程序将十进制整数b转换成n进制,请填空使程序完整。 #include<stdio.h> int main() { int i=0,b,n,j,num[20] ; scanf("%d",&n); scanf("%d",&b) ; do { num[i]=_____(1)___
返回:贺老师课程教学链接 阅读下面的程序,学会使用数组。若感觉太小儿科的题目,可以直接跳过。不过,要是阅读困难,还是要老老实实地对照运行结果,以及借助单步调试的工具,搞清求值并显示的过程。(1) #include<stdio.h> int main() { int a [6]= {2,-3,4,-6,-8,10}, i; for (i=0; i<6; i++
返回:贺老师课程教学链接 阅读下面的程序,对照实际运行结果检验学习成果。(1) #include<stdio.h> int fun(int a,int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return (m); } int main() { int k=4,m=1,p1,p2; p1=
返回:贺老师课程教学链接 项目要求 【项目2-总是多一次?】先阅读下面的程序。这样的结构,经常用于重复性工作。执行一次程序要完成的工作后,由操作人员选择,决定是否还来一遍。#include<stdio.h> void dosomething(int *p); int main( ) { char choice='y'; int n=0; while(ch
返回:贺老师课程教学链接 项目要求 【项目1-sin泰勒展式中的错误】 下面是sin函数的泰勒展式:(注:x取弧度值,而非角度值)编写了double mysin(double x)用于求sin值,却“死”在了123°上(122°度的结果已经出来了)。剧透一下,循环没有问题(当然问题会表现在循环中)。试着用调试工具找出问题出现在哪里,然后给出解决问题的方案。 #include<std
返回:贺老师课程教学链接 【项目1-sin泰勒展式中的错误】 下面是sin函数的泰勒展式:(注:x取弧度值,而非角度值)编写了double mysin(double x)用于求sin值,却“死”在了123°上。剧透一下,循环没有问题(当然问题会表现在循环中)。试着用调试工具找出问题出现在哪里,然后给出解决问题的方案。 #include<stdio.h> #define pi 3
返回:贺老师课程教学链接 项目要求 【项目3-编制三角函数表】要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,可以将项目“太乐了”中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 9
返回:贺老师课程教学链接 项目要求 【项目2-歌手大奖赛计分函数版】(1)在歌手大奖赛中,有n位评委为参赛的选手打分,分数为0~10分(运行时由人输入)。选手最后得分为:去掉一个最高分和一个最低分后其余分数的平均值。请编写一个程序,完成相关的功能。 要求利用一个函数void calScore(int n),对一位选手成绩的输入成绩、计算和显示实现,其中n为评委人数。这样,在main函数
返回:贺老师课程教学链接 项目要求 【项目1-k次方之和】设计程序,计算:请在下面的程序结构基础上完成设计。 #include<stdio.h> int power(int m,int n); //求m的n次方(m^n) int sum_of_power(int k,int n); //从1^k到n^k的累加和 int main( ) { int k, n;
返回:贺老师课程教学链接 【项目1-k次方之和】设计程序,计算:请在下面的程序结构基础上完成设计。 #include<stdio.h> int power(int m,int n); //求m的n次方(m^n) int sum_of_power(int k,int n); //从1^k到n^k的累加和 int main( ) { int k, n; scanf("
返回:贺老师课程教学链接 (1)若输入的值是 -125,写出下面程序的运行结果。#include<stdio.h> #include <math.h> void fun (int n) { int k,r ; for (k=2; k<=sqrt(n); k++) { r = n % k ; while (!
返回:贺老师课程教学链接 请分析下面程序的输出结果,对照在计算机上的运行结果,解释得到输出的过程。 建议:通过在纸上画出内存变化的过程,洞悉计算机执行的过程。(1) #include<stdio.h> void fun(int x,int y,int *z) { *z=x*x+y*y; } int main() { int a=31; fun(5,2,
返回:贺老师课程教学链接 项目要求 【项目6-回文、素数】(1)编制一个函数reverse,返回给定数据的“反序数”,例如输入1234,输出4321。请编制reverse函数,在下面代码的基础上补充相关的部分,实现要求的功能。 int main() { int m,n; scanf("%d", &m); n=reverse(m); printf("%
返回:贺老师课程教学链接 项目要求 【项目7-太乐了】先听故事,再编程序。故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数。cos问:你是谁啊?他说:我是你的老公sin啊。cos说:你不是去听相声了吗?怎么成这幅摸样了?sin说:是啊,太乐了!故事讲完了。下面是sin函数的泰勒展式:(注:x取弧度值
返回:贺老师课程教学链接 项目要求 【项目5-当年第几天】定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。 #include<stdio.h> int days(int y, int m, int d); int main() { int year, month, day;
返回:贺老师课程教学链接 项目要求 【项目4-求阶乘函数】(1)请输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数。要求用自定义函数实现求阶乘。 int main() { } long fac(int n) //用于求n的阶乘 { }[参考解答]解法1: #include<stdio.h> int fact(int); int m
返回:贺老师课程教学链接 项目要求 【项目3-求最大公约数】(1)输入两个数,并求出其最大公约数。请写出求最大公约数的函数 #include <stdio.h> //int gcd(int x,int y) //定义用于求两数的最大公约数的函数,函数只管求值,不管输出。输出由main完成 {...} int main() { int a,b,g; scanf("
返回:贺老师课程教学链接 项目要求 【项目2-求解分段函数的值】 #include<stdio.h> double f(double); //这一句是对自定义函数f的声明 int main( ) { double x; printf("请输入x的值:"); scanf("%lf", &x); printf("解得:f(%.2f)=
返回:贺老师课程教学链接 项目要求 【项目1-函数版星号图】这一组的练习意在通过调用函数输出星号图,体会与理解函数的工作过程,并为其后编制自定义函数实现特定功能。(1)补充完下面的程序,使程序输出星号下面的星号图: #include <stdio.h> void printstars(int m) //定义能输出一行m个星号的函数 { int j; for (
返回:贺老师课程教学链接 【项目1-函数版星号图】这一组的练习意在通过调用函数输出星号图,体会与理解函数的工作过程,并为其后编制自定义函数实现特定功能。(1)补充完下面的程序,使程序输出星号下面的星号图: #include <stdio.h> void printstars(int m) //定义能输出一行m个星号的函数 { int j; for (j=1; j&
返回:贺老师课程教学链接 (1)请说出下面程序的输出 #include <stdio.h> int fun(int x,int y) { return(x*y); } int main() { int a=7,b=5; printf("%d\n",fun(a,b)); return 0; } (2)请说出下面程序的输出#include <st
返回:贺老师课程教学链接 【项目-String类的构造】写一个能处理字符串的类,其数据成员如下所示:class String { public: ...//需要的成员函数(若需要的话,声明友元函数) private: char *p; //指向存储的字符串 int len; //记录字符串的长度 }; 请构造String类的加、减运算。其中
返回:贺老师课程教学链接 【项目3-分数类中的运算符重载】 (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载
返回:贺老师课程教学链接 【项目2-Time类中的运算符重载】实现Time类中的运算符重载。class CTime { private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int second; // 秒 public: CTim
返回:贺老师课程教学链接 【项目-实现复数类中的运算符重载】(1)请用类的成员函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+
返回:贺老师课程教学链接 【项目1-实现复数类中的运算符重载】(1)请用类的成员函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+
返回:贺老师课程教学链接 //(1) #include <iostream> using namespace std; class Sample { private: int x; public: Sample () { } Sample(int a){x=a;} void disp(){cout<<"x="<<x<
返回:贺老师课程教学链接 项目要求 【项目4-算工资】从文件salary.txt中读入工人的工号、基本工资、奖金,将奖金全部增加20%(好事)后,将工号、基本工资、奖金和应发工资(前项目之和)保存到文件salarylist.txt中。 [参考解答] #include <stdio.h> #include <stdlib.h> int main() { in
返回:贺老师课程教学链接 项目要求 【项目3-成绩统计】文件english.dat(这个文件中的数据量,超出了你之前所有的体验)中已经有了学生的英语考试成绩数据。(1)请编程从english.dat中读取数据,求出这次考试的平均成绩,并统计输出优秀人数和不及格人数。请在下面程序基础上填空完成: #include <stdio.h> #include <stdlib.h>
返回:贺老师课程教学链接 项目要求 【项目2-文件中的符号个数】统计一个文本文件中数字、空格、字母出现的次数,以及文件的字节数,并将结果输出,文本文件名在程序中输入(请自建文本文件完成测试)。[参考解答] #include "stdio.h" #include "stdlib.h" int main() { FILE *fp ; int alpha=0, number=0,
返回:贺老师课程教学链接 项目要求 【项目1-由键盘到文件】(1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去。 #include "stdio.h" #include "stdlib.h" int main() { FILE *fp ; char ch,fname[10]; printf("文件名:"); gets(fna
返回:贺老师课程教学链接 【项目1-由键盘到文件】(1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去。 #include "stdio.h" #include "stdlib.h" int main() { FILE *fp ; char ch,fname[10]; printf("文件名:"); gets(fname);
返回:贺老师课程教学链接 项目要求 【项目5:有多少符号】输入一行文字,以回车结束,统计并输出其中数字、空格、字母出现的次数,以及输入的字符总数。 [参考解答] #include "stdio.h" int main() { int alpha=0, number=0, space=0, count=0; //分别代表字母、数字、空格个数,及总字节数 char ch;
返回:贺老师课程教学链接 项目要求 【项目9-污损的单据】(1)有等式[※×(※3+※)]2=8※※9,其中※处为1个数字,滴上了墨水无法辨认。请编程找出※表示哪个数字。 [参考解答] #include <stdio.h> int main() { int a,b,c,d,e,s; for(a=0;a<=9;a++) { for
返回:贺老师课程教学链接 项目要求 【项目8-谁是小偷】警察局抓住了A、B、C、D四名盗窃嫌疑犯,其中只有一人是小偷。在审问时,A说:“我不是小偷”;B说:“C是小偷”;C说:“小偷肯定是D”;D说:“C在冤枉好人”。现在已经知道这四人中有三人说的是真话,一人说的是假话。请问到底谁是小偷?提示:设4个变量a,b,c,d,为0时表示不是小偷,为1时表示是小偷,用四重循环穷举a,b,c,d可能
返回:贺老师课程教学链接 项目要求 【项目7-找数字】(1)求满足下式的 x,y,z x y z + y z z ────── 5 3 2 请补充完整下面的程序: #include <stdio.h> int main() { int x,y,z,i,result=532; for (x=
返回:贺老师课程教学链接 项目要求 【项目6-三色球问题】若一个口袋中放有12个球,其中有3个红的。3个白的和6个黒的,问从中任取8个共有多少种不同的颜色搭配?提示:设任取的红球个数为i,白球个数为j,则黒球个数为8-i-j,根据题意红球和白球个数的取值范围是0~3,在红球和白球个数确定的条件下,黒球个数取值应为8-i-j<=6。 [参考解答]#include <stdio.