Sdut——PTA地信 自主选做

文章指出两个C语言程序的问题,包括函数参数定义、指针类型的声明、循环变量的使用以及条件判断结构。在第一个程序中,指出了函数参数命名冲突和不必要的初始化。在第二个程序中,涉及了孙子定理的运用,但存在循环变量错误和可能的逻辑问题。第三个程序查找字符串中的字符下标,但可能存在找不到的情况。
摘要由CSDN通过智能技术生成

 

 

 

 

 

 6-4目前还是通过不了测试,未找到问题

 

程序中的问题:

  1. 在函数定义中,函数名maxnum后面的参数列表中,参数*pmax应该写成int *pmax,以明确指针类型为int

  2. 在函数实现中,第一行*pmax=0;没有必要,因为在后面的比较过程中,最大值会被正确地赋值给*pmax

  3. 在比较三个数的大小时,应该使用if...else if...else结构,以避免重复比较和不必要的赋值操作。

 

 

程序中的问题:

  1. 在函数定义中,参数int *pmax和函数体中的变量int *pmax重名,这是不允许的。应该将函数体中的变量名修改为其他名称。

  2. 在函数体中,将int *pmax初始化为0是没有必要的,因为在后面的比较过程中,最大值会被正确地赋值给*pmax

  3. 在循环中,循环变量应该是i而不是N,因为N未定义。

  4. 在循环中,应该使用pmax指针来比较数组元素的大小,而不是使用变量*pmax

  5. 函数的返回值应该是最大值*pmax,而不是变量max

void maxnum(int a[], int n, int *pmax) {
    *pmax = a[0];
    for (int i = 1; i < n; i++) {
        if (*pmax < a[i]) {
            *pmax = a[i];
        }
    }
}

 

 

 

 

 

 

 

 

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a1 = 2, a2 = 3, a3 = 2; // 三个除数的余数
    int M1 = 3, M2 = 5, M3 = 7; // 三个除数
    int M = M1 * M2 * M3; // 模数
    int t1 = M / M1, t2 = M / M2, t3 = M / M3; // 三个模数
    int r1, r2, r3; // 三个除数的系数
    int x; // 解
    int found = 0; // 标记是否找到解
    for (int i = 1; i <= n; i++) {
        r1 = i % M1, r2 = i % M2, r3 = i % M3;
        x = (a1 * t1 * r1 + a2 * t2 * r2 + a3 * t3 * r3) % M;
        if (r1 == a1 && r2 == a2 && r3 == a3) {
            printf("%d ", x);
            found = 1;
        }
    }
    if (!found) {
        printf("未找到");
    }
    return 0;
}

 程序中的思路是:根据孙子定理,可以将三个除数的余数和模数代入公式,得到求解方程组的系数,从而求解出原方程的解。在程序中,使用循环枚举[1,n]区间内的整数,对于每个整数,先计算出它对应的三个除数的余数,然后根据孙子定理求解出解,最后判断解是否符合条件,如果符合条件则输出,否则继续循环。如果循环结束后仍然没有找到符合条件的解,则输出"未找到"。

 该题目前错误

 

 

 

 

 

 

 

 

 参考微课视频:利用循环实现不对称判断
C语言—利用循环实现不对称判断_哔哩哔哩_bilibili

 #include<stdio.h>
#include<string.h>
int main(void)
{
    char a[100],n;
    scanf("%c",&n);
    getchar();
    gets(a);
    int m=strlen(a);
    int i;
    for(i=0;i<m;i++)
    {
        if(n==a[i])
        {printf("%d\n",i);
        break;
        }
    }
    if(i>=m)
    {printf("查无此字符\n");
    }
    return 0;
}

修改后还是无法找到下标

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值