文章目录
第09页
题面如下:

题解如下:
D1064.c
原文件
#include <stdio.h>
#define N 20
void fun(int *a, int n, int *odd, int *even);
int main(void)
{
int a[N] = {
1, 9, 2, 3, 11, 6}, i, n=6, odd, even;
printf("The original data is : \n" );
for (i=0; i<n; i++)
{
printf("%5d", *(a + i));
}
printf("\n\n");
/*********Found************/
fun(a, n, odd, even);
printf ( "The sum of odd numbers: %d\n", odd );
printf ( "The sum of even numbers: %d\n", even );
return 0;
}
void fun(int *a, int n, int *odd, int *even)
{
int i, sum_odd=0, sum_even=0;
for (i=0; i<n; i++)
{
/*********Found************/
if ((a+i) % 2 == 0)
{
sum_even += a[i];
}
else
{
sum_odd += a[i];
}
}
*odd = sum_odd;
*even = sum_even;
}
改后文件
#include <stdio.h>
#define N 20
void fun(int *a, int n, int *odd, int *even);
int main(void)
{
int a[N] = {
1, 9, 2, 3, 11, 6}, i, n=6, odd, even;
printf("The original data is : \n" );
for (i=0; i<n; i++)
{
printf("%5d", *(a + i));
}
printf("\n\n");
/*********Found************/
fun(a, n, &odd, &even);
printf ( "The sum of odd numbers: %d\n", odd );
printf ( "The sum of even numbers: %d\n", even );
return 0;
}
void fun(int *a, int n, int *odd, int *even)
{
int i, sum_odd=0, sum_even=0;
for (i=0; i<n; i++)
{
/*********Found************/
if (*(a+i) % 2 == 0)
{
sum_even += a[i];
}
else
{
sum_odd += a[i];
}
}
*odd = sum_odd;
*even = sum_even;
}
考查要点:
- 传参时,参数类型要一致,是值就值变量名,是指针就传地址
- 判断时,不是用地址,而是使用地址里面的值,要取指针的解引用,要注意运算符的优先级
D1065.c
原文件
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *srcFile, *destFile;
int ch;
/*********Found************/
if (argc != 2)
{
printf("输入参数有误.\n");
exit(1);
}
/*********Found************/
if ((srcFile = fopen("1.txt", "rb")) == NULL)
{
printf("无法打开源文件 %s\n", argv[1]

本文通过对多个C语言程序实例的分析,展示了常见的编程错误及其修正方法,涉及数组操作、文件处理、内存分配等方面的问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



