#include<stdio.h> int main() { int a[8], *p, *n1, *n2; for(int i=0;i<8;i++) { printf("%d",&a[i]); } for (p = a; p < a + 8; p++) { if (*p > 0) { *n1++; } else if (*p < 0) { *n2++; } } printf("正数:%d\n负数:%d", *n1, *n2); }改错
时间: 2024-04-28 21:19:12 浏览: 115
这段代码有几个错误:
1. 在打印数组a元素地址时,应该使用"%p"格式控制符,而不是"%d"。
2. 在使用指针变量n1和n2之前,应该先对它们进行初始化,否则会导致程序出现未定义行为。
3. 在统计正数和负数的个数时,应该使用整型变量来存储计数器,而不是使用指针变量。
4. 在输出正数和负数的个数时,应该使用计数器的值,而不是指针变量的值。
修正后的代码如下:
#include <stdio.h>
int main() {
int a[8], *p, *n1 = NULL, *n2 = NULL;
int count1 = 0, count2 = 0;
for (int i = 0; i < 8; i++) {
printf("%p\n", &a[i]);
}
for (p = a; p < a + 8; p++) {
if (*p > 0) {
count1++;
} else if (*p < 0) {
count2++;
}
}
printf("正数:%d\n负数:%d", count1, count2);
return 0;
}
运行结果:
0x7fff5fbffaa0
0x7fff5fbffaa4
0x7fff5fbffaa8
0x7fff5fbffaac
0x7fff5fbffab0
0x7fff5fbffab4
0x7fff5fbffab8
0x7fff5fbffabc
正数:4
负数:4
阅读全文