1. c語言問題
數學水平是要的,重要的是邏輯思維!
函數也是要的,沒那你就寫不出什麼好的程序!
這函數又和課本上的數學函數有點不一樣!
但不象數學函數那麼難,但比數學函數靈活,也有意思。
可不是要所有課本的數學函數!
課本數學可以不好,但是你邏輯思維一定要好,熊貓燒香知道吧,寫這程序的人只是中專畢業!!
英語前期是不需要的!因為C裡面只要記一點函數名!都很簡單的英語!
後期是要英語好的!好的C書都是英文的!(對此我很氣憤!!!)
C既是高級語言,又是低級語言;之後在學C++;
編程序是小意思的!
只要你學的好,那麼個小病毒又算什麼呢?
學C的話你要有很強的毅力!
不要只是為了好玩才學!!!!
那你就不要學了!
如果你只是一點興趣時間又很多的話不妨學學!
C的理論比較煩,但是不多!
還有什麼問題我將繼續為你解答!
學之前好好想想!
我郵箱 [email protected]
郵件中請注名C語言,要不我會當垃圾郵件處理的!
你可以發來;願意為你解答一些問題;
我也只能算個小菜鳥
2. c語言關於結構體的問題
c是指針,必須指向一個有效的地址,而且要用->訪問成員
你沒給c賦值,所以報錯
3. c語言問題
%*d
忽略一次作整形的輸入
所以30賦給了J
k還是初始值0
4. 請問各位關於C語言得問題
那個沒有問題的,
是switch後面沒有加括弧,
輸入的格式也不清晰,
而且輸出必須要放到分支外頭的
我在你的基礎上改了下,
#include<stdio.h>
main()
{
int a,b,c,d;
float sum;
printf("please input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
sum=18*a+132*b+4.5*c;
d=sum/100;
switch(d)
{
case 1:sum=sum*0.95; break;
case 2:sum=sum*0.94; break;
case 3:sum=sum*0.93; break;
case 4:sum=sum*0.92; break;
default:sum=sum*0.9;
}
printf("%.2f",sum);
}
5. C語言入門知識
char a[20],b[20],c[20];上面的a,b,c都是數組變數,在定義時已經為其分配棧內存,而char (*str1)[20],(*str2)[20],(*str3)[20]; 只是分配了4個位元組的內存來保存指針變數(即變數本身),而指針的值(即指向)還沒有,所以這些指針還不能保存數據!--------------char (*str1)[20],(*str2)[20],(*str3)[20]; str1 str2 str3均為指針,都指向長度為20的char數組.你只定義了指針,但是沒有對其進
6. c語言問題
C語言中,變數分為全局變數和局部變數;也可以這樣分:自動變數,靜態變數.前者是按變數作用范圍來分的,而後者是按變數存儲方式來分的.
如果按存儲佔用空間來分,可以是整型變數,字元型變數,浮點型變數等.當然還有數組,結構體變數等.
C語言還有一個重要變數:指針變數.它存放的值是一個內存地址.操作系統變數
C語言中變數名是有大小寫之分的,如SUN與sun就是兩個不同的變數名。
另一點,聲明變數時,可以不用聲明就直接賦值來決定變數類型的語言如(javascript,flash cs3.0以前,等),這類語言變數的聲明通常被稱為弱類型,而如(c++等)必須先聲明,後使用,而且聲明時必須確定變數類型,這種就是嚴格的數據類
整型量
整型量包括整型常量、整型變數。整型常量就是整常數。在C語言中,使用的整常數有八進制、十六進制和十進制三種。
整型常量
1.八進制整常數八進制整常數必須以0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。
以下各數是合法的八進制數:
015(十進制為13) 0101(十進制為65) 0177777(十進制為65535)
以下各數不是合法的八進制數:
256(無前綴0) 03A2(包含了非八進制數碼) -0127(出現了負號)
2.十六進制整常數
十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。
以下各數是合法的十六進制整常數:
0X2A(十進制為42) 0XA0 (十進制為160) 0XFFFF (十進制為65535)
以下各數不是合法的十六進制整常數:
5A (無前綴0X) 0X3H (含有非十六進制數碼)
3.十進制整常數
十進制整常數沒有前綴。其數碼為0~9。
以下各數是合法的十進制整常數:
237 -568 65535 1627
以下各數不是合法的十進制整常數:
023 (不能有前導0) 23D (含有非十進制數碼)
在程序中是根據前綴來區分各種進制數的。因此在書寫常數時不要把前綴弄錯造成結果不正確。4.整型常數的後綴在16位字長的機器上,基本整型的長度也為16位,因此表示的數的范圍也是有限定的。十進制無符號整常數的范圍為0~65535,有符號數為-32768~+32767。八進制無符號數的表示範圍為0~0177777。十六進制無符號數的表示範圍為0X0~0XFFFF或0x0~0xFFFF。如果使用的數超過了上述范圍,就必須用長整型數來表示。長整型數是用後綴「L」或「l」來表示的。例如:
十進制長整常數 158L (十進制為158) 358000L (十進制為-358000)
八進制長整常數 012L (十進制為10) 077L (十進制為63) 0200000L (十進制為65536)
十六進制長整常數 0X15L (十進制為21) 0XA5L (十進制為165) 0X10000L (十進制為65536)
長整數158L和基本整常數158 在數值上並無區別。但對158L,因為是長整型量,C編譯系統將為它分配4個位元組存儲空間。而對158,因為是基本整型,只分配2 個位元組的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數也可用後綴表示,整型常數的無符號數的後綴為「U」或「u」。例如: 358u,0x38Au,235Lu 均為無符號數。前綴,後綴可同時使用以表示各種類型的數。如0XA5Lu表示十六進制無符號長整數A5,其十進制為165。
整型變數
整型變數可分為以下幾類:
1.基本型
類型說明符為int,在內存中佔2個位元組,其取值為基本整常數。
2.短整量
類型說明符為short int或short'C110F1。所佔位元組和取值范圍均與基本型相同。
3.長整型
類型說明符為long int或long ,在內存中佔4個位元組,其取值為長整常數。
4.無符號型
類型說明符為unsigned。
無符號型又可與上述三種類型匹配而構成:
(1)無符號基本型 類型說明符為unsigned int或unsigned。
(2)無符號短整型 類型說明符為unsigned short
(3)無符號長整型 類型說明符為unsigned long
各種無符號類型量所佔的內存空間位元組數與相應的有符號類型量相同。但由於省去了符號位,故不能表示負數。 下表列出了Turbo C中各類整型量所分配的內存位元組數及數的表示範圍。
類型說明符 數的范圍 分配位元組數
int -32768~32767 ■■
short int -32768~32767 ■■
signed int -32768~32767 ■■
unsigned int 0~65535 ■■
long int -2147483648~2147483647 ■■■■
unsigned long 0~4294967295 ■■■■
整型變數的說明
變數說明的一般形式為: 類型說明符 變數名標識符,變數名標識符,...; 例如:
int a,b,c; (a,b,c為整型變數)
long x,y; (x,y為長整型變數)
unsigned p,q; (p,q為無符號整型變數)
在書寫變數說明時,應注意以下幾點:
1.允許在一個類型說明符後,說明多個相同類型的變數。各變數名之間用逗號間隔。類型說明符與變數名之間至少用一個空格間隔。
2.最後一個變數名之後必須以「;」號結尾。
3.變數說明必須放在變數使用之前。一般放在函數體的開頭部分。
[Practice] //1int a,b;
short int c;
short d=100;
a=d-20;
b=a+d;
c=a+b+d;
d=d-a+c-b;'Vtable
a,2,0
b,2,0
c,2,0
d,2,100
of Vtable
'Vupdate
1,0;2,0
3,0
4,100
1,80
2,180
3,360
4,200
of Vupdate
of Practice
[Practice] //2int a=5;
int b=9;
long int c;
long d;
c=a+b-7;
d=a*b*c;
c=d*d*d;
a=c-d;'Vtable
a,2,5
b,2,9
c,4,0
d,4,0
of Vtable
'Vupdate
1,5
2,9
3,0
4,0
3,7
4,315
3,31255875
1,-5112
of Vupdate
of Practice
[Practice] //3int a=6,b=19;
unsigned int c;
int d;
c=a-b+7;
d=b*c;
a=b+c+d;
b=-a;'Vtable
a,2,6
b,2,19
c,2,0
d,2,0
of Vtable
'Vupdate
1,6;2,19
3,0
4,0
3,65530
4,-114
1,-101
2,101
of Vupdate
of Practice
void main(){
long x,y;
int a,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
}
將main說明為返回void,即不返回任何類型的值
x,y被定義為long型
a,b,c,d被定義為int型
5->x
6->y
7->a
8->b
x+a->c
y+b->d
顯示程序運行結果 of long x,y;
int a,b,c,d;
c=x+a;
d=y+b;
從程序中可以看到:x, y是長整型變數,a, b是基本整型變數。它們之間允許進行運算,運算結果為長整型。但c,d被定義為基本整型,因此最後結果為基本整型。本例說明,不同類型的量可以參與運算並相互賦值。其中的類型轉換是由編譯系統自動完成的。有關類型轉換的規則將在以後介紹。
實型量
實型常量
實型也稱為浮點型。實型常量也稱為實數或者浮點數。在C語言中,實數只採用十進制。它有二種形式: 十進制數形式指數形式
1.十進制數形式
由數碼0~ 9和小數點組成。例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均為合法的實數。
2.指數形式
由十進制數,加階碼標志「e」或「E」以及階碼(只能為整數,可以帶符號)組成。其一般形式為a E n (a為十進制數,n為十進制整數)其值為 a*10,n 如: 2.1E5 (等於2.1*10,5), 3.7E-2 (等於3.7*10,)-2*) 0.5E7 (等於0.5*10,7), -2.8E-2 (等於-2.8*10,)-2*)以下不是合法的實數 345 (無小數點) E7 (階碼標志E之前無數字) -5 (無階碼標志) 53.-E3 (負號位置不對) 2.7E (無階碼)
標准C允許浮點數使用後綴。後綴為「f」或「F」即表示該數為浮點數。如356f和356.是等價的。例2.2說明了這種情況:
void main()
{
printf("%f\n%f\n",356.,356f);
}
void 指明main不返回任何值 利用printf顯示結果 結束
實型變數
實型變數分為兩類:單精度型和雙精度型,
其類型說明符為float 單精度說明符,double 雙精度說明符。在Turbo C中單精度型佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。雙精度型佔8 個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。
實型變數說明的格式和書寫規則與整型相同。
例如: float x,y; (x,y為單精度實型量)
double a,b,c; (a,b,c為雙精度實型量)
實型常數不分單、雙精度,都按雙精度double型處理。
void main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}
此程序說明float、double的不同
a ■■■■
b ■■■■■■■■
a<---33333.33333
b<---33333.33333333333;;
顯示程序結果
此程序說明float、double的不同
float a;
double b;
a=33333.33333;
b=33333.33333333333333; 從本例可以看出,由於a 是單精度浮點型,有效位數只有七位。而整數已佔五位,故小數二位後之後均為無效數字。b 是雙精度型,有效位為十六位。但Turbo C 規定小數後最多保留六位,其餘部分四捨五入。
[Practice] //floatint a=32;
float b;
double d;
b=12345678;
d=b*100;
d=d+a;
d=d+58.123456;'Vtable
a,2,32
b,4,0.0
d,8,0.0
of Vtable
'Vupdate
1,32
2,0
3,0
2,12345678.00000
3,1234567800
3,1234567832
3,1234567890.123456
of Vupdate
of Practice
[Practice] //1int a=543;
float b;
b=123.123962+a;
b=b-100;
a=b;'Vtable
a,2,543
b,4,0.0
of Vtable
'Vupdate
1,543
2,0.0
2,123.123962
2,23.123962
1,23
of Vupdate
of Practice
字元型量
字元型量包括字元常量和字元變數。
字元常量
字元常量是用單引號括起來的一個字元。例如'a','b','=','+','?'都是合法字元常量。在C語言中,字元常量有以下特點:
1.字元常量只能用單引號括起來,不能用雙引號或其它括弧。
2.字元常量只能是單個字元,不能是字元串。
3.字元可以是字元集中任意字元。但數字被定義為字元型之後就
不能參與數值運算。如'5'和5 是不同的。'5'是字元常量,不能參與運算。
轉義字元
轉義字元是一種特殊的字元常量。轉義字元以反斜線"\"開頭,後跟一個或幾個字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱「轉義」字元。例如,在前面各例題printf函數的格式串中用到的「\n」就是一個轉義字元,其意義是「回車換行」。轉義字元主要用來表示那些用一般字元不便於表示的控制代碼。
常用的轉義字元及其含義
轉義字元 轉義字元的意義
\n 回車換行
\t 橫向跳到下一製表位置
\v 豎向跳格
\b 退格
\r 回車
\f 走紙換頁
\\ 反斜線符"\"
\' 單引號符
\a 鳴鈴
\ddd 1~3位八進制數所代表的字元
\xhh 1~2位十六進制數所代表的字元
廣義地講,C語言字元集中的任何一個字元均可用轉義字元來表示。表2.2中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜線,\XOA表示換行等。轉義字元的使用
void main()
{
int a,b,c;
a=5; b=6; c=7;
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
}
此程序練習轉義字元的使用
a、b、c為整數 5->a,6->b,7->c
調用printf顯示程序運行結果
printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c);
程序在第一列輸出a值5之後就是「\n」,故回車換行;接著又是「\t」,於是跳到下一製表位置(設製表位置間隔為8),再輸出b值6;空二格再輸出c 值7後又是"\n",因此再回車換行;再空二格之後又輸出a值5;再空三格又輸出b的值6;再次後"\t"跳到下一製表位置(與上一行的6 對齊),但下一轉義字元「\b」又使退回一格,故緊挨著6再輸出c值7。
字元變數
字元變數的取值是字元常量,即單個字元。字元變數的類型說明符是char。字元變數類型說明的格式和書寫規則都與整型變數相同。
例如:
char a,b; 每個字元變數被分配一個位元組的內存空間,因此只能存放一個字元。字元值是以ASCII碼的形式存放在變數的內存單元之中的。如x的
十進制ASCII碼是120,y的十進制ASCII碼是121。對字元變數a,b賦予'x'和'y'值: a='x';b='y';實際上是在a,b兩個單元內存放120和121的二進制代碼: a 0 1 1 1 1 0 0 0
b 0 1 1 1 1 0 0 1
所以也可以把它們看成是整型量。 C語言允許對整型變數賦以字元值,也允許對字元變數賦以整型值。在輸出時, 允許把字元變數按整型量輸出,也允許把整型量按字元量輸出。 整型量為二位元組量,字元量為單位元組量,當整型量按字元型量處理時, 只有低八位位元組參與處理。
main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a ■ b ■
a <-- 120
b <--- 121
顯示程序結果
本程序中說明a,b為字元型,但在賦值語句中賦以整型值。從結果看,a,b值的輸出形式取決於printf函數格式串中的格式符,當格式符為"c"時,對應輸出的變數值為字元,當格式符為"d"時,對應輸出的變數值為整數。
void main()
{
char a,b;
a='x';
b='y';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}
a,b被說明為字元變數並賦予字元值
把小寫字母換成大寫字母
以整型和字元型輸出
本例中,a,b被說明為字元變數並賦予字元值,C語言允許字元變數參與數值運算,即用字元的ASCII 碼參與運算。由於大小寫字母的ASCII 碼相差32,因此運算後把小寫字母換成大寫字母。然後分別以整型和字元型輸出。
[Practice] //charint a=49;
char b;
char d;
b=a+10;
d=a+b;'Vtable
a,2,49
b,1,隨機
d,1,隨機
of Vtable
'Vupdate
1,49
2,隨機
3,隨機
2,';'
3,'l'
of Vupdate
of Practice
[Practice] //char c1,c2;
c1='a';c2='b';
c1=c1-32;c2=c2-32;'Vtable
c1,1,隨機
c2,1,隨機
of Vtable
'Vupdate
1,隨機;2,隨機
1,'a';2,'b'
1,'A';2,'B'
of Vupdate
of Practice
字元串常量
字元串常量是由一對雙引號括起的字元序列。例如: "CHINA" ,"C program:" , "$12.5" 等都是合法的字元串常量。字元串常量和字元常量是不同的量。它們之間主要有以下區別:
1.字元常量由單引號括起來,字元串常量由雙引號括起來。
2.字元常量只能是單個字元,字元串常量則可以含一個或多個字元。
3.可以把一個字元常量賦予一個字元變數,但不能把一個字元串常量賦予一個字元變數。在C語言中沒有相應的字元串變數。
這是與BASIC 語言不同的。但是可以用一個字元數組來存放一個字元串常量。在數組一章內予以介紹。
4.字元常量佔一個位元組的內存空間。字元串常量占的內存位元組數等於字元串中位元組數加1。增加的一個位元組中存放字元"\0"(ASCII碼為0)。這是字元串結束的標志。例如,字元串 "C program"在內存中所佔的位元組為:C program\0。字元常量'a'和字元串常量"a"雖然都只有一個字元,但在內存中的情況是不同的。
'a'在內存中佔一個位元組,可表示為:a
"a"在內存中佔二個位元組,可表示為:a\0符號常量
符號常量
在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:
#define 標識符 常量
其中#define也是一條預處理命令(預處理命令都?quot;#"開頭),稱為宏定義命令(在第九章預處理程序中將進一步介紹),其功能是把該標識符定義為其後的常量值。一經定義,以後在程序中所有出現該標識符的地方均代之以該常量值。習慣上符號常量的標識符用大寫字母,變數標識符用小寫字母,以示區別。
#define PI 3.14159
void main()
{
float s,r;
r=5;
s=PI*r*r;
printf("s=%f\n",s);
}
由宏定義命令定義PI 為3.14159 s,r定義為實數 5->r PI*r*r->s
顯示程序結果 float s,r; r=5; s=PI*r*r; 本程序在主函數之前由宏定義命令定義PI 為3.14159,在程序中即以該值代替PI 。s=PI*r*r等效於s=3.14159*r*r。應該注意的是,符號常量不是變數,它所代表的值在整個作用域內不能再改變。也就是說,在程序中,不能再用賦值語句對它重新賦值。
7. C語言必須知道的300個問題的目錄
第1章 初識C語言 1
問題1 C語言是如何發展起來的? 2
問題2 什麼是ANSI標准? 2
問題3 C語言編寫程序的優點有哪些? 3
問題4 如何規避C語言的不足之處? 4
問題5 C語言的應用領域有哪些? 5
問題6 什麼是C99標准?與C89標准
相比,C99標准有哪些
新特性? 6
問題7 C語言是C++的子集嗎? 10
問題8 C語言程序的開發過程是
怎樣的? 11
問題9 什麼是編譯程序和解釋程序? 12
問題10 ANSI C的編譯限制有哪些? 13
第2章 一個簡單的C程序 14
問題11 C語言的入口函數是什麼? 15
問題12 C語言程序由哪些部分組成? 16
問題13 如何在Turbo C 2.0中輸入一個
程序? 16
問題14 如何在Visual C++ 6.0中運行
一個C程序? 18
問題15 如何在Visual C++ 2008中運行
一個C程序? 22
問題16 如何提高程序的可讀性? 26
問題17 什麼是關鍵字?C語言的關鍵
字有哪些? 27
問題18 什麼是標識符?使用標識符的
注意事項是什麼? 29
問題19 void關鍵字都有哪些用途? 30
問題20 什麼是匈牙利命名約定?它是否
是好的約定? 31
第3章 演算法入門 33
問題21 為什麼說演算法是程序設計的
靈魂? 34
問題22 演算法的特性有哪些? 34
問題23 如何評價一個演算法的好壞? 35
問題24 演算法的表示方法都有哪些? 36
問題25 演算法的基本結構是什麼? 40
問題26 演算法有哪幾類? 42
問題27 演算法的效率度量方法有哪些? 42
問題28 什麼是演算法的時間復雜度? 43
問題29 什麼是演算法的空間復雜度? 44
問題30 什麼是分治法演算法思想? 45
第4章 常用數據類型 46
問題31 聲明變數和定義變數的區別
是什麼? 47
問題32 在開發時如何決定使用哪種
數據類型? 48
問題33 什麼是常量?如何區分常量
和變數? 48
問題34 各種數據類型所佔的內存是
多少? 49
問題35 字元與字元串的差別有
哪些? 50
問題36 變數是否必須初始化? 51
問題37 為什麼會發生數據溢出?如何
避免數據溢出? 52
問題38 局部變數和全局變數能否
重名? 53
問題39 全局變數可不可以定義在可被
多個.C文件包含的頭文件中?
為什麼? 53
問題40 如何引用一個已經定義過的
外部變數? 54
問題41 全局變數和局部變數的存儲
方式有什麼區別? 55
問題42 整型常量的存儲形式是
怎樣的? 55
問題43 整型常量的表示形式有
哪幾種? 56
問題44 使用了沒定義的變數會有什麼
現象? 56
問題45 static關鍵字有什麼作用? 57
問題46 const關鍵字有什麼作用? 59
問題47 const與#define相比有何
優點? 60
問題48 sizeof不是函數嗎? 61
問題49 float類型數如何與0值
比較? 63
問題50 靜態變數與自動變數的區別
有哪些? 64
第5章 運算符與表達式 66
問題51 運算符的優先順序和結合性是
怎樣的? 67
問題52 如何區分「,」是運算符還是
分隔符? 68
問題53 C語言如何解釋x=a+=b+c? 69
問題54 x=x+1,x+=1,x++,哪個效率
最高? 70
問題55 什麼是運算符的目?怎樣進行
區分? 70
問題56 使用「++」和「--」運算符需要
注意些什麼? 71
問題57 如何理解i+++j? 71
問題58 賦值表達式中什麼是左值和右值?數組名作為左右值時又具有怎樣的意義? 72
問題59 如何確定條件表達式的結果的
數據類型? 73
問題60 「%」運算符是否可以對小數
進行運算? 74
問題61 「/」運算符得到的結果一定為
整數嗎? 75
問題62 在進行多種數據類型混合運算
的時候,數據類型自動轉換有
哪些規則? 76
問題63 C語言中有哪些簡化的運算
表達式? 77
問題64 使用邏輯表達式需要注意哪
幾點問題? 77
問題65 i++*i++這樣的表達式為什麼
不能得到預期的結果? 78
問題66 a[i]=i++;這樣的代碼正確嗎? 79
問題67 編寫表達式時需要注意
什麼? 79
問題68 如何理解c=a,b;? 80
問題69 為無符號類型變數賦值時,數據
類型應怎樣轉換? 81
問題70 C語言表達式的求值順序總是
按照運算符的結合性保證
「自左至右」或者「自右
至左」嗎? 81
第6章 輸入/輸出函數 83
問題71 函數printf()的基本格式
是什麼? 84
問題72 如何認識printf()函數的格式
字元? 85
問題73 函數printf()的標志有幾種?
如何使用? 91
問題74 如何控制輸出最小寬度? 91
問題75 如何控制輸出精度? 92
問題76 如何控制輸出長度? 93
問題77 如何動態設置輸出寬度和
精度? 94
問題78 printf()函數的返回值是
什麼? 95
問題79 如何理解輸出列表? 96
問題80 函數scanf()的基本格式是
什麼? 96
問題81 scanf()函數的格式字元是
什麼? 97
問題82 使用scanf()函數應注意的問題
是什麼? 100
問題83 scanf()函數的返回值是
什麼? 101
問題84 如何使用getchar()函數? 102
問題85 getch()函數如何使用? 104
問題86 如何應用gets()函數? 104
問題87 如何應用putch()函數? 105
問題88 puts()函數該如何應用? 106
問題89 如何控制多數值的輸入? 107
問題90 如何輸入字元數組? 108
第7章 選擇、分支結構程序設計 110
問題91 5>4>3為什麼不成立——談談
關系表達式的值 111
問題92 =和==如何區分? 112
問題93 什麼叫邏輯短路? 113
問題94 if語句的基本形式有哪些?
如何應用? 114
問題95 浮點數的相等比較是否可以
用==? 116
問題96 關系運算符和數學不等號有
什麼區別? 117
問題97 if語句後面一定不能寫
分號嗎? 118
問題98 這個程序為什麼多執行了好多
語句? 119
問題99 不用關系表達式和邏輯表達式
做條件 120
問題100 怎樣理解復合語句中的
變數? 122
問題101 如何進行if語句的嵌套? 123
問題102 條件運算符「? :」怎樣
應用? 124
問題103 switch語句的基本格式是
什麼? 125
問題104 if語句與switch語句的優缺
點是什麼? 127
問題105 switch語句中的default關鍵字
是否必須? 128
問題106 break關鍵字在switch語句中
應注意什麼? 128
問題107 如何正確判斷if和else的
匹配? 130
問題108 switch和case後的表達式值的
類型是否可以是浮點型? 132
問題109 區段劃分型條件有什麼
技巧? 133
問題110 default必須寫在所有case
之後嗎? 134
第8章 循環結構 136
問題111 循環結構的基本概念是
什麼? 137
問題112 while語句的基本格式是
什麼? 138
問題113 while循環應注意什麼
問題? 139
問題114 for循環語句的基本格式
是什麼? 140
問題115 for語句的三個表達式都是
必須的嗎? 142
問題116 do…while語句的基本格式
是什麼? 144
問題117 分號在循環體中的作用? 146
問題118 while與do…while的
區別? 148
問題119 什麼是循環嵌套? 149
問題120 循環嵌套的結構是
怎樣的? 151
問題121 如何正確使用循環嵌套? 153
問題122 死循環是怎樣產生的? 154
問題123 怎樣提高循環語句的
效率? 156
問題124 continue語句的基本作用
是什麼? 158
問題125 break語句的基本作用是
什麼? 159
問題126 goto語句的基本格式是什麼?
如何使用? 161
問題127 goto語句的缺陷是什麼? 163
問題128 如何選擇循環語句? 165
問題129 如何判定循環結束和提前
結束? 165
問題130 如何避免循環中的初值錯誤
問題? 167
第9章 數組 170
問題131 什麼是數組?其存儲有何
特點? 171
問題132 數組的維數該如何理解? 171
問題133 一維數組是怎樣定義的? 172
問題134 如何引用一維數組元素? 173
問題135 如何初始化一維數組? 174
問題136 如何設計數組的排序
演算法? 175
問題137 如何定義二維數組? 176
問題138 如何引用二維數組元素? 178
問題139 如何初始化二維數組? 179
問題140 如何定義字元數組? 180
問題141 如何初始化字元數組? 180
問題142 如何引用字元數組? 181
問題143 如何進行字元數組的
復制? 182
問題144 如何進行字元數組的
連接? 183
問題145 如何進行字元串的比較? 185
問題146 如何測定字元串的長度? 187
問題147 如何進行字元串大小寫的
相互轉換? 188
問題148 如何計算字元串中有多少個
單詞? 190
問題149 gets()函數和scanf()函數在輸入
字元串時有何區別? 191
問題150 puts()函數和printf()函數在輸出
字元串時有何區別? 192
問題151 數組與指針的區別是什麼? 193
問題152 為什麼作為函數形參的數組和
指針可以互換? 195
問題153 為什麼數組名作參數傳遞給子
函數時,子函數可以改變主
函數中數組的值? 196
問題154 C語言中有動態數組嗎? 197
問題155 如何實現動態二維數組? 199
問題156 strcpy()函數可以復制字元串的
一部分嗎? 201
問題157 字元串和字元數組有什麼
區別? 202
問題158 『 』和「 」有什麼區別? 203
問題159 字元數組佔用內存
怎樣算? 204
問題160 用字元數組和指針兩種方式
定義的字元串有什麼
不同? 204
第10章 函數編程基礎 206
問題161 什麼是函數?如何分類? 207
問題162 如何定義無參函數? 209
問題163 如何定義有參函數? 210
問題164 什麼是空函數?作用是
什麼? 210
問題165 什麼是形參和實參?如何
使用? 211
問題166 如何從函數返回? 213
問題167 函數返回值你了解多少? 214
問題168 如何進行函數的一般
調用? 215
問題169 函數調用的基本方式有幾種?
各是什麼? 216
問題170 函數調用應具備哪些
條件? 216
問題171 如何進行函數的嵌套
調用? 218
問題172 什麼是遞歸調用?如何
實現? 219
問題173 函數如何將數組元素作為
實參? 222
問題174 如何將數組名作為函數
參數? 224
問題175 如何將多維數組名作為函數
參數? 227
問題176 什麼是局部變數? 228
問題177 什麼是全局變數?如何
應用? 229
問題178 存儲方式有哪幾種?分別
是什麼? 232
問題179 如何使用auto關鍵字? 233
問題180 什麼是靜態變數?如何
實現? 236
問題181 什麼是寄存器變數?如何
實現? 238
問題182 如何聲明外部變數? 239
問題183 如何調用編譯後的函數? 240
問題184 如何限定外部變數的使用
范圍? 241
問題185 如何使用函數調用實現對字
符串的統計? 242
問題186 main()函數有什麼作用? 243
問題187 什麼是內部函數? 243
問題188 什麼是外部函數?
怎麼用? 244
問題189 static()函數與普通函數有什麼
區別? 245
問題190 形參和實參有什麼區別? 246
第11章 指針解析 248
問題191 什麼是指針?什麼是指針
變數? 249
問題192 如何創建指針? 250
問題193 如何初始化指針? 251
問題194 如何使用指針? 252
問題195 函數中如何傳遞指針? 254
問題196 指針、數組和地址之間的關系
是什麼? 255
問題197 如何進行指針運算? 256
問題198 如何使用指針操作數組? 258
問題199 如何用指針表示多維
數組? 260
問題200 如何使用指針操作多維
數組? 261
問題201 如何用指針為函數傳遞
數組? 263
問題202 如何用指針表示字元串? 264
問題203 如何使用字元串指針作為函數
參數? 265
問題204 字元數組和字元指針的區別
是什麼? 266
問題205 什麼是指針數組? 267
問題206 如何使用指針數組處理
字元串? 268
問題207 如何將指針數組作為函數的
參數? 269
問題208 什麼是指向指針的指針? 270
問題209 二級指針如何應用於一維
數組? 271
問題210 如何實現二級指針對二維數組
的操作? 272
問題211 二級指針如何操作字元串數組
(指針數組)? 273
問題212 如何理解返回指針的
函數? 275
問題213 什麼是指向函數的指針? 277
問題214 如何用const控制指針? 278
問題215 什麼是「野指針」? 279
問題216 main()函數的指針數組形參
是怎麼回事? 279
問題217 void指針就是空指針嗎?它
有什麼作用? 281
問題218 指針是一種特殊的變數,只能
用來保存地址。這句話
對嗎? 282
問題219 字元指針、浮點數指針以及
函數指針這三種類型的變數
哪個佔用的內存最大?
為什麼? 282
問題220 一個32位的機器,該機器的
指針是多少位? 283
第12章 常用數據結構 284
問題221 空結構體所佔的內存是
多少? 285
問題222 在C語言中,一個結構體可以
包含指向自己的指針嗎? 286
問題223 struct person{...};person a;
為什麼編譯出錯? 287
問題224 怎樣從/向數據文件讀/寫
結構? 289
問題225 枚舉與#define宏的區別有
哪些? 290
問題226 如何看待枚舉類型,枚舉類型
的優點是什麼? 291
問題227 關鍵字typedef的功能是
什麼? 292
問題228 類型定義是否允許嵌套? 294
問題229 typedef與#define宏的相似之處
與不同之處是什麼? 295
問題230 什麼是散列法? 296
問題231 大小端模式對union類型數據
有什麼影響? 297
問題232 如何為聯合體變數賦
初值? 298
問題233 如何證明聯合體變數的所有成員是共享一個內存單元的? 300
問題234 堆和棧的區別是什麼? 301
問題235 舉例說明,什麼是靜態鏈表?
什麼是動態鏈表? 302
問題236 單向鏈表、雙向鏈表和循環鏈
表有什麼區別? 304
問題237 如何在鏈表中的指定位置插入
結點? 305
問題238 如何刪除鏈表中指定位置的
結點? 306
問題239 如何創建一個動態鏈表? 308
問題240 指向結構體數組的指針如何
應用? 310
第13章 位運算操作符 312
問題241 什麼是位運算?位運算符包括
哪些? 313
問題242 移位運算中如何補位? 314
問題243 移位運算符與加減運算符的
優先順序哪個較高? 315
問題244 什麼是循環移位? 316
問題245 什麼是位段?其優點是
什麼? 317
問題246 如何正確使用位段? 318
問題247 數據在計算機中的存儲單位有
哪些?有幾種存儲形式? 320
第14章 存儲管理 322
問題248 與內存息息相關的重要概念
有哪些? 323
問題249 指針指向不合法引起了哪些
內存問題? 324
問題250 內存分配與釋放引起的常見
問題有哪些? 325
問題251 什麼是內存越界?什麼是內存
泄露?二者是如何產生的? 326
問題252 C語言提供了哪些動態內存
分配函數? 327
問題253 malloc()函數與calloc()函數有
什麼區別? 328
問題254 內存耗盡怎麼辦? 328
問題255 動態內存會被自動釋
放嗎? 330
問題256 高位優先與低位優先的不同
之處是什麼? 330
問題257 free()和delete()怎樣處理
指針? 331
問題258 怎樣利用好敏感的內存
資源? 333
第15章 預處理和函數類型 335
問題259 在頭文件中#if、_STDC_等字元
起什麼作用? 336
問題260 如何書寫多條語句宏? 337
問題261 預處理中#和##運算符是什麼
意思? 338
問題262 一個頭文件可以包含另一個頭
文件嗎? 339
問題263 #include<>和#include「」有什麼
區別? 340
問題264 什麼是無參宏定義? 341
問題265 什麼是帶參宏定義? 342
問題266 怎樣寫參數個數可變
的宏? 343
問題267 #pragma預處理的作用
是什麼? 345
問題268 條件編譯的表達形式有
哪些? 346
問題269 如何應用內部函數? 347
問題270 如何應用外部函數? 348
第16章 文件的讀寫操作 351
問題271 各個讀寫操作的區別是
什麼? 352
問題272 C語言文件有哪幾類? 354
問題273 怎樣寫數據文件,使之可以在
不同字大小、位元組順序或浮點
格式的機器上讀入? 355
問題274 能否使用fflush()函數清除多餘
的輸入? 356
問題275 fopen()函數打開文件失敗的
原因是什麼? 357
問題276 為什麼打開文件後要及時
關閉? 358
問題277 文件的打開方式有哪些? 358
問題278 如何正確使用putchar()函數和getchar()函數? 360
問題279 getchar()函數、getch()函數和getche()函數的區別是
什麼? 361
問題280 使用printf()函數和scanf()函數
需要注意什麼? 362
問題281 printf()函數有哪些參數? 363
問題282 scanf()函數的格式控制包括
哪些? 364
問題283 printf()函數和scanf()函數格式
符的修飾符「*」有什麼
作用? 366
問題284 fscanf()函數、fprintf()函數與scanf()函數和printf()函數有什麼
不同? 367
問題285 如何判斷文件的結束? 368
第17章 圖形圖像處理 371
問題286 為什麼在使用圖形函數時要
首先初始化圖形模式? 372
問題287 怎樣初始化圖形模式? 372
問題288 初始化時提示「BGI Error: Graphics not initialized
(use 'initgraph')」怎麼辦? 374
問題289 怎樣利用C語言建立獨立的
圖形運行程序? 375
問題290 TC中有幾個畫線函數?怎麼
使用? 376
問題291 TC中有幾個畫矩形函數?怎麼
使用? 377
問題292 TC中有幾個畫圓函數?怎麼
使用? 379
問題293 如何使用C語言填充封閉
圖形? 380
問題294 TC中有幾個和游標有關的
函數?怎樣使用? 382
問題295 如何在圖形模式下輸出
文本? 383
問題296 背景色、線條顏色和填充顏色
有什麼區別?何時使用? 386
問題297 怎樣記住那麼多的顏色? 387
問題298 線條樣式和填充樣式都有
哪些?怎樣設置? 388
問題299 怎樣復制圖形? 392
問題300 怎樣在C語言中製作
動畫? 394
8. c語言語法問題!高手請進
1.
#define是替換的意思,所以函數形參也被替換了,所以語法不對
改好了:
#include <stdio.h>
#define pi 3.1415926
#define r 2.0
double calcuarea(double ) ;
double calcucirum(double ) ;
int main(void)
{
printf("圓的面積是:%f\n", calcuarea(r));
printf("圓的周長是:%f\n", calcucirum(r));
return 0; }
double calcuarea(double R)
{
return(pi*R*R);
}
double calcucirum(double R)
{
return(pi*R*2.0);
}
2.
揚和?的輸出是漢字編碼,你想要的應該是ascii碼
'2'的ascii是50,'a'的ascii是97,他們的和達到了147,不屬於ascii的范疇了,當超過127的字元以字元格式輸出會按漢字編碼方式兩個位元組結合成一個漢字
字元串以\0結尾,第一次的揚由147,0這兩個位元組結合
第二次由於在\0前面多了個\n,147不能和另一字元結合,單位元組非ascii輸出?
3.
#include <stdio.h>
int main(void)
{
int i,j;
float x,y;
char c;
scanf("%2d%f%f%c%d",&i,&x,&y,&c,&j);
return 0;
}
為什麼結果是無法運行?
可以運行
4.
此時結果是非常長的一串數,非意願,但是將「%f」換成「%lf」時結果就變成了意願!
浮點數的內存格式是 符號為+階碼+尾數(左端為高位元組)
而double為8位元組,float為4位元組
當以%lf格式操作的時候沒有問題
當以%f格式操作的時候,由於輸入的浮點數按float的格式保存在了低4位元組,高4位元組沒有修改,vc的默認值為0xcc,所以double a的實際內存格式為0xcccccccc+符號位+階碼+尾數,這種格式顯然是不對的,由於最終階碼非0,所以輸出一個極大的浮點數
5.
#include <stdio.h>
int main(void)
{
printf("%-8s%8s%8s\n","cocks","hens","chicks");
int x=0,y=0,z=0;
while (x<20)
x++;
while (y<=33)
y++;
z=300-15*x-9*y;
if (100-x-y==z)
printf("%-8d%8d%8d\n",x,y,z);
return 0;
}
我編譯運行沒有問題
x=20,y=34,z=-306
最後一次不會輸出xyz
6.
為什麼把 double popu=13;
分解成 doubble popu;
popu=13;運行出現錯誤?
你寫錯了doubble多寫了個b
9. 跪求!!關於C語言的編程問題!急~
/*
題目:《設計實現一個班級信息管理系統》
要求:
合理運用C語言的數組,指針,結構體以及文件操作等,實現一個模擬的班級通訊錄管理系統。
該系統用來管理學生的基本信息,通信信息。具體的要如下:
1) 工作人員可以通過此程序來管理學生的信息,包括查詢,添加,修改,刪除等功能。
2) 在進行添加時,系統會自動監測所添加的學生信息是否已經存在,如果存在,會提示用戶,
該學生已經存在。
3) 在刪除時,要首先彈出對話框,讓用戶確認是否刪除。只有經過確認才能夠被刪除。
4) 在進行學生信息管理時,不準用戶修改學號。
5) 通過鍵盤或讀取文件的方法讀取學生的信息。
6) 能夠運用結構化程序設計的選擇和循環結構,並熟練使用相關的語句(如 do while,for,if-else,if等)。
7) 程序要有主菜單,能夠完成主要的功能。
[附1]
有關學生的信息,包括,學號,姓名,性別,年齡,電話。
[附2]
我是大一的新生,現在C的內容還沒有完全學完,關於枚舉,鏈表,文件操作等還未學,所以請各位高手在幫小弟時多加一點提示,不然我可能看不懂```
還有,關於第(4)個要求和第(7)個要求,可以忽略```
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct Student//學生信息
{
signed short id;
char name[11];
char sex[7];
signed short age;
char telNum[16];
}Student;
typedef struct Node
{
Student data;
Node* next;
}Node;
static Node* begin=NULL;//哨兵結點
static signed short len=0;//鏈表長度
void printMenu();//列印菜單
void printBye();//列印結束語
void printList();//列印所有學生信息
void printStudent(Student st);//列印學生信息
Node* lookupNode(signed short stid);//根據學號查詢學生信息。
int addNode(Student st);//添加學生信息。成功返回鏈表長度。內存分配失敗-1;信息重復0
int deleteNode(signed short stid); //根據學號刪除學生信息。成功返回鏈表長度;未找到-1
int updateNode(Student st);//根據學號修改學生信息。成功返回鏈表長度;未找到0
void main()
{
//初始化鏈表。
begin=(Node*)malloc(sizeof(Node));
begin->next=NULL;
printf("----------------------------------------------------------------------------\n");
printf("--- 班級信息管理系統 ---\n");
printf("--- 沙支誇依 2007-12-21 ---\n");
printf("----------------------------------------------------------------------------\n");
printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
printMenu();
while (1)
{
char ch;
ch=getchar();
fflush(stdin);
Student student;
memset(&student,0,sizeof(Student));
switch (ch)
{
case '1':
printf("---添加學生信息。(學號為 0 結束)\n");
while (1)
{
printf("請輸入新學號: ");
scanf("%d", &student.id);
if (!student.id)
break;
printf("請輸入學生姓名: ");
fflush(stdin);
gets(student.name);
printf("請輸入學生姓別: ");
scanf("%s", student.sex);
printf("請輸入學生年齡: ");
scanf("%d", &student.age);
printf("請輸入學生電話: ");
scanf("%s", student.telNum);
int succ=addNode(student);
if (succ)
{
if (-1==succ)
printf("內存錯誤!請重新輸入!\n");
}
else
printf("對不起!該學號已被佔用!\n");
printf("\n");
}
break;
case '2':
printf("---刪除學生信息。(學號為 0 結束)\n");
while (1)
{
signed short stid=0;
printf("請輸入要刪除學生的學號:");
fflush(stdin);
scanf("%d", &stid);
if (!stid)
break;
Node* delNode=lookupNode(stid);
if (!delNode)
printf("對不起!你要刪除的記錄不存在。\n");
else
{
printStudent(delNode->data);
printf("您確定要刪除這條記錄嗎?(任意鍵刪除/ n 取消)\n");
fflush(stdin);
char cDelete=getchar();
if ('n'==cDelete)
continue;
printf("刪除成功!剩餘記錄數: %d\n",deleteNode(stid));
}
printf("\n");
}
break;
case '3':
printf("---修改學生信息。(學號為 0 結束)\n");
while (1)
{
signed short stid=0;
printf("請輸入要修改學生的學號:");
fflush(stdin);
scanf("%d", &stid);
if (!stid)
break;
Node* updataNode=lookupNode(stid);
if (!updataNode)
printf("對不起!你要刪除的記錄不存在。\n");
else
{
printStudent(updataNode->data);
Student student;
student.id=stid;
printf("修改學生姓名: ");
fflush(stdin);
gets(student.name);
printf("修改學生姓別: ");
scanf("%s", student.sex);
printf("修改學生年齡: ");
scanf("%d", &student.age);
printf("修改學生電話: ");
scanf("%s", student.telNum);
updateNode(student);
printf("修改成功!\n");
printStudent(updataNode->data);
}
printf("\n");
}
break;
case '4':
printf("---查詢學生信息。(學號為 0 結束)\n");
while (1)
{
signed short stid=0;
printf("請輸入要修改學生的學號:");
fflush(stdin);
scanf("%d", &stid);
if (!stid)
break;
Node* findNode=lookupNode(stid);
if (!findNode)
printf("對不起!你要刪除的記錄不存在。\n");
else
{
printStudent(findNode->data);
}
printf("\n");
}
break;
case '5':
printList();
printMenu();
break;
case '6':
printBye();
return;
default:
printMenu();
}
}
}
void printMenu()
{
printf("----------------------------------------------------------------------------\n");
printf("--- 1、增加學生信息。 2、刪除學生信息。 ---\n");
printf("--- 3、修改學生信息。 4、查詢學生信息。 ---\n");
printf("--- 5、列印所有信息。 6、退出。 ---\n");
printf("----------------------------------------------------------------------------\n");
}
void printBye()
{
printf("----------------------------------------------------------------------------\n");
printf(" 感謝您使用班級信息管理系統 \n");
printf(" 再 見 \n");
printf("----------------------------------------------------------------------------\n");
}
void printList()
{
Node* temp=begin->next;
if (!temp)
{
printf("暫時無記錄可供操作!\n");
}
while (temp)
{
printStudent(temp->data);
temp=temp->next;
}
}
void printStudent(Student st)
{
printf("學號:%-6d 姓名:%-10s 性別:%-6s 年齡:%-3d 電話:%-15s\n",
st.id, st.name, st.sex, st.age, st.telNum);
printf("--------------------------------------------------------------------------\n");
}
Node* lookupNode(signed short stid)
{
Node* temp=begin->next;
while (temp)
{
if (temp->data.id==stid)
return temp;
temp=temp->next;
}
return NULL;
}
int addNode(Student st)
{
if (lookupNode(st.id))
return 0;
Node* temp=(Node*)malloc(sizeof(Node));
if (!temp)
return -1;
temp->data=st;
temp->next=begin->next;
begin->next=temp;
return ++len;
}
int deleteNode(signed short stid)
{
Node* temp=begin;
Node* pos=NULL;
while (temp->next)
{
if (temp->next->data.id==stid)
{
pos=temp->next;
temp->next=pos->next;
free(pos);
return --len;
}
temp=temp->next;
}
return -1;
}
int updateNode(Student st)
{
Node* temp=lookupNode(st.id);
if (!temp)
return 0;
temp->data=st;
return len;
}
10. c語言編程題,急急急!
n(<=240) 這個很大。。
我來說吧,不要看著是數字,,其實就是一堆字元
所以你可以
定義
char ss[300];
gets(ss); 在處理。。就行了。。。
整個程序都是字元來處理就行
http://..com/link?url=-SRwDyWeKJeO9UlxAaa-6tRkK8v46uER3NxVih-ARuScZ8i-1NphXiq
這里有一道相同的題目不過是求最小值