第十单元日考技能

第十单元-日考

1.字符串分割

①请按照要求输入一段话(英文)
②要求每个单词之间用空格分开
③要求可以识别单词的长度
④最后可以正确求出最长的单词长度并显示
⑤要求在主函数里实现

void test1(){
    string str = "abc aaaaaa b";
    string arr[10]; //{'abc','aaaaaa','b'}
    int k = 0;
    for(int i = 0;i<str.size();i++){
        if(str[i] !=' '){
            arr[k]+=str[i];
        } else{
            k++;
        }
    }
    int max = 0;
    for(int i = 0;i<k+1;i++){
       if(max < arr[i].length()){
           max = arr[i].length();
       }
    }
    cout << max << endl;
}

2.公式:abcd*e=dcba

①请编写十进制数,a,b,c,d,e
②要求满足公式abcd*e=dcba(a非0,e非0非1)
③问可以求出多少个?
④要求输出最小的abcd
⑤输出与之相应的e。

void test10_2(){
    int min = 10000; //存最小的数字
    int num = 0; //计数
    int e1  = 0; //保存最小数字对应的e
    for(int i = 1000;i<=9999;i++){
        int a = i/1000%10; //千位
        int b = i/100%10; //百位
        int c = i/10%10; //十位
        int d = i%10; //个位
        for(int e = 2;e<10;e++){
            if(i*e == d*1000+c*100+b*10+a){
                if(min > i){
                    min = i;
                    e1=e;
                }
                num++;
            }
        }
    }
    cout << min << endl;
    cout<< "个数:" << num << endl;
    cout<< "e:" << e1 << endl;
}

3.编一个函数GCD,求两个无符号整数的最大公约数。主函数输入两个正整数 m 和n,调用GCD,求出 m和n的最大公约数和最小公倍数.并输出。

①头文件导入正确
②正确定义函数
③在主函数中调用函数
④最大公约数和最小公倍数输出正确
⑤合理注释

void test10_3_2(){
    int m = 3;
    int n = 2;
    int min = (m>n)?n:m; //有可能最小的这个数字是最大公约数
    for(int i = min;i>=1;i--){
        if(m%i == 0 && n%i == 0){
            cout << "最大公约数:" << i << endl;
            cout << "最小公倍数:" <<m*n/i << endl;
            break;
        }
    }
}

5.一个人花8块钱买了一n只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。

①在主函数中输出
②正确导包
③请问他挣了还是赔了 挣了输出1 赔了输出0
④如果挣了,请问挣了多少钱
⑤代码规范
⑥合理注释

void test10_3_1(){
    int n = 9+11-8-10;
    if(n > 0){
        cout << 1;
    } else
        cout << 0;
}

6.有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

①导入正确包
②假如兔子都不死,问每个月的兔子总数为多少
③正确输出,代码思路清晰
④加入必要注释

int f(int n){
    if(n == 1 || n==2){
        return 1;
    } else
    {
        return f(n-1)+f(n-2);
    }
}

int main(){
    for(int n = 1;n<=12;n++){
        cout << f(n)<< endl;
    }
}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值