一些简单的C语言程序代码.docx
《一些简单的C语言程序代码.docx》由会员分享,可在线阅读,更多相关《一些简单的C语言程序代码.docx(44页珍藏版)》请在冰点文库上搜索。
一些简单的C语言程序代码
由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。
/*expe3-10*/
#include
#include
voidmain(void)
{
intmun,a,b,c,d;
scanf("%d",&mun);
a=mun/1000;/*千位*/
b=(mun%1000)/100;/*百位*/
c=(mun%100)/10;/*十位*/
d=(mun%10);/*个位*/
printf("千位数字为=%d\n",a);
printf("百位数字为=%d\n",b);
printf("十位数字为=%d\n",c);
printf("个位数字为=%d\n",d);
}
由键盘任意输入3个数据,找出其中的最大数和最小数。
#include
voidmain(void)
{
floata,b,c,k,g;/*k小g大*/
printf("请输入三个数");
scanf("%f%f%f",&a,&b,&c);
if(a
{
k=a;
g=b;
}
else
{
k=b;
g=a;
}
if(k{printf("\n最小的数=%5.2f",k);}
else
{printf("\n最小的数=%5.2f",c);}
if(g>c)/*最大*/
{printf("\n最大的数=%5.2f",g);}
else
{printf("\n最大的数=%5.2f",c);}}
判断三角形的形状
#include
#include
voidmain(void)
{
printf("请输入三角形三边");
floata,b,c,p,s,k1,k2,k3;
scanf("%f%f%f",&a,&b,&c);
while(a+b{
printf("不能构成三角形,请重新输入");
scanf("%f%f%f",&a,&b,&c);
}
k1=a*a;
k2=b*b;
k3=c*c;
if(a==b&&b==c&&c==a)
{printf("此三角形为等边三角形");}
elseif(a==b||b==c||c==a)
{printf("此三角形为等腰三角形");}
elseif((k1==b*b+c*c)||(k2==a*a+c*c)||(k3=a*a+b*b))
{printf("此三角形为直角三角形");}
else
{printf("此三角形为一般三角形");}}
九九乘法表
整体
#include
voidmain(void)
{
inti,j;
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
{printf("%5d",i*j);}
printf("\n");}}
右半边
#include
voidmain(void)
{
inti,j;
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{printf("%5d",i*j);}
printf("\n");}}
左半边
#include
voidmain(void)
{
inti,j;
for(i=1;i<10;i++)/*最外层循环*/
{
for(j=1;j
{printf("");}
for(j=1;j<=10-i;j++)/*计算*/
{printf("%5d",j*i);}
printf("\n");}}
打印菱形
#include
voidmain(void)
{
inti,j,k;
for(i=1;i<=5;i++)
{
for(j=0;j<5-i;j++)
{printf("!
");}
for(k=1;k<=2*i-1;k++)
{printf("*");}
printf("\n");
}
for(i=4;i>=0;i--)
{
for(j=4-i;j>0;j--)
{printf("!
");}
for(k=2*i;k>=0;k--)
{printf("*");}
printf("\n");}}
找回文
#include
#include
voidmain(void)
{
charstr[80];
inti,j,iStrlenstr,iFlag;
printf("请输入字符串\n");
gets(str);
iStrlenstr=strlen(str);
for(i=0,j=iStrlenstr-1;i<=j;i++,j--)
{
if(str[i]==str[j])
{iFlag=1;}
else
{iFlag=0;break;}
}
if(iFlag==1)
{printf("输入的是回文!
\n");}
else
{printf("输入的不是回文!
\n");}
}
找名字
指针法
/*不用查找函数,用指针的方法*/
#include
voidmain(void)
{
charstr[10][80],a[80],*p[10],*q=NULL;
inti,j,iFlag=0;
//intistrlenstr;
printf("请输入名字\n");
for(i=0;i<10;i++)
{
gets(str[i]);
}
printf("请输入想查找的名字\n");
gets(a);
for(i=0;i<10;i++)
{p[i]=str[i];}
q=a;
for(i=0;i<10;i++)
{
iFlag=0;
j=0;
while(*(p[i]+j)&&*(q+j))
{
if(*(p[i]+j)!
=*(q+j))
{break;}
j++;
}
if(*(p[i]+j)=='\0'&&*(q+j)=='\0')
{iFlag=1;break;}
}
if(iFlag==1)
printf("FOUND!
该名字的位置为%d",i);
else
printf("NOTFOUND!
");}
/*利用指针给10个数排序*/
#include
intmain(void)
{
inta[10],*p=NULL,iTem;
inti,j,iPos=0;
printf("请输入10个数\n");
for(i=0;i<10;i++)
{scanf("%d",&a[i]);}
p=a;
for(i=0;i<9;i++)
{
iPos=i;
for(j=i+1;j<10;j++)
{
if(a[j]iPos=j;
}
iTem=*(a+i);
*(a+i)=*(a+iPos);
*(a+iPos)=iTem;
}
printf("排序之后的为");
for(i=0;i<10;i++)
{printf("%4d",*(a+i));}
return0;}
/*名字排序,从大到小*/
#include
#include
voidmain(void)
{
chara[10][10],cTemp[10];
inti,j,iMax;
printf("输入十个学生姓名:
\n");
for(i=0;i<10;i++)
{gets(a[i]);}
for(i=0;i<10;i++)
{
iMax=i;
for(j=i+1;j<10;j++)
{
if(strcmp(a[iMax],a[j])<0)
{iMax=j;}
}
if(iMax!
=i)
{
strcpy(cTemp,a[i]);
strcpy(a[i],a[iMax]);
strcpy(a[iMax],cTemp);
}
}
printf("按照字典降序排序为:
\n");
for(i=0;i<10;i++)
{puts(a[i]);}}
/*查找并删除某字符*/
#include
intmain()
{
charstr[80],*p=NULL,*q;
chart;
printf("请输入字符串:
\n");
gets(str);
printf("请输入想要删除的字符:
\n");
t=getchar();
p=str;
q=str;
for(p=str;*p!
='\0';p++)
{
if(*p!
=t)
{*q++=*p;}
}
*q='\0';
puts(str);}
函数作业(全部)
/*交换器,引用全局变量*/
方法一
inta,b;
voidmain(void)
{
scanf("%d%d",&a,&b);
fun();
printf("a=%d,b=%d\n",a,b);
}
voidfun(void)
{
intc;
c=a;
a=b;
b=c;
}
方法二
#include
#defineswap(x,y){inttmp=x;x=y;y=tmp;}
intmain()
{
intx,y;
printf("请输入两个数字\n");
scanf("%d%d",&x,&y);
swap(x,y);
printf("交换之后的数字是\n");
printf("%d\t%d\t",x,y);
return0;
}
/*用函数找最大公约数*/
#include
intmaxd(int,int);
intmain()
{
inta,b,d;
printf("请输入两个整数\n");
scanf("%d%d",&a,&b);
d=maxd(a,b);
printf("这两个数的最大公约数为:
%d",d);
return0;
}
intmaxd(inta,intb)
{
intm,n,k;
if(a
{
m=b;
n=a;
}
else
{
m=a;
n=b;
}
do
{
k=m%n;
m=n;
n=k;
}while(n!
=0);
return(m);}
/*用函数统计*/
#include
inticount(char*);
intmain()
{
charstr[80];
intm=0;
printf("请输入字符串\n");
gets(str);
m=icount(str);
printf("字符串中数字的个数有:
%d",m);
return0;
}
inticount(char*p)
{
intk=0;
while(*p!
='/0')
{
if(*p>='0'&&*p<='9')
k++;
}
returnk;}
/*排序函数*/
#include
#include
voidiSort(int[],int);
intmain()
{
inta[10];
inti;
printf("请输入10个整数\n");
for(i=0;i<10;i++)
{scanf("%d",&a[i]);}
iSort(a,10);
printf("从小到大排序为\n");
for(i=0;i<10;i++)
{printf("%4d",a[i]);}}
voidiSort(intx[],intn)
{
inti,j,t,iPos;
for(i=0;i{
iPos=i;
for(j=i+1;j{
if(x[j]iPos=j;
}
if(iPos!
=i)
{
t=x[i];
x[i]=x[iPos];
x[iPos]=t;}}}
/*用函数找素数*/
#include
intiPrime(int);
intmain()
{
inti,k=0;
for(i=1;i<201;i+=2)
{
k=iPrime(i);
if(k==1)
printf("%d\n",i);}}
intiPrime(intx)
{
inta;
for(a=2;a<=x/2;a++)
{
if(x%a==0)
return0;
}
return1;}
/*八进制转十进制*/
#include
intiChange(char*);
intmain()
{
chars[10];
inti,k;
printf("请输入一个八进制的数");
gets(s);
k=iChange(s);
printf("对应的十进制的数位=%d",k);
}
intiChange(char*x)
{
char*p;
intn=0;
p=x;
for(;*p!
='\0';p++)
{n=n*8+*p-'0';}}
/*用函数将矩阵转置
规定是方阵*/
#include
voidchange(int[][4]);
intmain()
{
inta[4][4],b[4][4]={0};
inti,j;
printf("请输入一个四阶矩阵\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{scanf("%d",&a[i][j]);}
}
change(a);
printf("转置过后的矩阵式\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{printf("%3d",a[i][j]);}
printf("\n");}}
voidchange(intx[][4])
{
inti,j,t;
for(i=0;i<4;i++)
{
for(j=0;j
{
t=x[i][j];
x[i][j]=x[j][i];
x[j][i]=t;}}}
/*判断是否是对称矩阵
以4*4的矩阵为例*/
#include
intdui(int[][4]);
intmain()
{
inta[4][4],i,j,k=0;
printf("请输入一个四阶矩阵\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{scanf("%d",&a[i][j]);}
}
k=dui(a);
if(k==1)
{printf("该矩阵为对称矩阵");}
else
{printf("该矩阵不是对称阵");}
}
intdui(intx[][4])
{
inti,j,t=0;
for(i=0;i<4;i++)
{
for(j=0;j
{
if(x[i][j]==x[j][i])
t=1;}}
returnt;}
/*用函数求cos与sin*/
#include
#include
floaticos(float);
floatisin(float);
intmain()
{
floata,cosx,sinx;
printf("请输入x\n");
scanf("%f",&a);
cosx=icos(a);
sinx=isin(a);
printf("cos(x)=%7.2f\n",cosx);
printf("sin(x)=%7.2f\n",sinx);
}
floaticos(floata)
{
intn=2;
floatt,k,fcos;
k=0;
t=1;
do
{
t*=(-1)*a*a/(n*(n-1));
k+=t;
n+=2;
}
while(fabs(t)>=1e-6);
fcos=1+k;
returnfcos;
}
floatisin(floata)
{
floatfsin;
fsin=sqrt(1-(double)icos(a)*(double)icos(a));
returnfsin;
}
/*intn=3;
floatt,k,fsin;
k=0;
t=1;
do
{
t*=(-1)*a*a/(n*(n-1));
k+=t;
n+=2;
}
while(fabs(t)>=1e-6);
fsin=1+k;
returnfsin;*/
/*用函数分别统计26个字母的个数*/
#include
voidjishu(charstr[]);
intiCount1[26]={0};
voidmain(void)
{
charstr[80];
inti;
printf("请输入字符串");
gets(str);
jishu(str);
printf("26个大写字母的个数分别是\n");
for(i=0;i<26;i++)
{printf("%d\n",iCount1[i]);}
}
voidjishu(charx[])
{
inti;
for(i=0;x[i]!
='\0';i++)
{
if(x[i]>='A'&&x[i]<='Z')
{iCount1[x[i]-'A']++;}}}
位运算
/*地位字节按位取反*/
#include
voidmain(void)
{
unsignedintx;
printf("请输入数据:
");
scanf("%d",&x);
x=x^0X00ff;
printf("%x\n",x);}
/*循环移位
通过位或运算来实现循环的功能*/
#include
voidmain(void)
{
inta,n;
printf("请输入一个整数:
\n");
scanf("%d",&a);
printf("请输入移动的位数:
\n");
printf("注意:
正数代表右移,负数代表左移");
scanf("%d",&n);
if(n>0)
{
a=((a>>n)|(a<<((8*sizeof(int))-n)));//右移
}
if(n<0)
{a=((a<<(-n))|(a>>((8*sizeof(int))-(-n))));//左移}
printf("%u\n",a);}
/*利用位异或运算加密*/
#include
intmain()
{
intstc,code,dst;
dst=0;//加密后
code=1234;//密码
printf("请输入明文:
\n");
scanf("%d",&stc);
dst=stc^code;
printf("\n加密之后的文件是:
%d\n",dst);
return0;
}
/*偶数为清零*/
#include
voidmain(void)
{
inta;
printf("请输入");
scanf("%d",&a);
a=a&0x5555;
printf("%x\n",a);
}
/*十六进制转二进制*/
#include
voidmain(void)
{
inta,b[32],c=1,i;
scanf("%x",&a);
for(i=0;i<32;i++)
{
b[i]=(a&c)>>i;
c<<=1;
}
for(i=31;i>=0;i--)
{printf("%d",b[i]);}}
员工工资
#include
#defineN1
structman