c语言源程序Word文档格式.docx
《c语言源程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《c语言源程序Word文档格式.docx(61页珍藏版)》请在冰点文库上搜索。
/*****删除有序数组某一元素*****/
inta[10]={0,1,2,3,4,5,6,7,8,9},i,j,k;
请输入要删除的数子:
if(a[i]==k)
for(j=i;
j<
j++)
a[j]=a[j+1];
if(i==10)
无此数子.\n"
删除后的数子为:
/************冒泡法************/
inta[10],j,i,k;
Pleaseinput:
if(a[j]<
a[j-1])
k=a[j];
a[j-1]=k;
排列好的一组数子:
/************选择法************/
inta[10],i,j,k,t;
k=i;
j--)if(a[j]<
a[k])k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
它们是:
/************双向冒泡法************/
#include"
#defineN10
main(void)
{inta[N];
inti,j,n,t;
请输入10个数:
for(n=1;
n<
=N/2;
n++)
{for(i=n-1;
N-n;
if(a[i]>
a[i-1])
{
a[i]=a[i-1];
a[i-1]=t;
for(j=N-n-1;
n-1;
if(a[j]<
a[j-1)
{t=a[j];
a[j-1]=t;
}
}
/**********指针冒泡法********/
voidsort(int*x,inty);
intmain(void)
inta[]={3,1,4,5,9,7,8,6,2,0},i;
sort(a,10);
for(i=0;
printf("
a[%d]=%d."
return0;
voidsort(int*x,inty)
inti,t,*j;
for(i=1;
y;
for(j=x+y-1;
x+i-1;
if(*(j-1)>
*j)
{
t=*j;
*j=*(j-1);
*(j-1)=t;
/******************************/
计算4字节整数的2进制形式1bit的个数,如oneBits
(2)=1;
oneBits(3)=2
intoneBits(inti)
i=i-((i>
1)&
0x);
i=(i&
0x)+((i>
2)&
i=(i+(i>
4))&
0x0f0f0f0f;
i=i+(i>
8);
16);
i&
=0x3f;
returni;
/*****判断空格和字符数量******/
intget(int*x,int*y);
intx,y;
if(get(&
x,&
y))
空格:
%d个,小写字符:
%d个\n"
x,y);
else
非法文件\n"
intget(int*x,int*y)
intt;
*x=*y=0;
while((t=getchar())!
=EOF)
switch(t)
case'
'
:
\t'
(*x)++;
\n'
return1;
default:
if(t>
='
a'
&
t<
z'
)(*y)++;
/********strrev倒置算法*******/
voidstrrev(chara[]);
chara[60];
inti;
gets(a);
strrev1(a);
%s\n"
a);
voidstrrev(chara[])
inti,j,n;
charch;
n=strlen(a);
for(i=0,j=n-1;
j;
i++,j--)
ch=a[i];
a[i]=a[j];
a[j]=ch;
/*删除一串字符中的一个后并输出*/
{inti,m,j,n;
inta[10]={1,2,3,4,5,6,7,8,9};
cout<
<
thisnumberwillbepassedthatyouprintf"
endl;
cin>
m;
{
if(m>
a[i])
thisnumberiswrong."
;
if(a[i]==m)
=8;
};
for(n=0;
a[n];
/*********自编strcpy库函数**********/
voidstrcopy(char*str1,char*str2);
{char*str1,*str2;
Pleaseintputstr1andstr2:
scanf("
%s%s"
str1,str2);
strcopy(str1,str2);
%s\n%s\n"
voidstrcopy(char*str1,char*str2)
while((*str1++=*str2++)!
\0'
/*******自编库函数strlen********/
intstrlen1(char*str);
{intn=0;
char*str1;
Pleaseinputstring:
%s"
str1);
n=strlen1(str1);
%d\n"
n);
intstrlen1(char*str)
{char*i;
for(i=str;
*i;
i++);
returni-str;
/***********自编库函数strcmp*********/
intstrcmp1(char*str1,char*str2);
intsum;
Pleaseinputstring1andstring2:
sum=strcmp1(str1,str2);
sum);
intstrcmp1(char*str1,char*str2)
{for(;
*str1==*str2;
str1++,str2++)
if(*str1=='
)return0;
return*str1-*str2;
/*******经典字符转数子******/
inti,j=0,k=1;
chara[10],*s;
s=a;
%9s"
if(*s=='
-'
)
k=-1;
s++;
while(*s)
i=*s-'
0'
j=j*10+i;
j*k);
/*****自编内存分配函数******/
/*********仿malloc函数******/
#defineNUL0
#defineALLOSIZE100
staticallocb[ALLOSIZE];
static*allocp=allocb;
char*alloc(intn)
if(n>
0&
allocp+n<
=allocb+ALLOSIZE)
allocp+=n;
return(char*)(allocp-n);
else
return(char*)NUL;
int*p=(int*)alloc(sizeof(int));
*p=100;
%d:
p,*p);
/**动态定义一维整形数组**/
intinit(int**block,intsiz)
int*aux;
if((aux=(int*)malloc(siz*sizeof(int)))==NULL)
Enter%dintegerValues:
siz);
*block=aux;
while(siz--)
aux++);
int*arr,i,size;
Arraysize:
size);
if(!
init(&
arr,size))
Cannotallocatememory\n"
size;
arr[i]);
/**动态定义一维数组+动态内存分配**/
#defineALLOCSIZE100
char*alloc(intn);
intinit(int**block,intsize);
staticallocb[ALLOCSIZE];
int*arr,size,i;
allocp+(n-1)<
=allocb+(ALLOCSIZE-1))
return(char*)allocp-n;
returnNUL;
intinit(int**block,intsize)
if((aux=(int*)alloc(size*sizeof(int)))==NUL)
Enter%dintegervalues:
size);
while(size--)
/**动态定义二维数组+动态内存分配**/
#defineALLOCSIZE200
return(char*)allocp-n;
int**cas(intr,intc)
int**x,i;
x=(int**)alloc(sizeof(int)*r);
r;
x[i]=(int*)alloc(sizeof(int));
returnx;
int**p,i,j,r,c;
Arrayrowsandcols:
%d%d"
r,&
c);
p=cas(r,c);
c*r);
for(j=0;
c;
p[i][j]);
p[i][j]);
/*******4x4矩阵转置输出*******/
inta[4][4],i,j,t;
=3;
for(j=0;
a[i][j]);
{for(j=0;
j++)printf("
%4d"
a[i][j]);
\n"
4;
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
==================\n"
/***********判断月份**********/
charmonth[][14]={"
IllegalMonth"
January"
February"
March"
April"
May"
June"
July"
August"
September"
October"
November"
December"
inti;
for(;
i);
i>
=1&
=12?
month[i]:
month[0]);
/**********************************/
/*输入年和本年第几天利用指针计算月份*/
voidmonthday(intyear,intyearday,int*pmonth,int*pday);
intyear,yearday,day,month;
year,&
yearday);
monthday(year,yearday,&
month,&
day);
%d%d%d"
year,month,day);
voidmonthday(intyear,intyearday,int*pmonth,int*pday)
inti,j,q,day_tab[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
j=((year%4==0&
year%100!
=0)||year%400==0);
yearday>
(q=*(*(day_tab+j)+i));
i++)yearday-=q;
*pmonth=i;
*pday=yearday;
/******输入年月日计算距其多少天******/
intday_of_year(intyear,intmonth,intday);
intyear,month,day,k;
%d%d%d"
k=day_of_year(year,month,day);
k);
intday_of_year(intyear,intmonth,intday)
inti,j=0,day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
for(i=1;
month;
day=day+day_tab[j][i];
returnday;
intmonthday(int(*day_tab)[13],intyear,intmonth,intday);
intday_tab[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}},year,day,month,k;
k=monthday(day_tab,year,month,day);
int