A. c語言中的常用語法有哪些
不好說啊 買本書自己學吧 c語言還算簡單的 但是很煩的。你有興趣就學把。c語言三大結構,順序,選擇,循環結構,c中還有指針呢
B. C語言語法都有哪些啊,怎麼用的
語法不是一說便會的,建議下載軟體C語言學習系統,和集成學習環境〔C語言〕裡面有講解。最好是破解版的,之前我在網吧下過一次,不大,幾兆
C. C語言編程的語法
#include <stdio.h>
#include <conio.h>
main()
{
float a,b,c;
scanf("%f%f",&a,&b);
c=a*b;
printf("%f",c);
getch();
}
在微軟的編譯器種 要使用getch();
必須加#include <conio.h>
這樣可以提高移植性。
你在tc中也可以使用上術代碼
在微軟的編譯器上也可以 比如vc++ 6.0
D. C語言的語法是什麼C語言程序設計都看一半了還不明白。
主函數,定義數據類型,輸入,輸出
E. C語言程序 簡單的語法問題
#include<stdio.h>
int a[10];
int main() //你定義的一堆東西就沒用到,定義它作甚?
{
int a[10];
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);//scanf有那麼寫的么?
}
for(int j=0;j<10;j++)
{
printf("%d",a[j]);
}
return 0;
}
F. 如何編寫C語言程序
准備材料
windows電腦、VC++(DEV_C++)
1.打開桌面上的DEV_C++,進入如下界面:
G. C語言的基本語法有哪些
基本語法介紹預處理命令
把小寫字母轉換成大寫字母chara,b;a='x';b='y';a=a-32;b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
復合賦值語句有利於編譯處理,能提高編譯效率並產生質量較高的目標代碼C語言中的空語句:while(getchar!='\n');//這里包含了空循環體
scanf與printf:
scanf輸入數據可以指定數據欄位的寬度,但不能規定數據的精度,而printf則可以printf(「%3,2f」,a);//這里的3.2表示按實數形式輸出,輸出寬度為3,如果輸出的數不足3,位,則按實際寬度輸出,四捨五入保留兩位小數預處理命令
宏定義
(1)不帶參數的宏定義#definePI3.1415926//不用加分號
(2)帶參數的宏定義
#defineMAN(a,b)((a)>(b)?(a):(b))
在語句塊內定義的變數稱之為局部變數,又稱為內部變數,僅在定義它的語句塊內有效,並且擁有自己獨立的存儲空間。
全局變數:
在函數之外定義的變數成為全局變數。
如果在同一個源文件中,全局變數和局部變數同名,則在局部變數的作用范圍內,全局變數不起作用,即被「屏蔽」。
說明:
(1)一個函數中既可以使用本函數的局部變數,又可以使用有效的全局變數。(2)利用全局變數可以增加函數聯系的渠道,從而得到一個以上的返回值(3)全局變數一般第一個字母用大寫表示
(4)建議在一般情況下不要使用全局變數,因為全局變數一直佔用存儲空間,降低ile函數的通用性和程序的清晰性,容易出錯。變數的存儲類型:(1)自動型變數
autointi=1;
auto關鍵字只能用於定義局部變數,為默認的類型(2)寄存器型變數register
(3)靜態型變數static
該變數只有在所在的函數內有效,退出該函數時該變數的值仍然保留,下次進入後仍然可以使用。退出程序時值才消失。(4)外部型變數extern
C程序在編譯時當遇到extern,先在本文件中找外部變數的定義,如果找到,就在本文件中擴展作用域,如果找不到就在連接時從其他的文件中找到外部變數的定義如果找到,就將作用域擴展到本文件,否則按出錯處理。
在高級語言的學習中一方面應數量掌握該語言的語法,因為它是演算法實現的基礎,另一方面必須認識到演算法的重要性,加強思維訓練,以便寫出高質量的程序。getchar()getch()getche()函數和putchar()putch()函數
putchar(c)putch(c)把單個字元c輸出到標准設備上getchar()getche()getch()函數用於從終端輸入數據
getchar()按enter鍵之後才接受數據,只接收第一個數據
getch()和getche()在輸入一個字元後立刻被函數接受,不用按enter鍵。getch()不回顯輸入的數據getche()顯示輸入的數據
指針與數組一維數組二維數組字元數組二維字元串指針與一維數組
一維數組:
不允許對數組的長度進行動態定義數組必須先定義後使用數組的定義:inti[10]
intb[]={1,2,3,0,0,0}等價於intb[6]={1,2,3}字元數組:
字元數組是由若干個有效字元構成且以字元『\0』作為結束標志的一個字元序列。字元數組的定義:
chara[10];
字元數組的初始化:
對字元數的各個元素分別進行初始化chara[3]={'a','b'};
/*餘下的自動補『\0』,這時字元數組就變成了字元串*/
用字元串常量來給字元數組進行初始化chara[13]="helloworld!"
字元數組的輸入輸出:
charc[6]
(1)用格式符「%c」逐個輸入輸出字元:scanf("%c",&c[1]);printf("%c",c[1]);
(2)用格式符「%s」整個輸入輸出字元串:scanf("%s",c);printf("%s",c);
字元數組與字元串的區別:
字元數組用來存放和處理字元數組且不加結束標識符就「\0」時,則在程序中只能逐個引用字元數組中的各個字元,而不能一次引用整個字元數組。而字元串則可以對其引用整個數組。其操作的方式一個是數組元素,一個是數組名。
字元串處理函數:
(1)輸入字元串函數char*gets(char*str);
//stdio.h
在使用gets()輸入字元串時,可以包括空格在內的字元,在回車時,自動驕傲字元串結束標志『\0』賦予字元數組的最後一個元素。
(2)輸出字元串函數intputs(char*str);
//stdio.h
在使用puts()輸出字元串時,將字元串結束標志『\0』轉換成『\n』輸出。
(3)字元串復制函數
char*strcpy(char*strl,char*str2);
//string.h
不能使用『=』賦值語句對字元數組整體賦值,只能使用strcpy()處理。
(4)字元串比較函數
intstrcmp(char*str1,char*str2);
//string.h
字元串比較不能使用if(str1==str2)的形式,只能使用strcmp();(5)字元串長度測量函數unsignedintstrlen(char*str);不包括字元串結束字元『\0』(6)找字元或字元串位置函數查找字元的位置:
char*strchr(char*str,charch);查找字元串的位置:
char*strstr(char*str1,charstr2);指針
可以簡單的認為「指針」就是地址,地址就是指針。一個變數的地址只能使用&符號獲得。
指針變數:
在C語言中指針被用來標識號內存單元的地址,如果把這個地址用一個變數來保存,則這中噢噢那個變數就成為指指針變數。
如指針變數pi只想變數i,那麼pi就表示變數i的地址,*pi就表示變數i的值,pi=&i。i=3與*pi=3等價指針變數的使用:
先定義,後使用。
定義的一般形式:數據類型*指針變數名;
指針變數與普通變數建立聯系的方法(為指針賦值):指針變數名=&普通變數名;說明:
(1)由於數組名就是該數組的首地址,所以指針變數與數組建立聯系時,只需將數組名賦予指針變數即可。
(2)當指針變數沒有賦值時,可以賦空指針NULL或0,不能間接引用沒有初始化或值為NULL的指針。
(3)&取地址運算符,*取只想的值的運算符。指針變數的引用方式:
(1)*指針變數名:表示所指變數的值。(2)指針變數名:表示所指變數的地址使用指針作為函數的參數:#include<stdio.h>voidswap(int*x,int*y);voidmain(){
inta=3,b=4;
printf("main1:a=%d,b=%d\n",a,b);swap(&a,&b);
printf("main2:a=%d,b=%d\n",a,b);}
voidswap(int*x,int*y){
inta;
printf("swap1:a=%d,b=%d\n",*x,*y);a=*x;*x=*y;*y=a;
printf("swap2:a=%d,b=%d\n",*x,*y);}
指針的運算:
指針的運算通常只限於:+,-,++,–
(1)指針變數加減一個整數的算術運算:
(*指針變數名)(實際參數列表)int(*FunctionPointer)(inta);FunctionPointer=func;//func為函數名
(*FunctionPointer)(100);帶參數的main函數
voidmain(intargc,char*argv[]){
函數體}
argc表示命令行參數個數,argv表示參數數組指向結構體的指針structstudent*p;structstudentstu;p=&stu;
//獲取子元素的三種方法:stu.name;(*p).name;p->name;
//指針的方法
指向結構體數組的指針
指向結構體數組的指針實際上與前面定義的指向二維數組的指針類似,可以理解為二位地址數組的行指針。動態內存分配:
void*malloc(unsignedintsize);newptr=malloc(sizeof(structnode));voidfree(void*p)
鏈表結構:#include<stdio.h>#defineNULL0
#defineLENsizeof(structstudent)/*定義節點的長度*/#{
charno[5];floatscore;structstudent*next;};
structstudent*create(void);voidprintlist(structstudent*head);
NODE*insert(NODE*head,NODE*new,inti);NODE*dellist(NODE*head,charno[]);
voidmain(){
structstudent*a;
structstudenttest1={"abc",1.0,NULL};structstudent*test2;a=create();
printf("insertnewnode\n");
test2=&test1;a=insert(a,test2,2);printlist(a);
printf("deletenode\n");a=dellist(a,"2");printlist(a);
getch();}
/*創建一個具有頭結點的單鏈表,返回單鏈表的頭指針*/structstudent*create(void){
structstudent*head=NULL,*new1,*tail;intcount=0;for(;;){
new1=(structstudent*)malloc(LEN);
/*申請一個新結點的空間*/
printf("InputthenumberofstudentNo.%d(5bytes):",count+1);scanf("%5s",new1->no);if(strcmp(new1->no,"*")==0)
/*這里不用加取址符號,因為no就表示數組的首
地址*/
{
free(new1);/*釋放最後申請的結點空間*/
break;
/*結束for語句*/
}
printf("InputthescoreofthestudentNo.%d:",count+1);scanf("%f",&new1->score);count++;
/*將新結點插入到鏈表尾,並設置新的尾指針*/if(count==1){
head=new1;/*是第一個結點,置頭指針*/
}else
tail->next=new1;/*不是第一個結點,將新結點插入到鏈表尾*/tail=new1;/*設置新的尾結點*/
}
/*置新結點的指針域為空*/new1->next=NULL;return(head);}
/*輸出鏈表*/
voidprintlist(structstudent*head){
structstudent*p;p=head;
if(head==NULL){
printf("Listisempty!!!\n");}else{
while(p!=NULL){
printf("%5s%4.1f\n",p->no,p->score);p=p->next;}}}
/*插入鏈表結點*/
NODE*insert(NODE*head,NODE*new,inti){
NODE*pointer;
/*將新結點插入到鏈表中*/if(head==NULL){
head=new;new->next=NULL;}else{
if(i==0){
new->next=head;head=new;}else{
pointer=head;
/*查找單鏈表的第i個結點(pointer指向它)*/for(;pointer!=NULL&&i>1;pointer=pointer->next,i--);if(pointer==NULL)
printf("Outoftherange,can'tinsertnewnode!\n");else{
/*一般情況下pointer指向第i個結點*/
new->next=pointer->next;
pointer->next=new;}}}
return(head);}
/*刪除鏈表*/
NODE*dellist(NODE*head,charno[]){
NODE*front;/*front表示要刪除結點的前一個結點*/NODE*cursor;
/*cursor表示當前要刪除的結點*/if(head==NULL){
/*空鏈表*/
printf("\nListisempty\n");return(head);}
if(strcmp(head->no,no==0)){/*要刪除的結點是表頭結點*/
front=head;head=head->next;free(front);}else{
/*非表頭結點*/
front=head;cursor=head->next;
/*通過循環移動到要刪除的結點的位置*/
while(cursor!=NULL&&strcmp(cursor->no,no)!=0){
front=cursor;cursor=cursor->next;}
if(cursor!=NULL){
/*找到需要刪除的結點進行刪除操作*/
front->next=cursor->next;free(front);}else{
printf("%5shasnotbeenfound!",*no);}}
return(head);}
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
test2=&test1;a=insert(a,test2,2);printlist(a);
printf("deletenode\n");a=dellist(a,"2");printlist(a);
getch();}
/*創建一個具有頭結點的單鏈表,返回單鏈表的頭指針*/structstudent*create(void){
structstudent*head=NULL,*new1,*tail;intcount=0;for(;;){
new1=(structstudent*)malloc(LEN);
/*申請一個新結點的空間*/
printf("InputthenumberofstudentNo.%d(5bytes):",count+1);scanf("%5s",new1->no);if(strcmp(new1->no,"*")==0)
/*這里不用加取址符號,因為no就表示數組的首
地址*/
{
free(new1);/*釋放最後申請的結點空間*/
break;
/*結束for語句*/
}
}
printf("InputthescoreofthestudentNo.%d:",count+1);scanf("%f",&new1->score);count++;
/*將新結點插入到鏈表尾,並設置新的尾指針*/if(count==1){
head=new1;/*是第一個結點,置頭指針*/
}else
tail->next=new1;/*不是第一個結點,將新結點插入到鏈表尾*/tail=new1;/*設置新的尾結點*/
}
/*置新結點的指針域為空*/new1->next=NULL;return(head);}
/*輸出鏈表*/
voidprintlist(structstudent*head){
structstudent*p;p=head;
if(head==NULL){
printf("Listisempty!!!\n");}else{
while(p!=NULL){
printf("%5s%4.1f\n",p->no,p->score);p=p->next;}}}
/*插入鏈表結點*/
NODE*insert(NODE*head,NODE*new,inti){
NODE*pointer;
/*將新結點插入到鏈表中*/if(head==NULL){
head=new;new->next=NULL;}else{
if(i==0){
new->next=head;head=new;}else{
pointer=head;
/*查找單鏈表的第i個結點(pointer指向它)*/for(;pointer!=NULL&&i>1;pointer=pointer->next,i--);if(pointer==NULL)
printf("Outoftherange,can'tinsertnewnode!\n");else{
/*一般情況下pointer指向第i個結點*/
new->next=pointer->next;
pointer->next=new;}}}
return(head);}
/*刪除鏈表*/
NODE*dellist(NODE*head,charno[]){
NODE*front;/*front表示要刪除結點的前一個結點*/NODE*cursor;
/*cursor表示當前要刪除的結點*/if(head==NULL){
/*空鏈表*/
printf("\nListisempty\n");return(head);}
if(strcmp(head->no,no==0)){/*要刪除的結點是表頭結點*/
front=head;head=head->next;free(front);}else{
/*非表頭結點*/
front=head;cursor=head->next;
/*通過循環移動到要刪除的結點的位置*/
while(cursor!=NULL&&strcmp(cursor->no,no)!=0)
front=cursor;cursor=cursor->next;}
if(cursor!=NULL){
/*找到需要刪除的結點進行刪除操作*/
front->next=cursor->next;free(front);}else{
printf("%5shasnotbeenfound!",*no);}}
return(head);}
H. c語言都有哪些內容
常量變數,運算符,順序,循環,分支,指針,函數,庫函數,文件操作等
建議找本基礎的C語言書看看就明白了,比如譚浩強的 c語言設計
I. C語言 java 和C#三者的語法區別
Java語言是一種完全的面向對象語言,雖然它的底層(運行時庫)是用C語言開發的,可是並不依賴於C。因為Java的運行是在運行時庫的支持下進行的,所以運行效率比起可以更接近底層的C/C++來說效率會有所影響,不過Java的類庫採用很好的設計理念設計,非常好用,也非常實用,已經成為業界的一種標准開發語言。它的跨平台的特性尤其讓很多開發者歡迎,你只需要開發一次就能在所有安裝了Java運行時庫的系統上運行。Java發展了十幾年了,可以應用領域非常之廣泛,Web開發有JSP,J2EE,桌面領域現在有JavaFX。
C#是微軟開發的一種編程語言,語法類似Java,幾乎就是從Java的翻版。運行原理和Java也類似,也是通過運行時庫的支持運行。不過支持的平台還很有限。JAVA幾乎被所有平台支持,而C#目前只被Windows和Linux支持,Windows下的支持當然是由微軟自己開發的,而Linux下的支持則有MONO支持。實際上,MONO也是把C#應用轉化為JAVA應用而已,所以本質上,C#仍然只是被微軟自己的操作系統支持。應用平台受到限制,是它最大的缺點。
C/C++的優點在於與底層比較接近,可以控制的粒度更加精細,是開發系統級應用的最佳選擇。關於缺點,我想正是源於其優點,因為它們能控制的編程元素粒度精細,所以編程比較困難,煩瑣,容易出錯。
Java和C#都比較高級,可以看作高級語言的高級語言,優點是開發容易,但運行效率不如更為底層的C/C++。
具體選擇使用的時候,可以根據實際的項目需要選擇。運行效率要求高的,底層控制要求高的用C/C++,否則可以選擇Java或C#;跨平台的要求高的可以用Java。
關於跨平台,C/C++也是很好的語言,因為所有平台都支持,不同的是,不同平台支持的實現不同,類庫不同,要編寫跨平台的程序,需要選擇跨平台的類庫,如標准類庫,如果標准類庫的支持不夠也只需要附加編寫一個跨平台的支持類庫。
幾種語言內容都很多,在這里就不詳細列舉了,要學好每一種都需要花費相當大的精力,祝你能有所成就