鱼C论坛

 找回密码
 立即注册
查看: 1022|回复: 11

[已解决]大佬们救命,函数这块不太懂,有什么办法可以帮帮吗

[复制链接]
发表于 2021-12-21 14:20:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、输入十个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,写三个函数:1.输入十个数;2.进行处理 3.输出十个数且整理后的十个数,每个数后跟一个空格(最后一个也要有)
二、有n个人围城一圈,顺序排号,从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位
三、有一字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串
最佳答案
2021-12-21 15:54:33
吾家有事情 发表于 2021-12-21 15:39
不对啊,在n=2就不成立了

请问大哥,修改后的代码正确吗?可否设最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-21 14:39:23 From FishC Mobile | 显示全部楼层
#include <stdio.h>

int nums[10]; // 全局

void insert(){
        for(int i = 0; i < 10; i++)
        scanf("%d", &nums[i]);
}

void process(){
        for(int i = 1; i < 10; i++)
        if(nums[i] < nums[0]){
                nums[0] -= nums[i];
                nums[i] += nums[0];
                nums[0] = nums[i]-nums[0];
        }
        for(int i = 0; i < 9; i++)
        if(nums[i] > nums[9]){
                nums[9] -= nums[i];
                nums[i] += nums[9];
                nums[9] = nums[i]-nums[9];
        }
}

void print(){
        for(int i = 0; i < 10; i++)
        printf("%d ", *(nums+i));
}


int main(){
        insert();
        process();
        print();
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 14:47:39 From FishC Mobile | 显示全部楼层
第二题不明白什么意思

以下是第三题:
#include <stdio.h>

int main(){
        int n, m;
        scanf("%d%d", &n, &m);
        char str1[n], str2[n-m];
        scanf("%s", str1);
        for(int i = m, j = 0; i < n; i++, j++)
        str2[j] = str1[i];
        printf("%s", str2);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-21 14:48:58 | 显示全部楼层
这是三个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 14:52:18 From FishC Mobile | 显示全部楼层
第二题不明白它在说什么,所以没有代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-21 14:55:18 | 显示全部楼层
其实我也看不懂第二题是什么意思,但是老师出的题。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-21 15:03:16 | 显示全部楼层
第二题的意思一个是这样,比如有三个人123,报数时3出局,剩下12,因为是一个圈,所以1报到了3,剩下了2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-21 15:04:31 | 显示全部楼层
傻眼貓咪 发表于 2021-12-21 14:52
第二题不明白它在说什么,所以没有代码


第二题的意思一个是这样,比如有三个人123,报数时3出局,剩下12,因为是一个圈,所以1报到了3,剩下了2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 15:07:08 From FishC Mobile | 显示全部楼层
第二题:
#include <stdio.h>

int main(){
        int n;
        scanf("%d", &n);
        int arr[n], m = 0;
        for(int i = 0; i < n; i++)
        arr[i] = 1;
        for(int i = 0, c = 1, m = 0; m < n; c++, i++)
        if(arr[i%n] && c == 3){
                c = 0;
                arr[i%n] = 1;
                printf("%d ", i%n+1);
                m++;
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-21 15:39:11 | 显示全部楼层

不对啊,在n=2就不成立了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 15:40:35 From FishC Mobile | 显示全部楼层
吾家有事情 发表于 2021-12-21 15:39
不对啊,在n=2就不成立了

已修改
#include <stdio.h>

int main(){
        int n;
        scanf("%d", &n);
        int arr[n];
        for(int i = 0; i < n; i++)
        arr[i] = 1;
        for(int i = 0, m = 1, c = 0; c < n; i++){
                if(arr[i%n]){
                        if(!(m%3)){
                                arr[i%n] = 0;
                                printf("%d ", (i%n)+1);
                                c++;
                                if(c == n) printf("\nlast: %d", (i%n)+1);
                        }
                        m++;
                }
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-21 15:54:33 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
吾家有事情 发表于 2021-12-21 15:39
不对啊,在n=2就不成立了

请问大哥,修改后的代码正确吗?可否设最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-9 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表