我在编写执行以下操作的代码时遇到问题:声明一个struct{char c; int x; }
数组并scanf
通过循环加载它。加载后,将调用函数f
,将结构组件中出现的每个数字替换c
为 0,并将返回被替换为 0 的数字的总和。
代码和输出如下,我的问题是函数中的循环f
似乎迭代了一次,它给出了一些非常奇怪的值。
这是一个考试问题,所以我必须使用printf
,scanf
等等。我还有一个小时的考试,所以任何快速帮助表示赞赏:)
代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 2
struct par {
char c;
int x;
};
int f(struct par *niz) {
int i;
int n=0;
for(i=0; i<MAX; i++) {
if(isdigit(niz[i].c)) {
niz[i].c = niz[i].c-'0';
printf("niz[i].c = %d\n i = %d", niz[i].c, i);
n=n+niz[i].c;
niz[i].c='0';
}
}
return n;
}
void main() {
int n;
int i;
struct par niz[MAX];
printf("enter\n");
for(i=0; i<MAX; i++) {
scanf("%c", &niz[i].c);
scanf("%d", &niz[i].x);
}
n=f(niz);
for(int i=0; i<MAX; i++) {
printf("%d\n", niz[i].c);
printf("%d\n", niz[i].x);
}
printf("n = %d\n", n);
}
输出:
enter
2
2
2
niz[i].c = 2
i = 048
2
10
2
n = 2