#includestdio.h
創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)大關(guān),十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
double jia(double a,double b){
return a+b;}
double jian(double a,double b){
return a-b;}
double cheng(double a,double b){
return a*b;}
double chu(double a,double b){
return a/b;}
int modd(int a,int b){
return a%b;}
int main(){
double a,b;
printf("輸入兩個(gè)數(shù)字\n");
scanf("%lf%lf",a,b);
printf("加 %lf\n減 %lf\n乘 %lf\n除 %lf\n取模 %d\n",jia(a,b),jian(a,b),cheng(a,b),chu(a,b),modd((int)a,(int)b));
return 0;}
#include stdio.h
#include string.h
int main(void)
{
int num;
char from[10] = "NONONO";
char to[10];
char toget[20];
strcmp(to,from);
num = strlen(from);
strcan(toget,to);
memeset(to,0,sizeof(to));
printf("OK");
getchar();
return 0;
}
c常用的函數(shù)太多了。。
常用詞匯:
1、short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。
2、long:修飾int,長整型數(shù)據(jù),可省略被修飾的int。
3、long long:修飾int,超長整型數(shù)據(jù),可省略被修飾的int。
4、signed:修飾整型數(shù)據(jù),有符號(hào)數(shù)據(jù)類型。
5、unsigned:修飾整型數(shù)據(jù),無符號(hào)數(shù)據(jù)類型。
6、restrict:用于限定和約束指針,并表明指針是訪問一個(gè)數(shù)據(jù)對象的唯一且初始的方式。
7、return:用在函數(shù)體中,返回特定值(如果是void類型,則不返回函數(shù)值)。
8、continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)。
9、break:跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)。
10、goto:無條件跳轉(zhuǎn)語句。
11、if:條件語句,后面不需要放分號(hào)。
12、else:條件語句否定分支(與if連用)。
13、switch:開關(guān)語句(多重分支語句)。
14、case:開關(guān)語句中的分支標(biāo)記,與switch連用。
15、default:開關(guān)語句中的“其他”分支,可選。
常用函數(shù):
1、int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z'),返回非0值,否則返回0。
2、int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或數(shù)字('0'-'9'),返回非0值,否則返回0。
3、int abs(int i) 返回整型參數(shù)i的絕對值。
4、double cabs(struct complex znum) 返回復(fù)數(shù)znum的絕對值。
5、double fabs(double x) 返回雙精度參數(shù)x的絕對值。
6、long labs(long n) 返回長整型參數(shù)n的絕對值。
參考資料來源:百度百科—C語言
C語言輸入輸出函數(shù)有很多,標(biāo)準(zhǔn)I/O函數(shù)中包含了如下幾個(gè)常用的函數(shù):
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個(gè)字符.常用的判斷文件是否讀取結(jié)束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結(jié)束標(biāo)志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin時(shí),getc(stdin)就等同于getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.
int
getchar(void)
getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個(gè)字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時(shí)又涉及到緩沖的問題,所以并不是在屏幕中敲上一個(gè)字符程序就會(huì)運(yùn)行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個(gè)一個(gè)的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結(jié)束的.
int
putchar(int
ch)
putchar(ch)主要是把字符ch寫到標(biāo)準(zhǔn)流stdout中去.
char
*
gets(char
*str)
gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時(shí)退出,并會(huì)將換行符省去.
int
puts(char
*str)
puts主要是把字符串str寫到標(biāo)準(zhǔn)流stdout中去,并會(huì)在輸出到最后時(shí)添加一個(gè)換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)不大于num-1.因?yàn)閒gets函數(shù)會(huì)在末尾加上一個(gè)空字符以構(gòu)成一個(gè)字符串.另外fgets在讀取到換行符后不會(huì)將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時(shí)并不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當(dāng)前位置讀取一個(gè)字符.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當(dāng)前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數(shù)據(jù)寫入流式文件中.
數(shù)據(jù)塊讀寫函數(shù)
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數(shù)說明:
buffer:是一個(gè)指針。
對fread
來說,它是讀入數(shù)據(jù)的存放地址。
對fwrite來說,是要輸出數(shù)據(jù)的地址(均指起始地址)。
size:
要讀寫的字節(jié)數(shù)。
count:
要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng)。
fp:
文件型指針。
一般包括字符庫函數(shù),數(shù)學(xué)函數(shù),目錄函數(shù),進(jìn)程函數(shù),診斷函數(shù),操作函數(shù)等。
字符庫函數(shù)所在函數(shù)庫為ctype.h;數(shù)學(xué)函數(shù)所在函數(shù)庫為math.h、stdio.h、string.h、float.h;目錄函數(shù)所在函數(shù)庫為dir.h、dos.h;進(jìn)程函數(shù)所在函數(shù)庫為stdlib.h、process.h。
診斷函數(shù)所在函數(shù)庫為assert.h、math.h;接口子程序所在函數(shù)庫為:dos.h、bios.h;操作函數(shù)所在函數(shù)庫為string.h、mem.h;時(shí)間日期函數(shù)函數(shù)庫為time.h、dos.h。
擴(kuò)展資料
C語言為一種程序設(shè)計(jì)的入門語言。由于C語言的語句中沒有提供直接計(jì)算sin或cos函數(shù)的語句,會(huì)造成編寫程序困難;但是函數(shù)庫提供了sin和cos函數(shù),可以拿來直接調(diào)用。顯示一段文字,我們在C語言中找不到顯示語句,只能使用庫函數(shù)printf。
C語言的庫函數(shù)并不是C語言本身的一部分,它是由編譯程序根據(jù)一般用戶的需要,編制并提供用戶使用的一組程序。C的庫函數(shù)極大地方便了用戶,同時(shí)也補(bǔ)充了C語言本身的不足。在編寫C語言程序時(shí),使用庫函數(shù),既可以提高程序的運(yùn)行效率,又可以提高編程的質(zhì)量。
參考資料來源:百度百科-C語言庫函數(shù)
參考資料來源:百度百科-C語言函數(shù)
/*接上一樓*/
struct
Student
*create()
/*create函數(shù)定義,此函數(shù)實(shí)現(xiàn)創(chuàng)建單向動(dòng)態(tài)鏈表*/
{
struct
Student
*head=NULL,*p1,*p2;
/*head,鏈表的頭指針;*p1,*p2,中間指針變量*/
puts("\n現(xiàn)在請輸入學(xué)院名:");
scanf("%s",college);
puts("\n年級:");
scanf("%s",grade);
puts("\n專業(yè)和班級:");
scanf("%s",classname);
puts("\n下面請按提示依次輸入數(shù)據(jù):\n(如果要結(jié)束輸入,請輸入學(xué)號(hào)0)");
p1=p2=(struct
Student
*)malloc(LEN);
puts("輸入第一個(gè)學(xué)生的學(xué)號(hào):");
scanf("%ld",p1-num);
puts("輸入此學(xué)生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學(xué):");
scanf("%f",p1-score.math);
puts("計(jì)算機(jī):");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計(jì)算總分和平均分*/
p1-grade=mark_grade(p1);
for(;p1-num!=0;)
{
len++;
if(len==1)
head=p1;
else
p2-next=p1;
p2=p1;
p1=(struct
Student
*)malloc(LEN);
puts("輸入下一個(gè)學(xué)生的學(xué)號(hào):");
scanf("%ld",p1-num);
puts("輸入此學(xué)生成績:\n英語:");
scanf("%f",p1-score.english);
puts("數(shù)學(xué):");
scanf("%f",p1-score.math);
puts("計(jì)算機(jī):");
scanf("%f",p1-score.computer);
total_and_aver(p1);/*計(jì)算總分和平均分*/
p1-grade=mark_grade(p1);
}
p2-next=NULL;
return
(head);
}
struct
Student
*del(struct
Student
*head,long
del_num)
/*del函數(shù)定義,此函數(shù)實(shí)現(xiàn)從現(xiàn)有鏈表中刪除一個(gè)結(jié)點(diǎn)*/
{
struct
Student
*p1,*p2;
if(head==NULL)
puts("空表,沒有任何數(shù)據(jù)記錄。\n");
else
{
for(p1=head;!(del_num==p1-num||p1-next==NULL);p2=p1,p1=p1-next);
if(del_num==p1-num)
{
if(p1==head)head=p1-next;
else
p2-next=p1-next;
printf("學(xué)號(hào)為%ld學(xué)生的數(shù)據(jù)刪除成功。\n",del_num);
--len;
}
else
printf("未找到學(xué)號(hào)為%ld學(xué)生的記錄。\n",del_num);
}
return
(head);
}
struct
Student
*insert(struct
Student
*head,struct
Student
*new_student)
/*insert函數(shù)定義,此函數(shù)實(shí)現(xiàn)向現(xiàn)有鏈表中插入一個(gè)結(jié)點(diǎn)或覆蓋相同學(xué)號(hào)的數(shù)據(jù)*/
{
struct
Student
*p0=new_student,*p1=head,*p2;
char
control;
if(head==NULL)
{
head=p0;
p0-next=NULL;
puts("數(shù)據(jù)插入成功。\n");
}
else
{
for(;((*p0).num(*p1).num)(p1-next!=NULL);p2=p1,p1=p1-next);
if((*p0).num==(*p1).num)
{
printf("已經(jīng)存在一個(gè)學(xué)號(hào)為%ld的學(xué)生的數(shù)據(jù),要覆蓋原有數(shù)據(jù)嗎?\n輸入
Y
=覆蓋原有數(shù)據(jù)\n輸入其它=保留原有數(shù)據(jù)\n",p0-num);
FFLUSH;
scanf("%c",control);
FFLUSH;
switch
(control)
{
case
'Y':
case
'y':if(p1==head){head=p0;p0-next=p1-next;}
else
{p2-next=p0;p0-next=p1-next;}
puts("數(shù)據(jù)已經(jīng)更新\n");break;
default:break;
}
len--;
}
else
if((*p0).num(*p1).num)
{
if(p1==head)head=p0;
else
p2-next=p0;
p0-next=p1;
puts("數(shù)據(jù)插入成功。\n");
}
else
{
p1-next=p0;
p0-next=NULL;
puts("數(shù)據(jù)插入成功。\n");
}
}
++len;
return
(head);
}
struct
Student
*sort(struct
Student
*head)
/*sort函數(shù)定義,此函數(shù)實(shí)現(xiàn)對鏈表中的數(shù)據(jù)按照平均分高低排序*/
{
struct
Student
*p1,*p2;
for(p1=head;p1-next!=NULL;p1=p1-next)
for(p2=p1-next;p2!=NULL;p2=p2-next)
{
if(p1-score.averagep2-score.average)
{
SWAP(p1-num,p2-num);
SWAP(p1-grade,p2-grade);
SWAP(p1-score.english,p2-score.english);
SWAP(p1-score.math,p2-score.math);
SWAP(p1-score.computer,p2-score.computer);
SWAP(p1-score.total,p2-score.total);
SWAP(p1-score.average,p2-score.average);
}
}
return
head;
}
/*接下一樓*/