实验12

1.题目描述

程序功能】 随机生成n个10-100之间的自然数,其中n不大于50,实现对其从小到大排序,分别输出排序前、后的数据。

程序调试要求】在给定的程序中,只允许在原语句上进行修改,不能增加或删除整条语句或修改算法(共计有5处错误,已在错误语句后用//标出)。

程序运行结果

请输入产生随机数个数

8

随机数为:

21      50      34      86      99      74      72      67

排序后数据为:

21      34      50      67      72      74      86      99

#include <iostream>
#include <stdlib.h>
#include <time.h>
#define    N 50
using namespace std;
inline void swap(int &a, int &b)                // 
{
    int t=a; a = b, b = t;
}

void sort(int a[], int n)
{
    for(int i = n-1; i>0; i-=1)                    //    
    {
        int flag = 1;
        for(int j=0; j<i; j+=1)
        {
            if(a[j] > a[j+1])                    //    
                swap(a[j], a[j+1]), flag = 0;
        }
        if(flag)
            break;
    }
}

int main()
{
    int a[N] = {0};
    int n;
    cout<<"请输入产生随机数个数\n";
    cin>>n;
    if(n<=0 || n>N)
        exit(1);
    srand(unsigned(time(0)));    
    int i;
    for(i=0; i<n; i++)
        a[i] = (rand()%9+1)*10+rand()%10;
    cout<<"随机数为:\n";
    for(i=0; i<n; i+=1)
        cout<<a[i]<<'\t';
    cout<<endl;
    sort(a, n);                    //
    cout<<"排序后数据为:\n";                
    for(i=0; i<n; i+=1)
        cout<<a[i]<<'\t';
    cout<<endl;
    getchar();
    getchar();
}

 

2.题目描述

【程序功能】我们常用字符串在不同机器之间传送数据。具体方法为:发送方将若干个子字符串(假设长度为8)用特殊符号(假设为冒号’:’)连接成一个长字符串发送出去,接收方收到这个字符串后将它还原成若干个子字符串。假设子字符串由字母和数字组成,请编写一个程序模拟数据发送和接受过程。子字符串个数由键盘输入。

【编程要求】

1.编写字符串分割函数void Split(char a[],char b[][10],int n)。函数第一个参数为待分割的字符串,第二参数用来存储分割后的子字符串,第三参数为子字符串个数。不允许在此函数中输出分割后获得的子字符串。

1)能够正确分割字符串获得子字符串

2)能够将分割后的子字符串存入二维字符数组

2.编写main()函数 

1)使用随机数生成随机ASCII码,并在循环中筛选出大写字母、小写字母和数字

2)生成若干个长度为8的子字符串并用冒号(‘:’)连接成一个长字符串

3)调用Split函数分割字符串,并输出原字符串和分割后的子字符串

3.程序运行结果如下图:

提示

 1)使用随机数需要包含头文件stdlib.h和time.h,请先调用srand(time(NULL)),再调用rand()函数生成随机整数。

 2)可以调用函数strcat(str1,str2),实现将字符串st2拼接到字符串str1后面,此函数使用需包含string.h头文件。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
using namespace std;
void Split(char a[],char b[][10],int n){
    for(int i=0;i<n;i++){
        for(int j=0;j<8;j++)
            b[i][j]=a[i*9+j];
        b[i][8]='\0';
    }
}
int main(){
    int n,i=0;
    char a[90],b[10][10];
    cout<<"请输入子字符串数量(<10)"<<endl;
    srand(unsigned(time(0)));
    while(i<=80){
        if((i+1)%9==0)    a[i++]=':';
        else{
            char c=rand()%(int('z')+1);
            if((c>='0' && c<='9') || (c>='A' && c<='Z') || (c>='a' && c<='z'))
                a[i++]=c;    
        }
    }
    cin>>n;
    a[9*n]='\0';
    cout<<"原字符串:"<<a<<endl;
    Split(a,b,n);
    for(int i=0;i<n;i++){
        cout<<b[i]<<endl;
    }
    getchar();
    getchar();
}

 

posted @ 2021-12-18 16:45  LittleOrange  阅读(50)  评论(0编辑  收藏  举报