当前位置:首页 » 编程语言 » c语言编写程序笔记
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言编写程序笔记

发布时间: 2022-06-16 13:23:28

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学习笔记(一) C语言和汇编语言的区别

C学习笔记(一) C语言和汇编语言的区别

2016-07-11 09:43162人阅读评论(0)收藏举报

分类:

C学习笔记(13)

版权声明:本文为博主原创文章,未经博主允许不得转载。

C学习笔记(五)C语言和汇编语言的区别

C语言和汇编语言的区别:

汇编:效率高,对硬件的可操控性更强,体积小,不易维护,可移植性很差;
C:效率比较低,硬件可操控性比较差,目标代码体积大,容易维护,可移植性很好。

汇编语言运行效率高的原因:

1.汇编语言实质上是机器语言的助记符。 CPU只能运行它所支持的指令集,而这些指令集当中的每条指令都是一些二进制数的序列,也就是“0”和“1”的有序组合;“0”和“1”的组合不便于程序员的记忆因此有了“MOV A 0x40”等这样的助记符。所以汇编语言编译成CPU可执行的机器语言其实只要做一个翻译的动作就好了。而C语言编写完程序后,需要通过编译器将C语言编译成与相应CPU指令集对应的机器语言。汇编语言与机器语言是一一对应的。但是C语言呢?当然没这么好事了。C语言的语法是固定的,C语言编写的程序要编译成CPU能读懂的机器语言指令没办法一一对应,因此需要有编译规则了,所以运行效率低一些。也可以说,C语言,是面向程序员的语言,而汇编语言是直接面向CPU的语言。

2.汇编是直接面对CPU的语言,只要是在指令集支持的范围内,汇编语言可以直接而灵活地管理包括特殊功能寄存器、通用寄存器、存储单元的每一个字节,甚至是每一个bit。C语言对内存的使用及管理功能也是很强大的,但毕竟还是受制于语法。举个最简单的例子,C语言当中没有对应三字节或是五字节的变量类型,要么int型,要么long型,所以每次申请必须是固定的字节数,势必造成内存使用上的浪费。而大部份汇编语言根本没有这样的语法,在伪指令的帮助下(其实也只是提高可读性),汇编语言程序可以使用任意字节数的变量,当然处理起来比C语言麻烦得多,最终还是一个字节一个字节地拼接处理,而用C语言写程序就轻松了,不用管这些,最终编译器会搞定嘛。而轻松的代价就是造成了浪费。而内存使用效率不高同时也会影响到整个程序的整体效率。

C语言与汇编的不同适用场合

1:若只有较简单的逻辑操作、逻辑算法、简单运算,使用汇编会得到较为精准的代码,但用c也同样可以做到。
2:若掺有复杂运算、浮点运算、非线性方程等,汇编难度很大,而C语言作为一种高级语言,有简洁紧凑,使用灵活的语法机制,编写复杂程序容易得多。
3:每一款处理器各自的汇编语法大都不一样,若仅使用汇编,可扩充性、可移植性都很差,用c就会好的多。
4:对硬件进行初始化的操作,使用汇编语言。

❸ 用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:\rank.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语言的时候的笔记只记程序,然后在程序旁边写下程序中新学的知识,比如
刚学的时候
#include <stdio.h>
main()
{
printf("Hello!");
}
每个C程序的基本格式是:
#include <stdio.h>
main()
{
printf("Hello!");
}
后来学到
#include <stdio.h>
main()
{
int x;-----要用的变量,先声明,
x=1;
printf("x=%d",x);----^.....
}

如此类推了,这样不了解就可以运行程序式式,我自己感觉还不错,就是有时候,要写太多了.

❺ c语言编写程序

#include<stdio.h>

#defineCOL3

#defineROW3

intmain()

{

intarray[ROW][COL]={1,2,3,4,5,6,7,8,9};

intpos;

for(inti=0;i<ROW;i++){

for(intj=0;j<COL;j++){

printf("%d ",array[i][j]);

}

printf(" ");

}

printf("请输入指定列:");

scanf("%d",&pos);

if(pos<0||pos>=COL){

printf("输入错误!");

return-1;

}

int*p=array[0]+pos;

intsum=0;

for(intn=0;n<ROW;n++){

sum+=*p;

p=p+ROW;

}

printf("%d",sum);

return0;

}

❻ C语言程序设计的笔记

自己学呗,要什么笔记啊,自己不能记啊,是不是要考试了,想看一下啊,我感觉编程靠突击是很不现实的,你自己找老师同学复印点不就行了

❼ 用C语言编写程序,急用,非常感谢!

#include <stdio.h>
void jiami(FILE *fp,FILE *fp1)
{ unsigned char c,c1;
while(fscanf(fp,"%c",&c)==1)
{ c1=c/16+c%16*16;
fprintf(fp1,"%c",c1);
}
fclose(fp);
fclose(fp1);
}
void jiemi(FILE *fp,FILE *fp1)
{ jiami(fp,fp1);
}
int main()
{ int a,b;
FILE *fp,*fp1,*fp2;
fp=fopen("0.cpp","r");
fp1=fopen("jiami.txt","w");
jiami(fp,fp1);
fp=fopen("jiami.txt","r");
fp1=fopen("jiemi.txt","w");
jiemi(fp,fp1);
printf("加密文件是jiami.txt,解密文件是jiemi.txt,请查看\n");
return 0;
}

❽ C语言怎么做笔记

先熟悉第一个程序吧。自己添加注释,反复观摩

❾ 用C语言编写程序

#include<stdio.h>
intmain()
{
floata,b;//表示数量//
scanf("%f%f",&a,&b);
printf("%.2f ",a*b);
return0;
}