6-4目前还是通过不了测试,未找到问题
程序中的问题:
-
在函数定义中,函数名
maxnum
后面的参数列表中,参数*pmax
应该写成int *pmax
,以明确指针类型为int
。 -
在函数实现中,第一行
*pmax=0;
没有必要,因为在后面的比较过程中,最大值会被正确地赋值给*pmax
。 -
在比较三个数的大小时,应该使用
if...else if...else
结构,以避免重复比较和不必要的赋值操作。
程序中的问题:
-
在函数定义中,参数
int *pmax
和函数体中的变量int *pmax
重名,这是不允许的。应该将函数体中的变量名修改为其他名称。 -
在函数体中,将
int *pmax
初始化为0
是没有必要的,因为在后面的比较过程中,最大值会被正确地赋值给*pmax
。 -
在循环中,循环变量应该是
i
而不是N
,因为N
未定义。 -
在循环中,应该使用
pmax
指针来比较数组元素的大小,而不是使用变量*pmax
。 -
函数的返回值应该是最大值
*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;
}
修改后还是无法找到下标