C语言程序实例.docx
《C语言程序实例.docx》由会员分享,可在线阅读,更多相关《C语言程序实例.docx(48页珍藏版)》请在冰豆网上搜索。
C语言程序实例
数组的引用:
#include
voidmain(intargc,char*argv[])
{
intx[5]={2,3,1,4,6};
inti;
for(i=0;i<5;i++)
{
printf("%d\n",2*x[i]);
}
}
一维数组的遍历:
#include
voidmain(intargc,char*argv[])
{
intx[5]={1,2,3,4,5};
inti=0;
for(i=0;i<5;i++)
{
printf("x[%d]:
%d\n",i,x[i]);
}
}
一维数组的最值:
#include
intmain(intargc,char*argv[])
{
intx[5]={1,2,3,4,5};
intnMax=x[0];
inti=0;
for(i=1;i<5;i++)
{
if(x[i]>nMax)
{
nMax=x[i];
}
}
printf("max:
%d\n",nMax);
return0;
}
一维数组排序:
#include
voidmain(intargc,char**argv[])
{
intarr[5]={9,8,3,5,2};
inttemp=0;
inti,j;
printf("冒泡排序前:
\n");
for(i=0;i<5;i++)
{
printf("%d",arr[i]);
}
printf("\n");
for(i=0;i<5-1;i++)
{
for(j=0;j<5-1-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("冒泡排序后:
\n");
for(i=0;i<5;i++)
{
printf("%d",arr[i]);
}
printf("\n");
}
二维数组的遍历
#include
voidmain()
{
//声明并初始化数组
intarray[3][4]={{1,2,3,4,},{5,6,7,8,},{9,10,11,12}};
for(inti=0;i<3;i++)//循环遍历行
{
for(intj=0;j<4;j++)//循环遍历列
{
printf("[%d][%d]:
%d",i,j,array[i][j]);
}
printf("\n");//每一行的末尾添加换行符
}
}
二维数组应用
#include
voidmain(intargc,char*argv[])
{
intStuScore[5][3]={
//张同学
{88,70,90},
//王同学
{80,80,60},
//李同学
{89,60,85},
//赵同学
{80,75,78},
//周同学
{70,80,80},
};
intm=0,n=0;
intnStuTotalScore;
intnMathTotalScore=0;
intnChineseTotalScore=0;
intnEnglishTotalScore=0;
printf("个人总成绩:
\n");
for(m=0;m<5;m++)
{
nStuTotalScore=0;
for(n=0;n<3;n++)
{
nStuTotalScore+=StuScore[m][n];
switch(n)
{
case0:
{
nMathTotalScore+=StuScore[m][0];
break;
}
case1:
{
nChineseTotalScore+=StuScore[m][1];
break;
}
case2:
{
nEnglishTotalScore+=StuScore[m][2];
}
}
}
switch(m)
{
case0:
{
printf("张同学:
%d\n",nStuTotalScore);
break;
}
case1:
{
printf("王同学:
%d\n",nStuTotalScore);
break;
}
case2:
{
printf("李同学:
%d\n",nStuTotalScore);
break;
}
case3:
{
printf("赵同学:
%d\n",nStuTotalScore);
break;
}
case4:
{
printf("周同学:
%d\n",nStuTotalScore);
break;
}
}
}
printf("小组数学总分:
%d小组数学平均分:
%.2f\n",
nMathTotalScore,(double)nMathTotalScore/5);
printf("小组语文总分:
%d小组语文平均分:
%.2f\n",
nChineseTotalScore,(double)nChineseTotalScore/5);
printf("小组英语总分:
%d小组英语平均分:
%.2f\n",
nEnglishTotalScore,(double)nEnglishTotalScore/5);
}
无参函数
#include
voidfunc()
{
printf("这是我的第一个函数!
\n");
}
voidmain()
{
func();
}
有参函数调用无参函数
#include
voidfunc(intx,inty)
{
intsum=x+y;
printf("x+y=%d\n",sum);
}
voidmain()
{
func(3,5);
}
函数调用及返回过程
#include
intfunc(intx,inty)
{
returnx+y;
}
voidmain()
{
intsum=func(3,5);
printf("x+y=%d\n",sum);
}
Printf函数
#include
voidmain()
{
printf("%c%c",'H','\n');
printf("%s","Hellow,world!
\n");
printf("%d%d%d\n",1,2,3);
printf("%f%f%f\n",2.1,2.2);
}
Scanf函数
#include
voidmain()
{
charstr[256];//字符数组保存得到的字符串
scanf("%s",str);
printf("%s\n",str);
}
嵌套函数
#include
intmax2(inta,intb)//用于比较两个整数大小的函数
{
if(a>b)
{
returna;
}
else
{
returnb;
}
}
intmax4(inta,intb,intc,intd)//用于比较四个整数大小的函数
{
intres;
res=max2(a,b);
res=max2(res,c);
res=max2(res,d);
returnres;
}
voidmain()
{
inta=5,b=7,c=9,d=22,max;
printf("请输入四个整数:
57922\n");
//scanf("%d%d%d%d",a=5,b=7,c=9,d=22);
max=max4(a,b,c,d);
printf("max=%d\n",max);
}
递归调用
#include
//下面的函数使用递归实现,求1~n的和
intgetsum(intn)
{
if(n==1)
{
return1;//满足条件,递归结束
}
inttemp=getsum(n-1);//在函数体中调用自身
returntemp+n;
}
voidmain()
{
intsum=getsum(4);//调用递归函数,获得1~4的和
printf("sum=%d\n",sum);//打印结果
}
外部函数
建立源文件first.c
intadd(intx,inty)
{
returnx+y;
}
建立源文件second.c
#include
externintadd(intx,inty);
voidmain()
{
printf("%d\n",add(1,2));
}
//注:
extern可以省略
内部函数用法
建立first.c
#include
voidshow()
{
printf("%s\n","first.c");
}
建立second.c
#include
staticvoidshow()
{
printf("%s\n","second.c");
}
voidmain()
{
show();
}
全局变量
#include
intx=123;
voidshow()
{
printf("show()函数中,x的值为:
%d\n",x);
}
voidmain()
{
show();
printf("main()函数中,x的值为:
%d\n",x);
}
当局部变量与全局变量重名时,全局变量会被屏蔽
#include
intx=789;
voidmain()
{
intx=123;
printf("x的值为:
%d\n",x);
}
变量的作用域
#include
intx=10;
voidshow()
{
intx=20;
printf("show()函数中,x的值为:
%d\n",x);
}
voidmain()
{
intx=30;
printf("main()函数中,x的值为%d\n",x);
show();
}
If语句
#include
voidmain()
{
//定义变量x
intx=5;
//如果x的值小于10则执行if大括号中的代码
if(x<10)
{
x++;
}
printf("x=%d\n",x);
}
If...else语句
#include
voidmain()
{
intnum=19;
if(num%2==0)
{
//判断条件成立,num被2整除
printf("num是一个偶数\n");
}
else
{
printf("num是一个奇数\n");
}
}
If...elseif...else语句
#include
voidmain()
{
intgrade=75;//定义学生成绩
if(grade>=80)
{
//满足条件grsde>=80
printf("该成绩的等级为优\n");
}
elseif(grade>=70)
{
//不满足条件grade>=80,但满足条件grade>=70
printf("该成绩等级为良\n");
}
elseif(grade>=60)
{
//不满足条件grade>=70,但满足条件grade>=60
printf("该成绩等级为中\n");
}
else
{
//不满足条件grade>=60
printf("该成绩的等级为差\n");
}
}
三元运算符
#include
voidmain()
{
intx=0;
inty=1;
intmax;
max=x>y?
x:
y;
printf("max=%d\n");
}
Switch语句
#include
voidmain()
{
intweek=5;
switch(week)
{
case1:
printf("星期一\n");
break;
case2:
printf("星期二\n");
break;
case3:
printf("星期三\n");
break;
case4:
printf("星期四\n");
break;
case5:
printf("星期五\n");
break;
case6:
printf("星期六\n");
break;
case7:
printf("星期日\n");
break;
default:
printf("输入的数字不正确...\n");
break;
}
}
在使用switch语句过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可
#include
voidmain()
{
intweek=2;
switch(week)
{
case1:
case2:
case3:
case4:
case5:
//当week满足值1、2、3、4、5中任意一个时,处理方式相同
printf("今天是工作日\n");
break;
case6:
case7:
//当week满足值6、7中任意一个时,处理方式相同
printf("今天是休息日\n");
break;
}
}
While循环语句
#include
voidmain()
{
intx=1;
while(x<=4)
{
printf("x=%d\n",x);//条件成立,打印x的值
x++;//x进行自增
}
}
Do-while循环语句
#include
voidmain()
{
intx=1;//定义变量x,初始值为1
do
{
printf("x=%d\n",x);//条件成立,打印x的值
x++;//x进行自增
}while(x<=4);//循环条件
}
For循环
#include
voidmain()
{
intx=1;//定义变量x,初始值为1
do
{
printf("x=%d\n",x);//条件成立,打印x的值
x++;//x进行自增
}while(x<=4);//循环条件
}
Break语句
#include
voidmain()
{
intx=1;//定义变量x,初始值为1
while(x<=4)//循环条件
{
printf("x=%d\n",x);
if(x==3)
{
break;
}
x++;//x进行自增
}
}
Goto语句
#include
intmain()
{
inti,j;//定义两个循环变量
for(i=1;i<=9;i++)//外层循环
{
for(j=1;j<=i;j++)//内层循环
{
if(i>4)//判断i的值是否大于4
{
gotoend;//跳至标志位end的语句
}
printf("*");//输出*
}
printf("\n");//换行
}
end:
return0;
}
Continue语句
#include
voidmain()
{
intsum=0;//定义变量sum,用于记住和
for(inti=1;i<=100;i++)
{
if(i%2==0)//如果i是一个偶数,执行if语句中的代码
{
continue;//结束本次循环
}
sum+=i;//实现sum和i的累加
}
printf("sum=%d\n",sum);
}
无符号整数类型
#include
voidmain()
{
inta=12345;
longb=-23456,sum1;
unsignedintc=32800,sum2;
sum1=b-a;
sum2=c-b;
printf("sum1=%1d,sum2=%u\n",sum1,sum2);
}
Float和double之间的数据转换
#include
voidmain()
{
floata;
a=3.141592612;
printf("a=%.9f\n",a);
}
字符型变量
#include
voidmain()
{
charch1='A';
charch2=65;
printf("%c\n",ch1);
printf("%c\n",ch2);
}
#include
voidmain()
{转义符的用法
charch1='A';
charch2='\n';
charch3='B';
charch4='\\';
printf("%c",ch1);
printf("%c",ch2);
printf("%c",ch3);
printf("%c",ch4);
printf("%c",ch2);
}
枚举类型变量
#include
enummonth{JAN=1,FEB=2,MAR=3,APR=4,MAY=5,JUN=6,
JUL=7,AUG=8,SEP=9,OCT=10,NOV=11,DEC=12};
voidmain()
{
enummonthlastmonth,thismonth,nextmonth;
lastmonth=APR;
thismonth=MAY;
nextmonth=JUN;
printf("%d%d%d\n",lastmonth,thismonth,nextmonth);
}
在枚举中规定,如果不给标识符指定具体值,会默认该标识符的值等于前一标识符的值加一。
因此可以快速定义
#include
//定义一组常量
enumConstants{c1,c2,c3=4,c4,c5=3,c6,c7,c8='0',c9};
voidmain()
{
printf("c9=%d\n",c9);
}
Sizeof运算符
#include
voidmain()
{
//通过类型名称计算各基本数据类型所占内存大小
printf("char:
%d\n",sizeof(char));
printf("short:
%d\n",sizeof(short));
printf("long:
%d\n",sizeof(long));
printf("float:
%d\n",sizeof(float));
printf("double:
%d\n",sizeof(double));
printf("unsignedchar:
%d\n",sizeof(unsignedchar));
printf("unsignedshort:
%d\n",sizeof(unsignedshort));
printf("unsignedint:
%d\n",sizeof(unsignedint));
printf("unsignedlong:
%d\n",sizeof(unsignedlong));
//通过变量名称计算变量所属数据类型占用内存大小
intval_int=100;
doubleval_double=100000.0;
printf("val_int:
%d\n",sizeof(val_int));
printf("val_double:
%d\n",sizeof(val_double));
}
指针的取址和取值运算符
#include
voidmain()
{
intnum=100;//int类型变量num
printf("num=%d\n",num);//输出变量值
printf("#&num=%p\n",&num);//输出变量的内存地址
printf("*&num=%d\n",*&num);//通过num地址读取num中的数据
}
指针表达式的自增自减运