广州大学学生实验报告,程序设计基础,实验1程序控制结构

广州大学学生实验报告

开课学院及实验室:计算机学院/电子信息楼                   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  顺序结构和选择结构设计程序设计

一、实验目的及要求:

  1. 学会正确使用逻辑运算符和逻辑表达式;
  2. 熟练掌握if语句和switch语句;
  3. 掌握在程序设计中灵活使用顺序结构选择结构。

二、实验设备与平台

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;
}

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值