Ⅰ 如何比較三個數的大小c語言
你這個問題實在是太專業了,我一般人回答不了,而且在這里也很難說清,所以的話我個人覺得你建議你c語言應該有專業的c語言書來進行學習和查找。
Ⅱ 在C語言中字元串的大小怎麼比較啊
1、C語言中字元是使用char來定義的,使用關系運算符(>,<,=)即可對字元進行比較。
Ⅲ c語言編程:將小寫字母轉換為大寫字母並輸出。急求謝了。
可以通過ASCII碼將小寫字母轉化為大寫字母。
計算機中,所有的信息都是二進制,但是我們所能理解的信息是具有約束意義的字元。當我們需要查看存儲的信息時,就需要對二進制解碼。因此只要編碼和解碼的規則一致,我們就可以將我們理解的信息存儲到計算機,或者從計算機中取出。
至於編碼和解碼的規則有很多,其中有一種方案是ASCII編碼,也是當前計算機系統採用的方案。 ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字元。
標准ASCII 碼也叫基礎ASCII碼,使用7 位二進制數來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字元。這里我們只說基礎ASCII碼。
0~32以及127共34個是控制字元或者通信專用字元。比如:CR代表回車,FF代表換頁,BS代表退格等。通信專用字元像ACK代表確認等。
33~126共95個是字元
48~57代表0~9十個阿拉伯數字
65~92:共26個大寫英文字母
97~122共26個小寫英文字母
知識拓展:
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
Ⅳ 如何用C語言獲取文件的大小
方法一:利用純C語言來獲取文件大小
unsigned long get_file_size(const char *filename){
unsigned long size;
FILE* fp = fopen( filename, "rb" );
if(fp==NULL){
printf("ERROR: Open file %s failed.\n", filename);
return 0;
}
fseek( fp, 0L, SEEK_END );
size=ftell(fp);
fclose(fp);
return size;
}
註:
ftell函數返迴文件指針當前位置相對應文件首的便宜位元組數,參數為文件指針。
fseek函數用於移動文件指針,第一個參數是文件指針,第二個參數是偏移量(正數表示正向偏移,負數表示負向偏移),第三個參數設定文件從哪裡偏移,有三個選擇:SEEK_SET(文件頭,其是常數0)、SEEK_CUR(文件當前位置,其是常數1)、SEEK_END(文件尾,其是常數2)。
優缺點:好處是你只要會C語言,就能夠完全掌握而且十分容易理解這裡面的道理。確定是純C語言目前只能讀取不超過2G的文件。所以對於超過2G的文件,其返回值是不正確的。
方法二:利用系統函數獲取
筆者使用Uinx/Linux,所以此處就只寫這類平台上的文件大小獲許方式了。在Linux類平台上,每個被系統所管理的文件都有一個文件屬性結構體(其中一個屬性就是文件大小)與其對應,這個結構體叫stat,其內容在 /sys/stat.h中:
stat {
mode_t st_mode; //文件對應的模式,文件,目錄等
ino_t st_ino; //inode節點號
dev_t st_dev; //設備號碼
dev_t st_rdev; //特殊設備號碼
nlink_t st_nlink; //文件的連接數
uid_t st_uid; //文件所有者
gid_t st_gid; //文件所有者對應的組
off_t st_size; //普通文件,對應的文件位元組數
time_t st_atime; //文件最後被訪問的時間
time_t st_mtime; //文件內容最後被修改的時間
time_t st_ctime; //文件狀態改變時間
blksize_t st_blksize; //文件內容對應的塊大小
blkcnt_t st_blocks; //偉建內容對應的塊數量
}
文件的上述屬性,可以通過一個stat函數來獲取。
stat函數聲明形式:
stat(const char *restrict path, struct stat *restrict buf);
第一個參數是文件名,第二個參數是指向一個stat結構的指針。
由此我們很容易寫出如下函數:
unsigned long get_file_size(const char *filename){
struct stat buf;
if(stat(filename, &buf)<0){
return 0;
}
return (unsigned long)buf.st_size;
}
在進行大文件處理時,顯然需要採取後者。
註:與stat函數類似的函數還有lstat函數、fstat 函數
Ⅳ C語言編寫3個數比較大小
代碼沒有問題,
不過你的輸入沒按照你自己scanf所設定的格式來
scanf("%d,%d,%d",&a,&b,&c);
這么寫的話,你應該這么輸入:
1,7,8(回車)
或者
2,5,3(回車)
別忘了逗號,也別忘了將3個數都輸完再回車
如果這么寫,
scanf("%d%d%d",&a,&b,&c);
就可以這么輸入:
2(回車)
3(回車)
1(回車)
(5)c語言的大小模式擴展閱讀
C語言編寫3個數比較大小其他代碼樣例:
# include <stdio.h> //頭文件
int max(int x,int y,int z); //聲明子函數
void main()//主函數
{
int a,b,c,d;//定義變數名
printf("shuru a,b,c"); //列印出shuru a,b,c
scanf("%d,%d,%d",&a,&b,&c); //錄入數據
d=max(a,b,c);//調用子函數
printf("max = %d
",d);
}
int max(int x,int y,int z)//子函數體,比較大小返回最大值
{
int m,int n;
if(x>y) m = x;
else m = y;
if(m>z) n = m;
else n = z;
return(n);
}
Ⅵ C語言的比較大小
區別不大,問題在於細節,注意你的輸入語句,scanf("%d
%d
%d,%d",&a,&b,&c,&d);
如果按照你這么寫,那麼輸入的時候要這么輸入1
2
3,4這樣才能正常運行,而第一句中間全是逗號就能正常運行。改一下這里就可以了
Ⅶ C語言3個數如何比較大小
輸出最大值:
#include <stdio.h>
void main()
{
int a,b,c,Max;
scanf("%d %d %d",&a,&b,&c);
if (a <= b)
Max = b;
else
Max = a;
if (Max <= c)
printf("%d",c);
else
printf("%d",Max);
}
輸入三個數(空格隔開),先比較前兩個數大小,將較大的數賦值給Max,再比較Max與第三個數大小,輸出較大的數
按降序輸出:
#include <stdio.h>
void main()
{
int a,b,c,max_ab,min_ab;
scanf("%d %d %d",&a,&b,&c);
if (a<=b)
{
max_ab = b;
min_ab = a;
}
else
{
max_ab = a;
min_ab = b;
}
if (max_ab <= c)
printf("%d %d %d",c,max_ab,min_ab);
else if (max_ab > c && c >min_ab)
printf("%d %d %d",max_ab,c,min_ab);
else if (max_ab > c && c <=min_ab)
printf("%d %d %d",max_ab,min_ab,c);
}
輸入三個數,判斷前兩個數,將大的數賦值給max_ab,小的數賦值給min_ab,再將max_ab與c作比較。若c大於等於max_ab,則輸出c,max_ab,min_ab.若c小於max_ab且大於min_ab,則輸出max_ab,c,min_ab.若c小於min_ab,則輸出max_ab,min_ab,c
Ⅷ C語言各種存儲模式的區別最常用的存儲模式有哪些
各種存儲模式之間有什麼區別?
DOS用一種段地址結構來編址計算機的內存,每一個物理內存位置都有一個可通過段地址一偏移量的方式來訪問的相關地址。為了支持這種段地址結構,大多數C編譯程序都允許你用以下6種存儲模式來創建程序:
-----------------------------------------------------------------------
存儲模式 限制 所用指針
-----------------------------------------------------------------------
Tiny(微) 代碼、數據和棧一64KB Near
Small(小) 代碼一64KB Near
數據和棧一64KB Near
Medium(中) 代碼一1MB Far
數據和棧一64KB Near
Compact(緊縮) 代碼一64KB Near
數據和棧一1MB Far
Large(大) 代碼一1MB Far
數據和棧一1MB Far
Huge*(巨) 代碼一1MB Far
數據和棧一1MB Far
-----------------------------------------------------------------------
*注意:在Huge存儲模式下,靜態數據(如數組)可以超過64KB,這在其它存儲模式下都不行。
Tiny存儲模式的限制很嚴(所有的代碼、數據和棧都被限制在64KB中),它通常用來生成"COM"文件。由於內存地址的「安排」方式的限制,Huge模式會帶來顯著的性能損失,因此它很少被使用。
最常使用的存儲模式有哪些?
最常使用的存儲模式有Small,Medium和Large這幾種。Tiny存儲模式一般只用來生成".COM"文件,在現在的高性能計算機上,它已很少被使用了。Compact存儲模式允許程序有很少的代碼和大量的數據,在今天的商業應用環境中,它同樣也不常用了。由於Huge存儲模式的存儲地址機制導致它的效率較低,所以它也很少被使用。
一般說來,你應該根據程序的大小選用Small,Medium或Large中的一種存儲模式。對一個小的實用程序來說,Small存儲模式可能是最合適的,這種存儲模式允許有64KB的代碼和64KB數據和棧。如果程序有更大一些的數據要求,你可以使用Medium存儲模式,它允許程序有多達1MB的可定址數據空間。對於更大的程序,你應該使用Large存儲模式,它允許程序有1MB的代碼和1MB的數據和棧空間。
如果你在編寫一個Windows程序或者在使用一個32位編譯程序,那麼你最好使用Small存儲模式,因為這樣的環境並不受DOS程序的段地址結構的限制。
應該使用哪種存儲模式?
如果要生成一個「.COM」文件,匭朧褂肨iny存儲模式,即所有的代碼、數據和棧空間都被限制在64KB中。小的實用程序普遍使用這種存儲模式。相對較小的程序也可以使用Small存儲模式,只不過不必把整個程序都限制在64KB中。在Small存儲模式下,有64KB的代碼空間和64KB的數據和棧空間。除了用於小程序外,Small存儲模式還可用在Windows或32位編譯程序這樣的環境中,因為在這些環境中內存定址並不受DOS中16位的限制。
如果一個程序的代碼量相對較大而靜態數據量相對較小,你可以用Medium存儲模式來創建程序。如果程序很大(需要很多模塊,大量的代碼和數據),那麼你應該選用Large存儲模式,這種存儲模式常用在DOS下編寫商用軟體。
與Small,Medium和Large存儲模式相比,Compact和Huge存儲模式要少用得多。Cornpact存儲模式允許程序有大量的靜態數據和相對較少(64KB或更少)的代碼。滿足這種模式的程序很少,常常是一些轉移程序,它們有大量必須存到內存中的靜態轉移表。Huge存儲模式與Large存儲模式基本相同,只是Huge存儲模式允許程序有超過64KB的靜態數據。與Compact存儲模式相似,Huge存儲模式也很少被使用,這主要是因為它會帶來顯著的性能損失。由於Huge存儲模式的執行效率較低,因此你應該避免使用這種模式,除非你確實需要超過64KB的一個數組或其它靜態數據。記住,數組和其它程序結構可通過malloc()和calloc()在程序運行時進行動態分配,它們在本質上並不必須是靜態的。