c语言程序编程 C语言编程软件
这篇文章给大家聊聊关于c语言程序编程,以及C语言编程软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
C语言编程的一般步骤有哪些
首先明确要解决的问题;
其次分析问题并选择想要利用的算法,或者自己想一个的算法;
画流程图,明确解决问题过程中的逻辑关系和时序关系;
然后才是上机编写代码;
之后是debug调试,基本就可以执行了。
具体就上机编写代码来讲,首先需要打开C++的开发环境,然后新建一个工程;
然后新建一个文件(如果是VC6.0就可以继续写了,如果是VS20**的话就需要在文件菜单中选择将文件移入工程);
在文件中写入代码,然后就可以编译运行了。
具体代码的格式来讲,首先应该引用头文件#include<"头文件名(不带.h)">,然后在所有头文件引入之后加一行using namespace std;后面可以写函数了,具体就看你自己的发挥了~
c语言 编写程序
链表创建使用creat函数,每调用一次创建一个节点。第一次调用函数会自己创建头节点内存。
打印输出部分,只要打印第一个节点,只要stuHead->next就可以了。
我这里写循环里,是演示遍历链表,你把break去掉就是打印整个链表。
#include<stdio.h>
#include<malloc.h>
typedef struct stuInfo
{
int id;//学号
char name[10];//姓名
int score;//成绩
struct stuInfo*next;
}SINFO;
int creat(SINFO**stuHead,SINFO**stuTail);//成功返回1,失败返回0
int main()
{
SINFO*stuHead=NULL,*stuTail=NULL;
if(!creat(&stuHead,&stuTail))
return 1;
if(!creat(&stuHead,&stuTail))
return 1;
if(!creat(&stuHead,&stuTail))
return 1;
while(stuHead->next)
{
printf("链表第一个学生信息:
");
printf("学号:%d
",stuHead->next->id);
printf("姓名:%s
",stuHead->next->name);
printf("成绩:%d
",stuHead->next->score);
break;//去掉这个,就是打印链表所有信息,作为参考
stuHead=stuHead->next;
}
return 0;
}
int creat(SINFO**stuHead,SINFO**stuTail)//成功返回1,失败返回0
{
SINFO*sHead=*stuHead,*sTail=*stuTail,*sNew=NULL;
if(!sHead)
{
sHead=(SINFO*)malloc(sizeof(SINFO)),sHead->next=NULL;
if(!sHead)
return 0;//抛出异常
}
sNew=(SINFO*)malloc(sizeof(SINFO));
if(!sNew)
return 0;//抛出异常
printf("请输入学号:"),scanf("%d",&sNew->id);
printf("请输入姓名:"),scanf("%s",sNew->name);
printf("请输入成绩:"),scanf("%d",&sNew->score);
sNew->next=NULL;
if(sHead->next==NULL)
sHead->next=sNew;
else
sTail->next=sNew;
sTail=sNew;
*stuHead=sHead;
*stuTail=sTail;
return 1;
}
用c语言编程
程序就是读取文件到数组,再将数组进行排序,最后写入文件。
读写文件流程: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:\
ank.dat";
if(!(nums=read2Nums(rPath))) return 1;
showNums(nums);
printf("数组升序排列:
");
if(px(nums,1)==-1) return 1;
showNums(nums);
printf("数组降序排列:
");
if(px(nums,0)==-1) return 1;
showNums(nums);
printf("写入到文件路径%s下(存在覆盖,不存在新建)
",wPath);
if(write2File(nums,wPath)==-1) return 1;
printf("写入成功!
");
return 0;
}
void showNums(int*nums)
{
int i;
if(nums) for(i=0,printf("文件内容:
");i<maxLen;printf("%d",nums[i]),i++);
printf("
");
}
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;
}
关于本次c语言程序编程和C语言编程软件的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。