用c语言编程

用c语言编程:定义一个包含10个整数的数组,利用指针,将数组中所有元素的值对称交换。

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

读写文件流程: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<maxLen;printf("%d ",nums[i]),i++);

    printf("\n");

}

int px(int *nums,int flag)

{

    int i,j,n,temp;

    if(!nums) return -1;

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

    {

        n=i;

        for(j=i+1;j<maxLen;j++)

        {

            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=0;i<maxLen;i++)

        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;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-12-18
#include <stdio.h>
int main()
{
 int a[10] = {0,1,2,3,4,5,6,7,8,9};    //这里用初始化的方式为数组赋值,以便测试。你也可以用控制台或文件的方式读入你的数据。
 int *s, *t, tmp;    //定义两个指针,以及一个临时变量
 s = a;
 t = a+9;
 while(s<t)
 {
  //交换
  tmp = *s;
  *s = *t;
  *t = tmp;
  //移动指针指向下一组元素
  s++;
  t--;
 }
 //打印结果
 for(s=a;s<=a+9;s++)
  printf("%d ", *s);
 return 0;
}

请采纳

第2个回答  2016-12-18

#include <stdio.h>

int  main()

{int a[10]={1,2,3,4,5,6,7,8,9,10},*p,*q;

 for(p=a;p<a+10;p++)

  printf("%d ",*p);

 printf("\n");

 for(p=a,q=a+9;p<q;)

 {int t=*p;*p++=*q;*q--=t;}

 for(p=a;p<a+10;p++)

  printf("%d ",*p);

 printf("\n");

 return 0; 

}

本回答被提问者和网友采纳
第3个回答  2016-12-18
#include<iostream>
using namespace std;
int main()
{
    int a[10+1]={0};
    int i=0;
    for(i=0;i<10;++i)
    {
        cin>>a[i];
    }
    for(i=0;i<6;++i)
    {
     a[10]=a[i];
     a[i]=a[9-i];
     a[9-i]=a[10];
}
    for(i=0;i<10;++i)
    {
        cout<<a[i]<<" ";
    }
}

不好意思啊,用指针交换两个值我还不会呢,不过你把第二个for改成指针交换就行了,你可以等等我,我先去研究一下怎么交换

第4个回答  2016-12-18
#include<stdio.h>

int main()
{
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int *p,t,i;
p = a;
for(i = 0;i<5;i++) {
t = *(p+i),*(p+i) =*(p+9-i),*(p+9-i) = t; 
}
for(i = 0;i<10;i++) printf("%d ",a[i]);
return 0;
}

c语言可以用来编写怎么样的程序?
简而言之,任何程序皆可用C语言编写。由于C语言在工业领域的广泛应用,几乎在任何平台、硬件及应用上,都能利用C编程实现。尽管如此,C编程相对属于较低级别的编程方式,因为它以过程为中心。高手能巧妙地将程序分解为模块,但对于多数开发者而言,利用C编写大型程序更为简便。综上所述,C语言的适用范围...

c语言编程有什么用?
编程实质上就是运用专业术语,编写出能够按照人类意愿指挥电脑执行特定操作的程序。在现今编程领域,流行的编程语言有VB和C++等,这些语言的下载和学习资源在网络上十分丰富,入门门槛相对较低。学习编程不仅能够提升解决问题的能力,还能培养逻辑思维、创造力和耐心。掌握编程技能,可以应用于多个领域,如软件开...

c语言怎么开始编写程序
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,计算和的方法为:1、新建一个求1到100自然数之和项目。2、添加一个cpp文件。3、包含需要用到的头文件。4、输入main函数。5、定义两个变量,分别是:a和sum。6、使用while语句计算1到100之间...

怎样使用C语言进行编程?
1、首先,编写头文件以及main函数主框架。2、接下来可以for语句给他赋值。3、为了方便测试,可以将其输出。4、然后我们点击编译运行按钮。5、这个时候便可以看到如下图效果。注意事项:尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理...

怎么编写C语言的?
C语言编程的基本步骤如下:首先,打开Visual C++ 6.0中文版,界面如图所示。点击文件菜单中的新建,设置工作空间,然后点击确定,建立工作空间。接下来,再次点击文件菜单的新建,创建一个名为helloworld.c的小程序。使用VC++ 6.0编译程序,编译无误后执行。编译和运行按钮在工具栏,可以通过快捷键Ctrl+F7...

用c语言编写的程序被称为
用c语言编写的程序被称为源程序。C语言是一种编程语言,是其中最重要和最基础的语言之一。它是由贝尔实验室的Dennis Ritchie在1970年代初开发的,并于1972年首次应用于UNIX操作系统的开发。C语言具有强大的控制能力,支持面向对象、结构化、指针和动态内存分配等特性。C语言是非常流行的编程语言,被广泛...

如何编写C语言程序?
2.快捷键“CTRL+N”建立新源代码。3.输入源代码,下面给出最简单的Hello,world源代码:include <stdio.h> int main( ){ printf("Hello,World\\n");return 0;} 4.按下F11编译并且运行源代码,得到运行结果:5.点击任意键返回源代码编辑界面可以继续进行开发,接下来就是C语言语法的学习了。

如何学习C语言编程
下面就来看看如何开始用C语言编程吧。准备工作下载和安装编译器。C语言需要通过编译器解释为计算机可以理解的机器码。 编译器通常是免费的, 不同的操作系统上一般使用不同的编译器。 对于Windows系统, 可以尝试 Microsoft Visual Studio Express,其是Windows平台上最流行的多语言IDE(集成开发环境),其集成了Microsoft开发...

c语言编程如何实现二维数组的创建和初始化?
在 C 语言中,实现二维数组的创建和初始化通常通过使用数组的数组来完成。例如,创建一个 3x3 的二维数组并初始化所有元素为 0 的代码如下所示:在这个示例中,两组花括号被用来表示一个二维数组,每组花括号包含一个一维数组。例如,{0, 0, 0} 表示第一行的三个元素,{0, 0, 0} 表示第二行...

用C语言怎样编程从大到小排列?
C语言程序如下:include<stdio.h> intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...

相似回答
大家正在搜