如何用c语言编写一个程序?

Python015

如何用c语言编写一个程序?,第1张

# include<stdio.h>

int main()

{

int i,m=0

for(i=2i<=100i+=2) m=m+i

printf("%d\n",m)

return 0

}

#include

int

main()

{

int

i,sum=0

for(i=1i<=50i++)

{

sum=sum+2*i

}

printf("2+4+6+…+98+100=%d\n",sum)

return

0

}

扩展资料:

C程序是由一组变量或是函数的外部对象组成的。 函数是一个自我包含的完成一定相关功能的执行代码段。我们可以把函数看成一个“黑盒子”,只要将数据送进去就能得到结果,而函数内部究竟是如何工作的,外部程序是不知道的。外部程序所知道的仅限于输入给函数什么以及函数输出什么。函数提供了编制程序的手段,使之容易读、写、理解、排除错误、修改和维护。

C程序中函数的数目实际上是不限的,如果说有什么限制的话,那就是,一个C程序中必须至少有一个函数,而且其中必须有一个并且仅有一个以main为名的函数,这个函数称为主函数,整个程序从这个主函数开始执行。

参考资料来源:百度百科-C语言

c语言的源程序语法结构如下:

#include<stdio.h>//预处理语句

/* 自定义函数1*/

/* 自定义函数2*/

int main()

{

//main()主函数执行调用以上定义的函数的顺序

return 0//执行完毕 退出

}

示例如下:

#include <stdio.h>

int main()

{

printf("welcome to c language!!!\n")

return 0

}

程序就是读取文件数组,再将数组进行排序,最后写入文件。

读写文件流程:fopen获取文件流(根据读写需求,选择参数,使用完必须调用fclose函数关闭),fscanf读取文件内容,fseek控制文件流指针,fprintf写入文件。

选择排序:每个循环周期选出一个最值,交换一次。

下面是代码(数组为动态数组):

#include <stdio.h>

#include <malloc.h>

int maxLen//数组长度

int *read2Nums(char path[])//读取

int write2File(int *nums,char path[])//写入

void showNums(int *nums)

int px(int *nums,int flag)//选择排序flag=1升序,flag=0降序

int main()

{

  int *nums=NULL

  char rPath[]="c:\\000.dat",wPath[]="c:\\rank.dat"

  if(!(nums=read2Nums(rPath))) return 1

  showNums(nums)

  printf("数组升序排列:\n")

  if(px(nums,1)==-1) return 1

  showNums(nums)

  printf("数组降序排列:\n")

  if(px(nums,0)==-1) return 1

  showNums(nums)

  printf("写入到文件路径%s下(存在覆盖,不存在新建)\n",wPath)

  if(write2File(nums,wPath)==-1) return 1

  printf("写入成功!\n")

  return 0

}

void showNums(int *nums)

{

  int i

  if(nums) for(i=0,printf("文件内容:\n")i<maxLenprintf("%d ",nums[i]),i++)

  printf("\n")

}

int px(int *nums,int flag)

{

  int i,j,n,temp

  if(!nums) return -1

  for(i=0i<maxLen-1i++)

  {

      n=i

      for(j=i+1j<maxLenj++)

      {

          if(flag &&nums[n]>nums[j]) n=j

          if(!flag &&nums[n]<nums[j]) n=j

      }

      temp=nums[i],nums[i]=nums[n],nums[n]=temp

  }

  return 1

}

int write2File(int *nums,char path[])

{

  int i

  FILE *fp=NULL

  if(!nums) return -1

  if(!(fp=fopen(path,"w"))) return -1

  //fseek(fp,SEEK_END)

  for(i=0i<maxLeni++)

      fprintf(fp,"%d ",nums[i])

  fclose(fp)

  return 1

}

int *read2Nums(char path[])

{

  int *nums=NULL,*temp=NULL,cnt=0

  FILE *fp=NULL

  maxLen=10

  if(!(fp=fopen(path,"r"))) return NULL

  nums=(int *)malloc(sizeof(int)*maxLen)

  if(!nums) return NULL

  while(fscanf(fp,"%d",&nums[cnt++])!=-1)

      if(cnt==maxLen)//数组长度不够扩展(每次扩展10长度)

      {

          maxLen=maxLen+10

          temp=(int *)realloc(nums,sizeof(int)*maxLen)

          if(temp) return NULL

          nums=temp

      }

  if(--cnt<maxLen)//函数结束前,删除多余地址,减少内存占用

  {

      maxLen=cnt

      temp=(int *)realloc(nums,sizeof(int)*maxLen)

      if(!temp) return NULL

      nums=temp

  }

  fclose(fp)

  return nums

}