① c語言編程問題
#include
<stdio.h>//缺少重要
頭文件
#include
<string.h>#include
<stdlib.h>
int
SIZE;struct
student{
char
name[20];
int
xh;
int
yw;
//語文
int
sx;
//數學
int
yy;
//英語}*stud;
void
save();int
srsj();int
cxsj();int
main();int
gzcx();int
gzcx(){
int
i,a,b;
char
name[10]={0};
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("無法打開此文件\n");
}
printf("\t\t\t<學生信息查詢>\n\n\n\t\t\t查看姓名,
學號
\n");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t%s\n\t\t%d\n\t\t%d\n\t\t%d",stud[i].name,stud[i].xh,stud[i].sx,stud[i].yw,stud[i].yy);
}
printf("\n\t\t***************************************\n");
printf("\t\t請輸入數字:1:按學號查詢\n
2:按姓名查詢\n");
printf("\t\t***************************************\n");
printf("你輸入的數字:");
scanf("%d\n",&b);
switch(b)
case
1:
{
printf("請輸入工號,查看工資清單\n\n");
printf("工號:");
scanf("%d\n",&a);
printf("\t\t<學生信息查詢>\n");
for(i=0;i<SIZE;i++)
{
if(stud[i].xh==a)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
break;
case
2:
{printf("請輸姓中文姓名,查看學生信息查詢\n\n");
printf("姓名:");
scanf("%s",name);
for(i=0;i<SIZE;i++)
{
if(strcmp(name,stud[i].name)==0)
{
printf("\t\t%s\n\t\t%d\n",stud[i].name,stud[i].xh);
}
}
}
}
printf("\n");
printf("\n\n\t\t***************************************\n");
printf("\t\t注意:但無法查詢時,請按要求操作!或者是無此數據!\n");
printf("\t\t***************************************\n\n\n\n");
fclose(fp);
main();
return
0;}
void
save(){
FILE
*fp;
int
i;
if((fp=fopen("stu.dat","wb"))==NULL)
{
printf("cannot
open
file
\n");
return;
}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct
student),1,fp)!=1)
fclose(fp);}
int
srsj(){
int
i;
int
SIZE;
printf("輸入學生格式:");
scanf("%d",&SIZE);
stud=new
struct
student[SIZE];
for(i=0;i<SIZE;i++)
scanf("%s%d%d%d%d",stud[i].name,&stud[i].xh,&stud[i].sx,&stud[i].yw,&stud[i].yy);
save();
return
0;}
int
cxsj(){
int
i;
FILE
*fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
printf("cannot
open
file\n");
}
for(i=0;i<SIZE;i++)
{fread(&stud[i],sizeof(struct
student),1,fp);
printf("\t\t姓名:%s\t\t學號:%d\n",stud[i].name,stud[i].xh);
}
fclose(fp);
return
0;}int
main() {
int
a;
printf("\t\t1:進入
輸入數據
\n\t\t2:查詢數據\n\t\t3:查詢\n");
printf("輸入數字:");
scanf("%d",&a);
if(a==1)
srsj();
if(a==2)
cxsj();
if(a==3)
gzcx();
return
0;//缺少返回}
② C語言下標如何表示
a1 - a10,保存在一個數字裡面假設為 int a[10];你的a2i表示什麼呢?是a[1](其實就是a2,下標從0開始)還是a[2 * i]呢,2 * i不可能,因為i 從1到10, 2 * 10就越界了,你的a21又是什麼呢?只有10個元素(a1 - a10)你又如何有a21呢。。。。你的等式應該寫錯了。。。bi就用b[i - 1]表示(b是一個數組),如果等式是bi = (a2 * i - 1 + a2)/2,那就可以這么寫for(int i = 1; i <= 10; ++i){ b[i] = (a[1] * i + a[1])/ 2;}b和a都是10個元素的數組。不過你應該是等式寫錯了。。
③ 幾道C語言問題!!!
1.A
if (a=0)-->不成立. 因為a=0是賦值,相當於if(0)
if(a>0)-->不成立;所以執行y+=y
-->結果:y=20
***********************************************
2.有兩個選擇
D:有語法錯誤,因為while(!x)後缺分號.
若不是上面情況則選B.原因是:
x=-1*x--->x=-1
!x-->!(-1)-->!(true)-->false
結果:退出循環.僅循環一次.
***********************************************
3.A
該題關鍵是判斷語句"i=10&&x>0".
i=10&&x>0-->i=(10&&x>0)-->i=(true && ture)-->i=true-->true
因此永遠循環.
***********************************************
4.C
第1次:i=0-->判斷成立(0<3)-->i=1(i++<3,指先比較i<3,再i加1)
第2次:判斷成立(1<3)-->i=2
第3次:判斷成立(2<3)-->i=3
第4次:判斷不成立(3<3)-->i=4
退出
結果:i=4
***********************************************
5.沒有合適答案.
執行後,y=1.原因如下:
第1次:y=1-->判斷成立(1<=50)
-->if(x>=0)-->條件成立-->break-->退出循環(並不進行y++操作)
結果:y=1
***********************************************
6.C
a(a(i))-->a(a(10))-->a(9)-->6
數組第1個元素為a(0)=1,a(1)=4,...
***********************************************
7.D
i-->1位元組
c-->2位元組
a-->4位元組
1+2+4=7
結果:位元組總數為7位元組.
***********************************************
8.B
應該:stu是用戶定義的結構類型,而不是struc stu.
***********************************************
9.C
C語言中規定不能進行指針"加"操作.
***********************************************
10.D
第1次循環:
s指向"ABCD"中"A"位置,p指向"ABCD"中"B"位置.
printf輸出"B"開始的字元串.
第2次循環:
p加1-->指向"ABCD"中"C"位置,判斷成立(s指向"A"位置).
printf輸出"C"開始的字元串.
第3次循環:
p加1-->指向"ABCD"中"D"位置,判斷成立.
printf輸出"D"開始的字元串.
第4次循環:
p加1-->指向"ABCD"中"D"後面,與s相關4個地址位,條件不成立.
退出.
輸出結果:
BCD
CD
D
④ 在c語言中a等於多少
a的ASCII值十六進制為61,換成十進制就是97
⑤ C語言表達式 10&20 的值是什麼
1、數據類型、運算符與表達式,2.1 預備知識; 2.2 C語言的數據類型; 2.3 常量和變數; 2.4 整型數據; 2.5 實型數據; 2.6 字元型數據; 2.7 算術運算與算術表達式; 2.8 賦值運算與賦值表達式; 2.9 逗號運算符和逗號表達式;,2.1 預備知識,計算機中數的表示及進制轉換 二進制、八進制、十進制、十六進制 各種進制之間的轉換,各種進制之間的轉換(整數) 二進制、八進制、十六進制轉換成十進制 方法:按權相加,十進制轉換成二進制、八進制、十六進制 原理:,方法:連續除以基,從低到高記錄余數,直至商為0,二進制與八進制之間的轉換 二進制轉換成八進制:從右向左,每3。
2、位一組(不足3位左補0),轉換成八進制 八進制轉換成二進制:用3位二進制數代替每一位八進制數,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二進制與十六進制之間的轉換 二進制轉換成十六進制:從右向左,每4位一組(不足4位左補0),轉換成十六進制 十六進制轉換成二進制:用4位二進制數代替每一位十六進制數,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,。
3、例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,位元組和位 內存以位元組為單元組成 每個位元組有一個地址 一個位元組一般由8個二進制位組成 每個二進位的值是0或1,數值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,其餘各位為數值本身的絕對值 反碼: 正數:反碼與原碼相同 負數:符號位為1,其餘位對原碼取反 補碼: 正數:。
4、原碼、反碼、補碼相同 負數:最高位為1,其餘位為原碼取反,再對整個數加1,負數補碼轉換成十進制數:最高位不動,其餘位取反加1,例 補碼:11111001 取反:10000110 加1: 10000111=-7,2.2 數據類型 數據類型總表,數據類型決定: 1. 數據占內存位元組數 2. 數據取值范圍 3. 其上可進行的操作,2.3 常量和變數,2.3.1 常量 1.常量的概念 在程序運行過程中,其值不能被改變的量稱為常量。 2.常量的分類 (1)整型常量 例:123 (2)實型常量 例:4.56 (3)字元常量 例:a (4)符號常量 例:PI,2.3.2 變數 1.變數的概念 在程序運行過程。
5、中,其值可以被改變的量稱為變數。 2.變數的兩個要素 (1)變數名。每個變數都必須有一個名字變數名,變數命名遵循標識符命名規則。 (2)變數值。在程序運行過程中,變數值存儲在內存中。在程序中,通過變數名來引用變數的值。,.標識符命名規則 有效字元:只能由字母、數字和下劃線組成,且以字母或下劃線開頭。 有效長度:隨系統而異,但至少前個字元有效。如果超長,則超長部分被舍棄。 例如:由於student_name和student_number的前個字元相同,有的系統認為這兩個變數,是一回事而不加區別。 在TC V2.0中,變數名(標識符)的有效長度為個字元,預設值為。,C語言的關鍵字不能用作變數名。 。
6、注意:C語言對英文字母的大小敏感,即同一字母的大小寫,被認為是兩個不同的字元。 習慣上,變數名和函數名中的英文字母用小寫,以增加可讀性。 例:在C語言中,變數名total與變數名TOTAL、ToTaL、tOtAl等是同一個變數嗎?,標識符命名的良好習慣見名知意: 所謂「見名知意」是指,通過變數名就知道變數值的含義。通常應選擇能表示數據含義的英文單詞(或縮寫)作變數名,或漢語拼音字頭作變數名。 例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。,4.變數的定義與初始化 在語言中,要求對所有用到的變數,必須先定義、後使用;且稱在定義變數的同時進行。
7、賦初值的操作為變數初始化。,2.4 整型數據,2.4.1 整型常量 整型常量即整常數,在語言中可用三種形式表示: (1)十進制。例如10、36。 (2)八進制(以數字開頭)。例如012。 (3)十六進制(以數字+小寫字母x開頭)。例如0 x36。,2.4.2 整型變數 1.分類 根據佔用內存位元組數的不同,整型變數又分為類: (1)基本整型(類型關鍵字為int)。 (2)短整型(類型關鍵字為short int)。 (3)長整型(類型關鍵字為long int)。 (4)無符號整型。無符號型又分為無符號基本整型(unsigned int)、無符號短整型(unsigned short)和無符號長整型(。
8、unsigned long)三種,只能用來存儲無符號整數。,2.佔用內存位元組數與值域 上述各類型整型變數佔用的內存位元組數,隨系統而異。在16位操作系統中,一般用位元組表示一個int型變數,且long型(位元組)int型(位元組)short型(位元組)。 顯然,不同類型的整型變數,其值域不同。 例:PC機中的一個int型變數,其值域為-215(215-1),即-3276832767;一個unsigned型變數的值域為:0(216-1),即065535。 可用sizeof(類型標識符)測量。,如何定義整型變數? int i;/*定義為整型變數*/ i10; /*給i賦以整數10*/ int a10; sh。
9、ort b30; long c 20; unsigned int number20;,例:,#define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,2.5 實型數據,2.5.1 實型變數 語言的實型變數,分為兩種: (1)單精度型。類型關鍵字為float,一般佔位元組(位)、提供位有效數字。 (2)雙精度型。類型關鍵字為double,一般占個位元組、提供1516位有效數字。,例 float a; a=111111.111; /* a=111111.1*/ double b; b。
10、=111111.111; /* b=111111.111*/,2.5.2 實型常量 實型常量即實數,在語言中又稱浮點數,其值有兩種表達形式: (1)十進制形式。例如3.14、9.8。 (2)指數形式: (e或E之前必須有數字;指數必須為整數)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,例:,#define PRICE 30.52 main() float num,total; num=10.89; total=num*PRICE; printf(「total=%f」, total); ,2.6 字元型數據,2.6.1 字元常量 字元常量的定義 用一對單引號括。
11、起來的單個字元,稱為字元常量。 例如,如 a A ? n 101 字元常量的值:該字元的ASCII碼值 如 A65, a97, 048 , n10 轉義字元 反斜線後面跟一個字元或一個代碼值表示 如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: main() printf(「 ab ct derftgn」); printf(「htibbj k」); ,例 轉義字元舉例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); 。
12、,2.6.2 字元變數 字元變數的類型關鍵字為char,一般佔用1位元組內存單元。 變數值的存儲字元變數用來存儲字元常量。將一個字元常量存儲到一個字元變數中,實際上是將該字元的ASCII碼值(無符號整數)存儲到內存單元中。 例如, char ch1, ch2; /*定義兩個字元變數:ch1,ch2*/ ch1=a; ch2=b; /*給字元變數賦值*/,一個字元型數據,既可以字元形式輸出,也可以整數形式輸出。,main() char ch1,ch2; ch1=a; ch2=b; printf(「ch1=%c,ch2=%cn」,ch1,ch2); printf(「ch1=%d,ch2=%dn」,c。
13、h1,ch2); ,main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小寫轉換*/ printf(「ch1=%c,ch2=%cn」,ch1-32,ch2+32); /*用字元形式輸出一個大於256的數值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ,字元常量與字元串常量不同,字元串常量 定義:用雙引號(「」)括起來的字元序列 存儲:每個字元串尾自動加一個 0 作為字。
14、符串結束標志,例: char ch; ch=「A」;,不同類型數據間的轉換,除上面講的自動轉換外,還有強制轉換。 例如, (double)a (等價於(double)(a) /*將變數a的值轉換成double型*/ (int)(x + y) /*將x+y的結果轉換成int型*/ (float)5 / 2(等價於(float)(5)/2) /*將5轉換成實型,再除以2(=2.5)*/ (float)(5 / 2) /*將5整除2的結果(2)轉換成實型(2.0)*/,2.7 算術運算與算術表達式,1.五種基本算術運算符 +、-、*、/、% (1)關於除法運算/ C語言規定:兩個整數相除,其商為整數。
15、,小數部分被舍棄。例如,5 / 2 = 2。 (2)關於求余數運算 要求兩側的操作數均為整型數據,否則出錯。,2.運算符的優先順序與結合性 1)按運算符的優先順序高低次序執行。例如,先乘除後加減。 2)如果在一個運算對象(或稱操作數)兩側的運算符的優先順序相同,則按語言規定的結合方向(結合性)進行。 例如,算術運算符的結合方向是「自左至右」,即:在執行「a b + c」時,變數b先與減號結合,執行「a - b」;然後再執行加c的運算。,3.自增、自減運算符+ - 作用:使變數值加1或減1 種類: 前置 +i, -i (先執行i+1或i-1,再使用i值) 後置 i+,i- (先使用i值,再執行i+1或。
16、i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(「%d」,+j); j=3; printf(「%d」,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,說明: + - 不能用於常量和表達式,如5+,(a+b)+ 優先順序: + - -* / % -+ -,2.8 賦值運算與賦值表達式,1.賦值運算 賦值符號「=」就是賦值運算符,它的作用是將一個表達式的值賦給一個變數。,例 a=3; d=func(); c=d+2; y = (float)5 /。
17、 2;,2.復合賦值運算 C語言規定的10種復合賦值運算符如下: +=,-=,*=,/=,%=; a+b=3;,例 float f; int i; i=10; f=i; 則 f=10.0,例 int i; i=2.56; /結果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,2.9 逗號運算符和逗號表達式,形式:表達式1,表達式2,表達式n 結合性:從左向右 逗號表達式的值:等於表達式n的值 用途:常用於循環for語句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(「%d,%d,%d」,a,b,c); printf(「%d,%d,%d」,(a,b,c),b,c);,/a=15,表達式值60,/a=15,表達式值20,/賦值表達式,表達式值18,x=18,/逗號表達式,表達式值18,x=3,/1,2,3,/3,2,3。
⑥ C語言如何一次聲明a1 到 a10
在計算機或者現實中,我們每做一件事情都有做這件事情的目的,不是盲目的去干。
這里一次聲明a1到a10的目的何在,在什麼地方使用,還是就是簡單的看語法,如果簡單的看語法就完全沒有必要了,如果有作用最好定義一個結構體,這樣這些變數的地址空間在一起便於程序運行。或者定義一個數組存儲這些變數的值。
⑦ c語言中s=average( a10)為什麼是 s
s只是變數名,自定義變數的時候起的名字,只要符合命名規則,起什麼名字都行。
average這是一個函數名,從代碼看s是用來接收函數average返回值的。
⑧ 1'在c語言中是多少
1'是一個邏輯非表達式。是C語言中的邏輯非運算符。C語言中的邏輯運算值是用0/1來代替的。0為假,1為真。非0值也為1。所以,!1 是一個邏輯非表達式。
C語言中有些符號,大多數人都不知道是什麼意思,比如!1就是其中一個,其實!1 是一個邏輯非表達式。感嘆號!是C語言中的邏輯非運算符。
C語言是沒有boolean數據類型的,所以也就沒有true,false這樣的值,除非你去宏定義一個。C中的邏輯運算值是用0/1來代替的。0為假,1為真。非0值也為1。所以,!1 是一個邏輯非表達式。
在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
優點:
1.C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試。
2.C語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建。
3.通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。
缺點:
1. C語言的缺點主要表現在數據的封裝性上,這一點使得C在數據的安全性上有很大缺陷,這也是C和C++的一大區別。
2. C語言的語法限制不太嚴格,對變數的類型約束不嚴格,影響程序的安全性,對數組下標越界不作檢查等。C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設計更熟練一些。
⑨ C語言各類型數據的位數是多少
這個跟系統有關的,你可以通過sizeof各個類型來看位元組數,從而算出位數。具體可以用以下代碼看
#include<stdio.h>
void main()
{
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long int));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
}
一般我們用的32位系統是:
類型 位元組數 位數 范圍
int 4 32 -2147483648 ~ 2147483647
long 4 32 同上
float 4 32 -2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
double 6 64 -2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308