2016-2017学年第二学期C++第四章(2)

C++ 上机课参考答案

本系列文章供北京邮电大学信通院及数媒学院「C++高级程序语言设计」上机课学生参考。

2016-2017学年第二学期C++第四章(2)

1504.VC++实验4.2 结构数组使用

//VC++实验4.2 结构数组使用
/*
题目描述
编写一个记录5个学生的姓名、性别、年龄和学号的程序,要求使用结构数组表示学生信息,用for循环获得键盘输入的学生记录的数据,所有数据输入完毕后,将5个学生的信息在屏幕上输出,格式要求:按表格行列格式输出,每行输出一个学生的信息,按照姓名、性别、年龄、学号的顺序,各列信息左对齐,各信息占10位。
输入
John male 18 2016211001
Kim  male 18 2016211002
David male 18  2016211003
Marry  female 18 2016211004
Anna  female 18  2016211005
输出
John      male      18        2016211001
Kim       male      18        2016211002
David     male      18       2016211003
Marry     female    18        2016211004
Anna      female    18        2016211005
*/
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
struct student
{
    string name;
    string sex;
    int age;
    string num; //定义为长整形会错误50%
};
int main()
{
    student a[5];
    for(int i = 0; i < 5; i++)
        cin >> a[i].name >> a[i].sex >> a[i].age >> a[i].num;
    for(int i = 0; i < 5; i++)
        cout << setiosflags(ios::left) 
            << setw(10) << a[i].name
            << setw(10) << a[i].sex
            << setw(10) << a[i].age
            << setw(10) << a[i].num << endl; 

    return 0;
}

1507.VC++实验4.5 计算第几天

//VC++实验4.5 计算第几天
/*
题目描述
定义一个结构型变量(包括年、月、日),并从键盘上获取该变量的值,计算该日在本年中是第几天,输出到屏幕上,格式为:“X年X月X日是本年中的第X天。”(提示:注意闰年问题)。
输入
2017 4 1
输出
2017年4月1日是本年中的第91天。
样例输入
2004 12 21
样例输出
2004年12月21日是本年中的第356天。
*/
#include <iostream>
using namespace std;
struct date
{
  int year;
  int month;
  int day;
};
int main()
{
    int sum = 0, m;
    date n;
    cin >> n.year >> n.month >> n.day;
    (((n.year % 4 == 0) && (n.year % 100 != 0))||(n.year % 400 == 0))?m=29:m=28;    //判断闰年
    switch(n.month) //case 不加 break; 时顺序执行,所以这里顺序不能变。
    {
        case 12:
            sum +=30;
        case 11:
            sum +=31;
        case 10:
            sum +=30;
        case 9:
            sum +=31;
        case 8:
            sum +=31;
        case 7:
            sum +=30;
        case 6:
            sum +=31;
        case 5:
            sum +=30;
        case 4:
            sum +=31;
        case 3:
            sum +=m;
        case 2:
            sum +=31;
        case 1:
            sum += n.day;
            break;
        default:
            break;
        }
    cout << n.year << "年" << n.month << "月" << n.day << "日是本年中的第" << sum << "天。";

    return 0;
}

1508.VC++实验4.6 字母统计

//VC++实验4.6 字母统计
/*
题目描述
从键盘输入一行或几行字符串,行数由键盘输入,一行字符串用字符数组存储。请统计所输入的字符串中26个字母(不区分大小写)出现的次数,并将出现次数非零的字母统计结果输出到屏幕上,格式参见样例。如果没有字母,请输出字符串中无字母。
输入
1
I come quickly !
输出
c:2
e:1
i:2
k:1
l:1
m:1
o:1
q:1
u:1
y:1
样例输入
2
12 345
90
样例输出
字符串中无字母。
*/
//程序说明:此程序可看作三部分,输入、计算、输出,其中计算、输出大同小异,原理相同,但输入部分差别很大,以王朋硕代码为例,是将每行空格间的字符串作为输入单元,进行输入,而我的是将一行作为输入单元,史一栋的是将二维数组作为输入单元。
#include <iostream>
using namespace std;
int b[26] = {0};
//判断函数
int judge(char x)
{
    if(x >= 'a' && x <= 'z')   //判断小写字母
        b[x - 'a']++;
    else if(x >= 'A' && x <= 'Z')   //判断大写字母
        b[x - 'A']++;
}
int main()
{
    int n;
    cin >> n;
    char a[100] = {0};

    //输入
    for(int i = 0; i <= n; i++)
    {
        cin.getline(a, 100, '\n');  //输入一行到字符数组 a 中,当输入到 100 或遇到 '\n'(Enter) 时结束输入。
        int j = 0;
        while(a[j] != '\0')
        {
            judge(a[j]);
            j++;
        }
    }

    //输出
    int count = 0;
    for(int i = 0; i < 26; i++)
    {
        if(b[i] != 0)
        {
            cout << char(i + 'a') << ":" << b[i] << endl;
            count++;
        }
    }
    if(count == 0)
        cout << "字符串中无字母。";

    return 0;
}

猜你喜欢

转载自blog.csdn.net/u013594828/article/details/71036403