C语言学习文档.docx
《C语言学习文档.docx》由会员分享,可在线阅读,更多相关《C语言学习文档.docx(20页珍藏版)》请在冰豆网上搜索。
![C语言学习文档.docx](https://file1.bdocx.com/fileroot1/2023-1/26/a3282acc-770d-4c73-98fa-ec610b864068/a3282acc-770d-4c73-98fa-ec610b8640681.gif)
C语言学习文档
多个空格变一个空格
#include
main()
{
charc;
intspc;
spc=0;
while((c=getchar())!
=EOF)
{
while(c=='')
{
++spc;
c=getchar();
}
if(spc>=1)
{
putchar('');
spc=0;
putchar(c);
}
else
putchar(c);
}
}
计数A到Z
#include
//#defineIN1
//#defineOUT0
main()
{
intE,state,count,f;
//state=OUT;
//state=IN;
count=0;
f=0;
while((E=getchar())!
=EOF)
{
while(E>='a'&&E<='z')
{
++count;
E=getchar();
}
if(count>=1)
{
++f;
count=0;
}
//else
//state=OUT;
}
printf("%d",f);
}
括号匹配
#include
main()
{
charc;
intcount1=0,count2=0,count3=0;
while((c=getchar())!
=EOF)
{
if(c=='(')
{
count1++;
}
if(c==')')
{
count1--;
}
if(c=='[')
{
count2++;
}
if(c==']')
{
count2--;
}
if(c=='{')
{
count3++;
}
if(c=='}')
{
count3--;
}
}
if(count1==0)
{
printf("括号配对成功\n");
}else
{
printf("括号配对失败\n");
}
if(count2==0)
{
printf("中括号配对成功\n");
}
else
{
printf("中括号配对失败\n");
}
if(count3==0)
{
printf("大括号配对成功\n");
}
else
{
printf("大括号配对失败\n");
}
}
面积
#include
#include
main()
{
intx[3],y[3];
inti,j;
floatp,s,a,b,c;
for(i=0;i<3;i++)
{
scanf("%d",&x[i]);
}
for(j=0;j<3;j++)
{
scanf("%d",&y[j]);
}
a=sqrt((x[0]-x[1])*(x[0]-x[1])+(y[0]-y[1])*(y[0]-y[1]));
b=sqrt((x[1]-x[2])*(x[1]-x[2])+(y[1]-y[2])*(y[1]-y[2]));
c=sqrt((x[0]-x[2])*(x[0]-x[2])+(y[0]-y[2])*(y[0]-y[2]));
p=(a+b+c)/2.0;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%f\n%f\n%f\n%f\n%f\n",a,b,c,p,s);
}
删除表中的重复结点
voidpurLinkList(LinkListh)//删除重复结点
{
LinkListp,q,r;
p=h->next;
if(p==NULL)return;
while(p->next)
{
q=p;
while(q->next)//从p的后继结点开始查找
{
if(q->next->data==p->data)
{
r=q->next;//找到重复结点,用r指向,删除r
q->next=r->next;
free(r);
}
else
q=q->next;
}
p=p->next;
}
}
voidmain()
{
LinkListh=createLinkList3();
printf("从键盘输入的单链表h为:
");
printLinkList(h);
purLinkList(h);
printf("删除重复结点后的单链表h为:
");
printLinkList(h);
}
删除相同的数
#include
main()
{
intc;
intn;
intarry[10];
for(c=0;c<10;c++)
{
scanf("%d",&arry[c]);
}
for(c=0;c<10;c++)
{
printf("%d\t",arry[c]);
}
printf("\n");
printf("输入一个数:
\n");
scanf("%d",&n);
for(c=0;c<10;c++)
{
if(a==arry[c])
{
while(c<9)
{
arry[c]=arry[c+1];
c++;
}
}
}
for(c=0;c<9;c++)
{
printf("%d\t",arry[c]);
}
}
输入10个数输出最大值最小值,和平均数
#include
main()
{
intx[10];
inti;
intmax,min;
floatsum,avg;
sum=0;
avg=0;
for(i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
for(i=0;i<10;i++)
{
max=x[0];
min=x[0];
if(x[i]>max)
{
max=x[i];
}
elseif(x[i]{
min=x[i];
}
sum=sum+x[i];
avg=sum/10;
}
printf("max=%d\nmin=%d\nsum=%f\navg=%f\n",max,min,sum,avg);
}
顺序查找
intlocationSeqList(SeqList*l,datatypex)
{
inti=0;
while(i<=l->last&&l->data[i]!
=x)
i++;
if(i>l->last)
return-1;
else
returni;//返回的是下标
}
voidcreateST(ST*st)//创建顺序存储静态查找表
{
inti=1,k;
st->elem=malloc(sizeof(int)*LEN);
printf("输入查找表中的值:
\n");
scanf("%d",&k);
while(k!
=0)
{
st->elem[i++]=k;
scanf("%d",&k);
}
st->length=i-1;
}
intsequenceSearchST(STst,intk)//静态查找表顺序查找
{
inti;
st.elem[0]=k;
for(i=st.length;st.elem[i]!
=k;i--)
;
returni;
}
voidmain()
{
STst;
intflag,k;
createST(&st);
printf("查找表的长度为:
%d\n",st.length);
printf("输入要查找的值:
");
scanf("%d",&k);
flag=sequenceSearchST(st,k);
if(flag)
printf("查找成功,要查找的值在查找表中
的位置是:
%d\n",flag);
else
printf("查找不成功!
");
}
验证:
#include
intsearchprimary(intx)
{
inti;
for(i=2;i<=x-1;i++)
{
if(x%i==0)break;
}
if(i<=x-1)
return0;
else
return1;
}
main()
{
inti,j;
for(i=6;i<=20;i=i+2)
{
for(j=3;j
{
i=j+(i-j);
if((searchprimary(j)==1)&&(searchprimary(i-j)==1))
{
printf("%d=%d+%d\n",i,j,i-j);break;
}
}
}
}
指针求最大值
#include
main()
{
inta[10];
int*p_max;
inti;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
p_max=&a[0];
for(i=1;i<5;i++)
{
if(a[0]{
p_max=&a[i];
}
}
printf("%d\n",*p_max);
}
指针排序从大到小
#include
main()
{
inti,j;
inta[5];
int*p,q;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
p=&a[0];
for(i=0;i<5-1;i++)
{
for(j=i+1;j<5;j++)
{
if(*(p+i)<*(p+j))
{
q=*(p+i);
*(p+i)=*(p+j);
*(p+j)=q;
}
}
}
for(i=0;i<5;i++)
{
printf("%d\n",*(p+i));
}
}
带函数返回指针求最大值
#include
intmax(int*p,int*q)
{int*p_max;
if(*p<*q)
{
p_max=q;
returnp_max;
}
}
main()
{
inta[10];
int*p_max;
inti;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
p_max=&a[0];
for(i=1;i<5;i++)
{
p_max=max(p_max,&a[i]);
}
printf("max=%d\n",*p_max);
}
求和求平均
#include
voidget(intarry[],intn,int*p,float*q)
{
inti,a;
floatb;
a=0;
b=0;
for(i=0;i{
a=a+arry[i];
}
b=a/(float)n;
*p=a;
*q=b;
}
voidmain()
{
inta[8]={5,8,9,6,10,3,1};
inti;
intsum;
floatavg;
for(i=0;i<8;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
get(a,8,&sum,&avg);
printf("thesumis%d\n",sum);
printf("theavgis%.2f\n",avg);
}
求最大最小
#include
voidget(intarry[],intn,int*p,int*q)
{
inti;
*p=arry[0];
*q=arry[0];
for(i=1;i{
if(*p{
*p=arry[i];
}
if(*q>arry[i])
{
*q=arry[i];
}
}
}
voidmain()
{
inta[8]={5,8,9,6,10,3,1,16};
inti;
intmax;
intmin;
for(i=0;i<8;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
get(a,8,&max,&min);
printf("themaxis%d\n",max);
printf("theminis%d\n",min);
}
排序
#include
voidgetorder(inta[],intn)
{
inti,j;
for(i=0;i{
for(j=i+1;j{
if(a[i]{
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
}
}
main()
{
intarry[8]={3,5,9,1,2,7,6,4};
inti;
for(i=0;i<8;i++)
{
printf("arry[%d]=%d\n",i,arry[i]);
}
getorder(arry,8);
printf("thenewsequenceis:
\n");
for(i=0;i<8;i++)
{
printf("arry[%d]=%d\n",i,arry[i]);
}
}
改进法排序
#include
voidgetorder(inta[],intn)
{
inti,j,k,temp;
for(i=0;i{
for(j=i+1;j{
k=i;
if(a[k]{
k=j;
}
if(i!
=k)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
/*if(a[i]{
temp=a[i];
a[i]=a[j];
a[j]=temp;
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}*/
}
}
}
main()
{
intarry[8]={3,5,9,1,2,7,6,4};
inti;
for(i=0;i<8;i++)
{
printf("arry[%d]=%d\n",i,arry[i]);
}
getorder(arry,8);
printf("thenewsequenceis:
\n");
for(i=0;i<8;i++)
{
printf("arry[%d]=%d\n",i,arry[i]);
}
}
无暇素数
#include
intsearchprimary(intx)
{
inti;
for(i=2;i<=x-1;i++)
{
if(x%i==0)break;
}
if(i<=x-1)
return0;
else
return1;
}
intconserve(intx)
{
inta,b,c;
a=x%10;
b=(x/10)%10;
c=x/100;
x=a*100+b*10+c;
returnx;
}
main()
{
inti,j;
for(i=100;i<1000;i++)
{
j=conserve(i);
if(searchprimary(i)==1&&searchprimary(j)==1)
{
printf("%dand%d\n",i,j);
}
}
}