C++实验五

【问题描述】

编写如下原型的函数:

void split(double x,intiPart,doublefPart);

提取出数据x的整数部分与小数部分,分别放于iPart与fPart处,由于形参iPart与fPart都是指针,从而可实现将这两个结果“带回”到主函数中。

在主函数中

输入一个数

输出它的整数部分和小数部分,用空格隔开。

提示:一个double类型数,强制类型转换后就是int,也就是整数部分,差为小数部分。这两个值用指针iPart和指针fPart带回(通过修改指针的目标变量值。)

【输入形式】一个数

【输出形式】整数部分 小数部分,用空格隔开

【样例输入】12.3
【样例输出】12 0.3

#include<iostream>
using namespace std;
void split(double x, int* ipart, double* fpart)
{
    *ipart = (int)x;
    *fpart = x - int(x);

}
int main()
{
    double x;
    cin >> x;
    int i; double f;
    split(x, &i, &f);
    cout << i << ' ' << f;
    return 0;
}

【问题描述】

编制具有如下原型的函数findLast:

charfindLast(charsourceStr,char*subStr);

findLast函数则要返回源串sourceStr中最后一次出现subStr子字符串的头字符位置。

而后编制主函数,输入两个字符串,将它们用作实参来调用这两个函数,如果返回NULL输出-1,否则输出子字符串出现时头字符在原字符串的下标,每个结果占一行。

要求实现程序中不可使用“string.h”头文件内有关寻找子串的标准库函数。

【输入形式】输入源串sourceStr,子字符串subStr。

【输出形式】子字符串subStr最后一次在源串sourceStr中出现的位置

【样例输入】

welcometochinauniversityofminingandtechnology

in

【样例输出】29

#include<iostream>
using namespace std;
char *find(char*source,char*sub)
{
    char *temp=NULL;
    char *s1,*s2;
    for(int i=0;source[i]!='\0';i++)
    {
        if(source[i]==*sub)
        {
            int flag=1;
            s1=source+i;s2=sub;
            while(*s2!='\0')
            {
                if(*s1!=*s2)
                flag=0;
                s1++;s2++;
            }
            if(flag) temp=source+i;
        }
    }
    return temp;
}
int main()
{
    char s[500],sub[500];
    cin>>s>>sub;
    char *temp=find(s,sub);
    if(temp)cout<<temp-s;
    else
    cout<<-1;
    return 0;
}

如果是头次出现

#include<iostream>
using namespace std;
char *find(char*source,char*sub)
{
    char *temp=NULL;
    char *s1,*s2;
    for(int i=0;source[i]!='\0';i++)
    {
        if(source[i]==*sub)
        {
            int flag=1;
            s1=source+i;s2=sub;
            while(*s2!='\0')
            {
                if(*s1!=*s2)
                flag=0;
                s1++;s2++;
            }
            if(flag) 
            {
                temp=source+i;
                break;
            }
        }
    }
    return temp;
}
int main()
{
    char s[500],sub[500];
    cin>>s>>sub;
    char *temp=find(s,sub);
    if(temp)cout<<temp-s+1;
    else
    cout<<-1;
    return 0;
}

 

posted @ 2020-12-23 15:27  Dk只能爬  阅读(367)  评论(0编辑  收藏  举报