求C语言大神帮我注释,越详细越好,就是说明每一句代码的意思,顺便求一段400字总结

2024-12-14 13:57:25
推荐回答(3个)
回答1:

大哥 你这个实在太多了,我给你注释了一下,总结你自己写一下吧。
这个程序大概的意思就是手动输入20个数字,然后分别筛选出奇数和偶数存入两个数组,分别对这两个数组里的元素进行排序,存入到文件a,b,然后再从文件a,b中把文件读取出来吗,再进行降序排序,输出到屏幕。
就说这么多了,你理解一下,有啥不懂得可以追问。
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"

void inputdata(int d[],int num);
void Sort(int d[],int num,int m);
void sw(int *a,int *b);
void hb(int s[],int a[],int j,int b[],int o);

void sw(int *a,int *b)
{
int temp; //定义中间变量
temp=*a; //先把前一个数赋值给中间变量
*a=*b; //再把后一个数赋值给前一个数
*b=temp; //再把中间变量的值也就是前一个数赋值给后一个数 实现交换
//运用指针形成逆转语句,方便下面的排序问题
}
void Sort(int d[],int num,int m)
{
int i,j;

for(i=0;i {
for(j=num-1;j>i;j--)
{
if(m==0) //如果m是0 则对偶数进行排序
{
if(d[j] sw(&d[j],&d[j-1]); //如果前一个数比后一个数小,则交换两个数字的位置。
}
else //如果m是1 则对奇数进行排序
{
if(d[j]>d[j-1]) //如果前一个数比后一个数大,则交换两个数字的位置。
sw(&d[j],&d[j-1]);
}
}
}

}
void hb(int s[],int a[],int j,int b[],int o)
{
int i;
for(i=0;i s[i]=a[i];
for(i=j;i s[i]=b[i-j];
}
void inputdata(int d[],int num)
{
int i;
for(i=0;i {
scanf("%d",&d[i]); // 循环输入 num也就是传入进来的n 20个数
}
}
int rFile(FILE *fp,int d[])
{
int i=0;
char ch;
char cc[10];
int kk=0;
int mm=0;

ch=getc(fp); //从文件中获取一个字符
while(ch != EOF && mm==0) //如果获取到的字符不是EOF,EOF是文件结尾的意思
{
if(isdigit(ch)==0) //如果是数字0-9
{
cc[kk]='\0';
d[i++]=atoi(cc); //将获取到的字符转换成数字
kk=1;
while(isdigit(ch)==0) //如果是数字0-9
{
ch=getc(fp);
if(ch==EOF)
{
mm=1;
break;
}
}
cc[0]=ch;
}
else
cc[kk++]=ch;
ch=getc(fp);
}
return i;
}
int main()
{
int d[20];
int a[20],b[20];
int n;
int i,j,o;
int s[20];
FILE *fp1;
FILE *fp2;

//创建新文件
if((fp1=fopen("a.txt","w"))==0) //以可写形式打开 a.txt文件
{
printf("无法创建a.txt!");
return 0;
}
if((fp2=fopen("b.txt","w"))==0) //以可写形式打开 b.txt文件
{
printf("无法创建a.txt!");
return 0;
}

n=20;
//输入n个数
inputdata(d,n); //调用函数 inputdata 将 d[20] 和 n作为参数传入
//区分奇偶
j=0;o=0;
for(i=0;i {
if(d[i]%2==0) //如果是偶数 存入 b数组
b[o++]=d[i];
else
a[j++]=d[i]; //如果是奇数 存入 a数组
}
//对奇数、偶数分别排序
Sort(a,j,0);
Sort(b,o,1);
//写数据到文件
for(i=0;i {
fprintf(fp1,"%d ",a[i]);
}
for(i=0;i {
fprintf(fp2,"%d ",b[i]);
}
//关闭文件
fclose(fp1);
fclose(fp2);

//打开文件
if((fp1=fopen("a.txt","r"))==0) //以只读方式打开文件
{
printf("无法创建a.txt!");
return 0;
}

if((fp2=fopen("b.txt","r"))==0) //以只读方式打开文件
{
printf("无法创建a.txt!");
return 0;
}
j=rFile(fp1,a);
o=rFile(fp2,b);

//对奇数、偶数分别排序
Sort(a,j,1);
Sort(b,o,1);
//输出a
printf("文件a.txt中数据降序输出:\n");
for(i=0;i {
printf("%d ",a[i]); //将文件a.txt的数据排序后 打印在控制台
}
printf("\n");
//输出b
printf("文件b.txt中数据降序输出:\n");
for(i=0;i {
printf("%d ",b[i]); //将文件b.txt的数据排序后 打印在控制台
}
printf("\n");
/*
//合并a和b
hb(s,a,j,b,o);
Sort(s,o+j,1);
//输出合并数组
printf("合并文件a.txt和b.txt中数据后,降序输出:\n");
for(i=0;i {
printf("%d ",s[i]);
}
printf("\n");
*/
}

回答2:

程序员最讨厌的事:写注释和别人不写注释,写文档和别人不写文档

回答3:

这么麻烦的问题自己解决吧、不会有给你解决的