當前位置:首頁 » 編程語言 » 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;
}