广州大学学生实验报告
开课学院及实验室:计算机学院/电子信息楼 202x年 月 日
学 院 | 计算机 | 年级/专业/班 | 计科 | 姓名 | Great Macro | 学号 | |
实验课程名称 | 程序设计基础 | 成绩 | |||||
实验项目名称 | 实验1程序控制结构 | 指导老师 |
(***(1)报告只能为文字和图片;(2)实验项目名称不能有任何改动;(3)必须填写正确的姓名和学号;否则会影响最后成绩的统计,后果自负***)
实验A: 简单的C程序设计、数据类型、运算符与表达式
一、实验目的及要求
1. 了解在集成开发环境下程序的编辑、编译、连接、运行与调试;
2. 掌握C语言的基本数据类型、算术运算符、赋值运算符和逗号运算符及表达式;
3. 输入并编译C++程序。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019;或适合的C/C++编程环境。
三、实验内容
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
0、参考 教程:调试 C++ 代码 - Visual Studio (Windows) | Microsoft Docs ,了解项目的创建、编译、连接、运行与调试。
1、从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数;
#include <iostream> using namespace std; int main() { int a, b; cout << "请输入两个整形数(用空格分开)" << endl; cin >> a >> b; // 写法一 cout << "较小的数是:" << (a < b ? a : b) << endl; // 写法二 if(a < b) { cout << "较小的数是:" << a << endl; } else { cout << "较小的数是:" << b << endl; } return 0; }
2、从键盘上输入一个int型数、一个浮点数,比较大小,将其中较大的数输出;
#include <iostream> using namespace std; int main() { int a; float b; cout << "请输入整形数: "; cin >> a ; cout << "请输入浮点数: "; cin >> b ; // 写法一 cout << "较小的数是:" << (a < b ? a : b) << endl; // 写法二 if(a < b) { cout << "较小的数是:" << a << endl; } else { cout << "较小的数是:" << b << endl; } return 0; }
3、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下: C=5/9*(F-32),其中,F 表示华氏温度,C表示摄氏温度;结果保留两位小数。
#include <iostream> using namespace std; int main() { float C, F; cout << "请输入摄氏温度:"; cin >> C; F = C * 9 / 5 + 32; if(F - int(F) == 0) // 没有小数 { cout << "对应华氏温度:" << F << ".00" << endl; } else if(F * 10 - int(F * 10) == 0) // 一位小数 { cout << "对应华氏温度:" << F << "0" << endl; } else if(F * 100 - int(F * 100) == 0) // 两位小数 { cout << "对应华氏温度:" << F << endl; } else if(F * 100 - int(F * 100) > 0) // 三位小数 { cout << "对应华氏温度:" << int(F * 100) / 100.0 << endl; } return 0; }
4、输入一个大于1000的int型数,将它的低4位(右四位)都置为1;
#include <iostream> using namespace std; int main() { int a; while(1) { cout << "请输入一个大于1000的int型数:"; cin >> a; if(a > 1000) { break; } else { cout << "输入不正确,请重新输入!" << endl; } } // 写法一 cout << "将它的低4位(右四位)都置为1的数为:"; // 分析:1000的二进制数有10位,就是将这10个位置1,对应十进制数1023,或运算 cout << (a | 1023) << endl; // 写法二 cout << "将它的低4位(右四位)都置为1的数为:"; // 分析:先右移10位,然后左移10位,清零低10位,然后加上1023,低10位置1,注意 “<<”优先级比“+”低 cout << (((a >> 10 ) << 10) + 1023) << endl; return 0; }
5、请文字解释以下代码运行的过程及结果。
short int s; //range?
s = 32768;
cout << s << " " << sizeof(short) << endl;
float f; double d;
f = 1.2345678901; d = 1.2345678901;
cout << fixed << setprecision(9) << f << " " << d << "\n";
int si; unsigned int ui;
si = -5; ui = 5;
cout << (si > ui) << '\n';
char c; int i;
c = 'A'; i = 0x30;
cout << c << " " << (int)c + 32 << " " << i << " " << (char)(i + 6) << endl;
分析:(请填写)
#include <iostream> #include <iomanip> using namespace std; int main() { short int s; // s的范围-32768 ~ 32767 s = 32768; // sizeof用来计算类型或数所占的字节数,short是16位的,一个字节占8位,所以sizeof(short) = 2 cout << s << " " << sizeof(short) << endl; float f; double d; f = 1.2345678901; d = 1.2345678901; // setprecision(9)表示显示9有效位数,与fixed结合使用则是设置小数为有9个 cout << fixed << setprecision(9) << f << " " << d << "\n"; int si; unsigned int ui; si = -5; ui = 5; // 不同类型数值比较大小时,会进行隐式转换,这里int 隐式转换成unsigned int, // 按照二进制表示方法,数值在内存中一补码形式存放 // -5: 1111 1111 1111 1111 1111 1111 1111 0011 // 5: 0000 0000 0000 0000 0000 0000 0000 0101 // 显然 -5 > 5, > 是关系运算符,返回1 或者 0, 所以输出1 cout << (si > ui) << '\n'; char c; int i; c = 'A'; i = 0x30; // 字符型数值一ASCII码存放,对应的是一个整型数 // c = 'A', 对应ASCII码是65 // int(c) + 32 会进行隐式转换,65 + 32 = 97 // 0x30 是16进制表示法,对应十进制为 3 * 16 + 0 = 48 // char(i+6) = char(48+6) = char(54), 对应字符6 // 也可以理解为char(48) 对应为字符0, 所以+6就是‘0’+6 = ‘6’ cout << c << " " << (int)c + 32 << " " << i << " " << (char)(i + 6) << endl; return 0; }
实验B 顺序结构和选择结构设计程序设计
一、实验目的及要求:
- 学会正确使用逻辑运算符和逻辑表达式;
- 熟练掌握if语句和switch语句;
- 掌握在程序设计中灵活使用顺序结构和选择结构。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019;或适合的C/C++编程环境。
三、实验内容及步骤:
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、有一个函数
x x<=0
Y= 5x-10 0<x<10
10x-20 x>=10
用cin输入函数输入x的值(分别为x<=0,0<x<10,x>=10),输出y的值 。
说明:这个题目主要是练习对if…else语句的使用。
#include <iostream> using namespace std; int main() { float x; cout << "请输入x的值: "; cin >> x; if(x <= 0) { cout << "Y = " << x << endl; } else if(x < 10) { cout << "Y = " << 5 * x - 10 << endl; } else { cout << "Y = " << 10 *x - 20 << endl; } return 0; }
2、给出一个不多于4位的正整数,要求:
(1) 求出它是几位数;
(2)分别输出每一位数;
(3)按逆序输出各位数字,例如原数为2560,应输出为0652。
说明:请分别使用if…else语句、switch语句进行实现。
#include <iostream> using namespace std; int main() { int a; cout << "请输入一个不多于4位的正整数:"; cin >> a; // if...else语句实现 if(a > 0 && a < 10) { cout << a << "是一位数" << endl; cout << "个位数为:" << a << endl; cout << "逆序输出为:" << a << endl; } else if(a < 100) { cout << a << "是两位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << a / 10 << endl; cout << "逆序输出为:" << a % 10 << a / 10 << endl; } else if(a < 1000) { cout << a << "是三位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << (a / 10) % 10 << endl; cout << "百位数为:" << a / 100 << endl; cout << "逆序输出为:" << a % 10 << (a / 10) % 10 << a / 100 << endl; } else if(a < 10000) { cout << a << "是四位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << (a / 10) % 10 << endl; cout << "百位数为:" << (a / 100) % 10 << endl; cout << "千位数为:" << a / 1000 << endl; cout << "逆序输出为:" << a % 10 << (a / 10) % 10 << (a / 100) % 10 << a / 1000 << endl; } else { cout << "输入非法" << endl; } // switch语句实现需要先计算位数 int n, b; b = a; n = 0; while(b) { b /= 10; n++; } switch(n) { case 1: cout << a << "是一位数" << endl; cout << "个位数为:" << a << endl; cout << "逆序输出为:" << a << endl; break; case 2: cout << a << "是两位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << a / 10 << endl; cout << "逆序输出为:" << a % 10 << a / 10 << endl; break; case 3: cout << a << "是三位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << (a / 10) % 10 << endl; cout << "百位数为:" << a / 100 << endl; cout << "逆序输出为:" << a % 10 << (a / 10) % 10 << a / 100 << endl; break; case 4: cout << a << "是四位数" << endl; cout << "个位数为:" << a % 10 << endl; cout << "十位数为:" << (a / 10) % 10 << endl; cout << "百位数为:" << (a / 100) % 10 << endl; cout << "千位数为:" << a / 1000 << endl; cout << "逆序输出为:" << a % 10 << (a / 10) % 10 << (a / 100) % 10 << a / 1000 << endl; break; default: cout << "输入非法" << endl; } return 0; }
实验C 循环结构程序设计
一、实验目的及要求
1.掌握while、for、do…while 循环结构的使用方法以及循环条件的使用;
2.能够使用三种循环结构设计程序、分析程序并解决实际问题;
3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;
4.正确编写具有循环结构的C语言程序。
二、实验设备与平台
1. 实验设备:计算机;
2. 平台:Windows操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013/2015/2017/2019;或适合的C/C++编程环境。
三、实验内容及步骤
编写程序,解下列问题,然后把编写的程序代码和运行结果截图复制到题目后面的空白处。
1、求 n = 1+2+···+100 。
方法一:用while语句编程。
方法二:用do-while语句,求1到100的和。
方法三:用for语句编程。
// 求 n = 1+2+···+100 // 方法一:用while语句编程。 // 方法二:用do-while语句,求1到100的和。 // 方法三:用for语句编程。 #include <iostream> using namespace std; int main() { int n, sum; n = 1; sum = 0; while(n <= 100) { sum += n++; } cout << "计算1+2+...+100 = " << sum <<endl; n = 1; sum = 0; do { sum += n++; }while(n <= 100); cout << "计算1+2+...+100 = " << sum <<endl; for(n = 1, sum = 0; n <= 100; n++) { sum += n; } cout << "计算1+2+...+100 = " << sum <<endl; cout << "计算1+2+...+100 = " << 100*(100+1)/2 <<endl; return 0; }
2、先由计算机“想”一个1~200之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。
#include <iostream> #include <time.h> using namespace std; int main() { char choice; int i, guess, n; srand(time(0)); while(1) { cout << "下面开始猜数\n"; n = rand() % (200 - 1) +1; // 生成一个随机数 // cout << n << endl; for(i = 0 ; i < 10; i++) { cout << "请输入你想猜的数:"; cin >> guess; if(guess < n) { cout << "你猜小了\n"; } else if(guess == n) { cout << "恭喜你,猜对了\n"; break; } else { cout << "你猜大了\n"; } cout << "你还想继续猜吗(想Y, 不想N):"; cin >> choice; if(choice == 'N') { break; } } cout << "你还想继续猜另外一个数吗(想Y, 不想N):"; cin >> choice; if(choice == 'N') { break; } } return 0; }