#include stdio.h
目前創新互聯公司已為近千家的企業提供了網站建設、域名、虛擬主機、網站改版維護、企業網站設計、寶山網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
#define TYPE int
// 下面是加減乘除 4 個函數
TYPE add(TYPE a, TYPE b){return a+b;}
TYPE sub(TYPE a, TYPE b){return a-b;}
TYPE muti(TYPE a, TYPE b){return a*b;}
TYPE div(TYPE a, TYPE b){return a/b;}
int main(int argc, char *argv[])
{
// 函數指針數組,一共有 4 四個元素,分別是:
// 加減乘除 4 個函數的函數指針
// 你可以自己再添加其他函數,而不用修改代碼。
TYPE (*functions[])(TYPE, TYPE) = {add,sub,muti,div};
// 函數指針數組中的元素個數,這里是 4 個。
unsigned int n = sizeof(functions)/sizeof(functions[0]);
// 要進行運算的數字
TYPE a = 10, b = 5 , result;
int i=0;
for(i=0; in; i++)
{// 調用函數指針數組里面的所有函數。
result = functions[i](a,b);
printf("%d\n", result);
}
return 0;
}
思路1:
寫出所有24種4個數的排列,存到一個數組里,假如數組是P[24][4];
那么可以
for (i = 0; i 24; i++)
for (j = 0; j 24; j++)
for (k = 0; k 24; k++)
三層循環,P[i],P[j],P[k]分別是矩陣的三個列
思路2:
利用dfs遞歸枚舉
int used[3][4];/*這個數組存放三個列中0~3這四個數是否已在這一列中出現過,需要提前清零*/
int mat[3][4];/*要枚舉的矩陣*/
void dfs(int col, int row)/*col表示現在已經搜索到哪一列(從0開始編號),row表示這一列已經填了幾行*/
{
int i;
if (col == 2 row == 4)
{
....../*運行到這里的時候,mat就是枚舉到的一個矩陣*/
return;
}
if (row == 4)
{row = 0; col++;}
for (i = 0; i 4; i++)
if (!used[col][i])
{
used[col][i] = 1;
mat[col][row] = i;
dfs(col, row + 1);
used[col][i] = 0;
}
return;
}
調用的時候調用dfs(0,0)
1,行優先和列優先
有三種循環方式:for循環,do-while循環
、while循環,
字符串之間的比較,它有專門的字符串比較函數:strcmp函數.
2,不能用運算關系符
#include stdio.h
#include dos.h
#include errno.h
#include io.h
#include dirent.h
#include dir.h
#include string.h
#include sys\stat.h
#include "pm03a.h"
void main(int argc,char* argv[])
{
//printf("Number %d\n",ConfirmFileAttrib(argv[1]));
GetDirectory(argv[1]);
printf("\nSearch Over.\n");
}
//------------------------------------------------------------------
//pm03a.h
//------------------------------------------------------------------
void GetDirectory(char *DirectoryName);
int ConfirmFileAttrib(char* filename);
char *GetCurrentPath();
char* GetFullFileName(char *filename);
char *WillDeleteFile(char *FileName);
//--------------------------------------------------------
//--------------- 獲得文件屬性 ---------------------------
//--------------------------------------------------------
int ConfirmFileAttrib(char* filename)
{
int temp=0;
int attrib=(_rtl_chmod(filename,0));
if(attrib==-1)
{
switch(errno)
{
case ENOENT:
//printf("%s Path or file not found.\n",filename);
temp=0;
break;
case EACCES:
//printf("Permission denied.\n");
temp=-1;
break;
default:
//printf("Error number: %d", errno);
temp=-2;
break;
}
}
else
{
if(attrib FA_RDONLY)
{
temp=1;
//printf("%s is read-only.\n", filename);
}
if(attrib FA_HIDDEN)
{
temp=2;
//printf("%s is hidden.\n", filename);
}
if(attrib FA_SYSTEM)
{
temp=3;
//printf("%s is a system file.\n", filename);
}
if(attrib FA_DIREC)
{
temp=4;
//printf("%s is a directory.\n", filename);
}
if (attrib FA_ARCH)
{
temp=5;
//printf("%s is an archive file.\n", filename);
}
}
return temp;
}
//--------------------------------------------------------
//--------------------------------------------------------
//--------------- 獲取目錄流 -----------------------------
//--------------------------------------------------------
void GetDirectory(char *DirectoryName)
{
DIR* Directory_Point;
struct dirent *entry;
bool DirControl;
if((Directory_Point=opendir(DirectoryName))==NULL)
{
printf("Error opening directory!\n");
return;
}
else
{
if(strcmp(DirectoryName,"..")==0)
{
return;
}
if(strcmp(DirectoryName,".")==0)
DirControl=true;
else
DirControl=false;
chdir(DirectoryName);
//char *filename=DirectoryName;
//int k=creat(strcat(filename,".txt"),S_IWRITE);
while(bool(entry=readdir(Directory_Point)))
{
if(ConfirmFileAttrib(entry-d_name)==5) // 確定為文件屬性
{
// 文件過濾
WillDeleteFile(entry-d_name);
}
if(ConfirmFileAttrib(entry-d_name)==4) // 確定為目錄屬性
{
if(strcmpi(entry-d_name,"..")==0||strcmpi(entry-d_name,".")==0)
{
continue;
}
else
{
//printf("\n%s is direct\n\n",entry-d_name);
GetDirectory(entry-d_name);
}
}
}
if(!DirControl==true)
chdir("..");
closedir(Directory_Point);
}
}
//--------------------------------------------------------
//--------------------------------------------------------
//---------- 判斷文件類型以備過濾 ------------------------
//--------------------------------------------------------
char* GetFullFileName(char *filename)
{
char *FullFilename=GetCurrentPath();
if(strlen(FullFilename)=3)
{
strcat(FullFilename,filename);
}
else
{
strcat(FullFilename,"\\");
strcat(FullFilename,filename);
}
return FullFilename;
}
char *GetCurrentPath()
{
char path[1024]="";
strcpy(path, "X:\\"); /* fill string with form of response: X:\ */
path[0] = 'A' + getdisk(); /* replace X with current drive letter */
getcurdir(0, path+3); /* fill rest of string with current directory */
return path;
}
char *WillDeleteFile(char *FileName)
{
int len;
for(len=strlen(FileName);len=0;len--)
{
if(FileName[len]=='.')
break;
}
char* Retname;
int s=-1;
for(int i=len;i=strlen(FileName);i++)
{
Retname[s+=1]=FileName[i];
}
int i=-1;
if(Retname[1]=='~')i=0;
if(strcmpi(Retname,".bak")==0)i=0;
if(strcmpi(Retname,".obj")==0)i=0;
if(strcmpi(Retname,".tds")==0)i=0;
if(strcmpi(Retname,".dcu")==0)i=0;
if(strcmpi(Retname,".tmp")==0)i=0;
if(strcmpi(Retname,".ilk")==0)i=0;
if(strcmpi(Retname,".pch")==0)i=0;
if(strcmpi(Retname,".pdb")==0)i=0;
if(strcmpi(Retname,".tlb")==0)i=0;
if(strcmpi(Retname,".idb")==0)i=0;
if(strcmpi(Retname,".pdb")==0)i=0;
if(strcmpi(Retname,".r$p")==0)i=0;
if(strcmpi(Retname,".OBR")==0)i=0;
if(strcmpi(Retname,".mbt")==0)i=0;
if(strcmpi(Retname,".mrt")==0)i=0;
if(strcmpi(Retname,".csm")==0)i=0;
if(i==0)
{
remove(GetFullFileName(FileName));
printf("%s delete\n",GetFullFileName(FileName));
}
return Retname;
}
1、行優先和列優先
有三種循環方式:FOR循環、DO-WHILE循環 、WHILE循環,字符串之間的比較,它有專門的字符串比較函數:strcmp函數。
2、不能用運算關系符
擴展資料:
二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按“行優先順序”存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i ? p) * n + (j ? q)) * t
按“列優先順序”存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j ? q) * m + (i ? p)) * t
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個字節。
參考資料來源:
百度百科-二維數組
使用dir.h庫的兩個函數即可:findfirst和findnext。
首先調用findfirst函數查找是否有滿足條件的某目錄文件,如果返回值非0則表示找不到返回。
如果findfirst返回值為0,則循環調用findnext函數,根據返回值,如果為0,結束循環,遍歷結束。否則循環調用findnext即可遍歷,直到返回非0值即可。
當然,這兩個函數需要定義一個結構體來存儲函數返回的數據。結構體如下:
struct
ffblk
{
char
ff_reserved[21];
/*DOS保留字*/
char
ff_attrib;
/*文件屬性*/
int
ff_ftime;
/*文件時間*/
int
ff_fdate;
/*文件日期*/
long
ff_fsize;
/*文件長度*/
char
ff_name[13];
/*文件名*/
}
將結構體中的ff_name[13]顯示出來即可。
名稱欄目:在c語言中的遍歷函數 c語言層序遍歷
鏈接分享:http://vcdvsql.cn/article30/hehcso.html
成都網站建設公司_創新互聯,為您提供靜態網站、移動網站建設、動態網站、ChatGPT、定制開發、
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯