gpt4 book ai didi

比较函数中的数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:08 25 4
gpt4 key购买 nike

我的函数 countCopies 无法正常工作,即使它获得了正确的输入。它应该做的就是将一个整数数组作为输入,然后在这个数组中搜索第二个输入 x 的副本。

int main() {
char intArray[100]; //The integer array can only hold 100 integers
int i, x, j;
printf("Please enter a couple of integers and when you're done enter end. ");

i = 0;
while (scanf("%d", &intArray[i++]) == 1)
/*empty loop*/;

scanf("%*s");

printf("Enter x:");
scanf("%d", &x);

printf("Copies = %d\n", countCopies(intArray, i, x));
}

int countCopies(int a[], int n, int x) {
int count = 0;
int j = 0;
for (j = 0; j < n - 1; j++) {
if (a[j] == x) {
count++;
}
}
return count;
}

最佳答案

for循环不正确:您应该将测试更改为 j < n .惯用语 for在 C 中循环:for (j = 0; j < n; j++) ...精确迭代 n次,j取值0n-1包括在内,它们恰好对应于 n 数组中的所有有效位置元素。

请注意,数组的元素类型错误:它应该是 int , 不是 char .您还应该检查第一个循环中的数组边界以及最后一个 scanf 的转换是否成功。 .

这是更正后的版本:

#include <stdio.h>

int countCopies(int a[], int n, int x);

int main(void) {
int intArray[100]; //The integer array can only hold 100 integers
int i, x;

printf("Please enter a series of integers, end the list with the word end.\n");

for (i = 0; i < sizeof(intArray) / sizeof(*intArray); i++) {
if (scanf("%d", &intArray[i]) != 1)
break;
}
if (scanf("%d", &x) == 1) {
printf("too many numbers\n");
return 1;
}
scanf("%*s"); /* skip the end word. Note that any word is OK */

printf("Enter x:");
if (scanf("%d", &x) == 1) {
printf("Copies = %d\n", countCopies(intArray, i, x));
}
return 0;
}

int countCopies(int a[], int n, int x) {
int j, count = 0;

for (j = 0; j < n; j++) {
if (a[j] == x) {
count++;
}
}
return count;
}

关于比较函数中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com