C语言程序设计总结.docx
- 文档编号:23503103
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:18
- 大小:36.66KB
C语言程序设计总结.docx
《C语言程序设计总结.docx》由会员分享,可在线阅读,更多相关《C语言程序设计总结.docx(18页珍藏版)》请在冰豆网上搜索。
C语言程序设计总结
C语言程序设计总结
一、C语言程序的基本结构
#include“stdio.h”
voidmain()
{
定义变量;
程序实现;
输出结果;printf
}
二、变量的定义
1.整型:
inta,b,s=0;(可以在定义的同时为变量进行赋值)
长整型:
long
无符号整型(非负整数):
unsigned
2.单精度实型:
floatx,y,z=1.0;
3.双精度实型:
doublel,m;
4.字符型:
charc1=’A’,c2=’b’;
三、变量的赋值
1.直接赋值:
a=10;//用赋值号“=”将右侧的值赋给左侧的变量
2.赋表达式的值:
a=3+7;
3.赋另外一个变量的值:
a=s;//把s的值赋给a
变量的输入:
输入一个变量:
scanf(“%d”,&a);
输入多个变量:
scanf(“%d%d%d”,&a,&b,&c);
int--%dfloat--%fchar--%cdouble--%lf字符串--%s
变量的输出:
输出一个提示语句:
printf(“xxxxxx”);
输出一个回车:
printf(“\n”);
输出一个变量:
printf(“xxxis%d”,a);
输出多个变量:
printf(“xxxx%d,xxxx%d”,a,b);
练习:
1.输入圆的半径,求圆的周长。
四、常用流程控制语句
分支语句:
根据条件执行相应的语句
条件的形式:
a大于0写成a>0
a小于0写成a<0
a等于0写成a==0(注意,用两个=)
a大于等于0并且小于等于10写成a>=0&&a<=10
a小于0或者a大于10写成a<0||a>10
(一)单分支if语句(如果满足某个条件,就做某件事情,不满足就向下执行。
)
if(条件)
{执行语句;}
(二)双分支if语句(如果满足某个条件,就做某件事情,否则就做另外一件事情。
)
if(条件)
{执行语句1;}
else
{执行语句2;}
(三)多分支if语句(满足哪一个条件,就做相应的语句。
)
if(条件1)
{执行语句1;}
elseif(条件2)
{执行语句2;}
elseif(条件3)
{执行语句3;}
elseif(条件4)
{执行语句4;}
else
{执行语句5;}
(四)if的嵌套(根据具体情况对if~else~语句进行灵活的运用)
其格式如下:
if(条件1)
if(条件2)
{执行语句a;}
else
{执行语句b;}
else
if(条件3)
{执行语句c;}
else
{执行语句d;}
(五)多分支语句switch(根据switch后的值,执行相对应的case语句,此语句了解即可,因为它的作用完全可以用多分支if来实现)
switch(表达式)
{
case值1:
{语句1;break;}
case值2:
{语句2;break;}
case值3:
{语句4;break;}
……
case值n:
{语句n;break;}
default:
{语句n+1;}
}
练习:
2.某自助餐厅规定,浪费食物在20克以下的,每克罚款2元;如浪费超过20克,则超过的部分每克加罚1元。
编程求罚款金额。
3.从键盘输入正方形的边长,如果边长大于零则求出该正方形的周长和面积,否则提示输入错误。
4.输入3个数x,y,z,求其中的最小值。
5.输入3个数x,y,z,将其中最大值放在x中,最小值放在z中,中间值放在y中,然后输出x,y,z。
循环语句:
在条件成立时重复执行一组语句
(一)当型循环while
while(条件)
{
循环体
}
例如:
求1+2+3+…100
intn=1,s=0;
while(n<=100)
{
s=s+n;
n=n+1;
}
(二)直到型循环do~while
do
{
循环体
}while(条件);
例如:
求1+2+3+…100
intn=1,s=0;
do
{
s=s+n;
n=n+1;
}while(n<=100);
(三)知起至型循环for
for(循环变量初值;循环变量范围;步长)
{
循环体
}
例如:
求1+2+3+…100
intn=1,s=0;
for(n=0;n<=100;n++)
{
s=s+n;
}
(四)循环的嵌套
for(i=1;i { …… for(j=1;j { …… } …… } 说明: 1.假设某同学参与“打气球游戏”,该同学可以打5局,每局可以打10枪。 这里的每局10枪就相当于内循环的次数;5局就相当于5个10枪,也就是外循环的次数。 2.这5*10枪不是一次性打完的,而且每一枪都要记是哪一局的哪一枪打出来的成绩,哪一局对应的是i,哪一枪对应的是j。 (五)使用break可以强制退出循环,其用法必须配合if来使用: 例如: for(i=0;i<100;i++) { … if(条件) { ……; break; } … } 练习: 1.编程求出公式s=1-1/3+1/5-1/7+…1/101的值并输出 2.编程输出如下图形: * ** *** **** ***** 3.编程打印九九乘法表 4.编程打印出2016年1月份的日历 注意: 1月份的总天数是31天,其中1日是星期五。 日历如下: 一二三四五六日 123 45678910 11121314151617 18192021222324 25262728293031 voidmain() { inti,n,d;//i是循环变量,n代表总天数,d代表星期; n=31;//n代表一个月的天数 d=5;//d代表星期,星期一为1,星期五为5,星期日为7 printf("一二三四五六日\n");//一个汉字占两个字符的位置 for(i=1;i printf(""); for(i=1;i<=n;i++,d++) { printf("%3d",i); if(d%7==0) { printf("\n"); } } } 5.在第4题的程序上进行修改,如果输入任意一个月的总天数及该月第一天的星期(1代表星期日,2代表星期一……以此类推),能否打印出该月日历 6.计算x的n次方(x为双精度,n为非负整数) voidmain() { doublex,s; unsignedn,i; s=1; printf("请输入x和n: "); scanf("%lf%u",&x,&n); for(i=1;i<=n;i++) { s=s*x; } printf("jieguois%.2lf",s); } 四、数组 一维数组 1.一维数组: 名字相同且带有下标的一组变量 2.定义形式: 类型名数组名[长度] 例如: inta[10]//a数组中包含有10个整型变量,名字分别是a[0]、a[1]、a[2]……a[9] 这里每一个a[n]都是一个普通的整数变量 3.一维数组的初始化: 定义数组的时候就给每个数组元素赋值 inta[5]={2,4,6,8,10}; 4.对a数组中的每一个元素依次进行操作(访问)的方法如下: inti; for(i=0;i<9;i++) { …a[i]… } 例如: ●通过键盘输入给a数组中的每个元素赋值 ●将a数组中每一个元素都扩大2倍 ●统计a数组中奇数的个数 ●求a数组中的最大值 ●把a数组的元素进行逆置 ●把a数组中的元素进行右移 练习: 1.从一维数组中查找x,并返回x所在的位置,否则提示没有找到。 2.求fibonacci数列的第n项。 3.求任意一个数的1.2~1.6倍存入数组。 4.数组中存入10个数并进行循环左移 二维数组 1.二维数组: 名称相同且带有2个下标的一堆变量,逻辑上可看成n行m列的二维表格。 2.定义形式: 类型名数组名[行长度][列长度] 例如: inta[3][4] 这里a数组中包含有3*4=12个数组元素,这12个元素的名字分别是: a[0][0]a[0][1]a[0][2]a[0][3] a[1][0]a[1][1]a[1][2]a[1][3] a[2][0]a[2][1]a[2][2]a[2][3] 3.二维数组的初始化: inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 4.对a中数组元素的访问,需要定义2个下标变量i和j,a[i][j]代表第i行第j列的元素。 按行的顺序访问: inti,j; for(i=0;i<3;i++){ for(j=0;j<4;j++){ 按列的顺序访问: inti,j; for(j=0;j<4;j++){ for(i=0;i<3;i++){ …a[i][j]… } } …a[i][j]… } } 例如: ●为二维数组中的每一个元素赋值 ●将二维数组转置输出(行变列,列变行) ●求每行的平均值 ●求每列的总和 ●求列上的最小值 5.行列相等的二维数组叫做矩阵,对矩阵的操作有: ●求主对角线的和 ●求次对角线的平均值 ●输出该矩阵的上半三角元素 练习: 1.对一个3*4的数组,求列上的平均值 2.求一个3*3矩阵的主、次对角线的平均值 3.利用数组输出以下图形 字符串 1.字符串: 字符型的一维数组,可以存储一串字符,并以’\0’做为结束标志。 2.字符串的输入与输出 charstr1[20],str2[20],str3[20]; gets(str1);//字符串的输入 scanf(“%s”,str2);//字符串的输入 puts(str1);//字符串的输出; printf(“%s”,str2);//字符串的输出; 3.对字符串的访问: 如有chars1[20];intn; 字符串的长度: n=strlen(s1); 第一个字符: s1[0]; 最后一个字符: s1[n-1] ‘\0’的位置: s1[n] 从第一个字符访问到最后一个字符: chars1[20]; inti; gets(s1); for(i=0;s[i]! =0;i++) 从最后一个字符访问到第一个字符: chars1[20]; inti; gets(s1); for(i=strlen(s1)-1;i>=0;i--) { …s[i]…; } { …s[i]…; } 4.字符串常用函数: 注意: 用以下函数需要用#include“string.h”引入头文件。 ⏹连接字符串: strcat(str1,str2) ⏹比较两个字符串的大小: strcmp(str1,str2); ⏹求字符串的长度: strlen(str1); ⏹在字符串中查找一个字符,并返回其位置: charc=’a”;strchr(str1,c); ⏹复制字符串: strcpy(str3,str1); ⏹在字符串str1中查找字串str2的位置: strstr(str1,str2) 5.字符串常见操作 ⏹把字符串逆置 ⏹判断是否为回文 五、函数 (一)函数的定义: 1.无返回值、无参函数的定义: void函数名() { 定义变量; 实现功能; 返回; } 例: 定义一个能够输出10个”*”的程序。 voidf1() { inti; for(i=1;i<=10;i++) {printf(“*”);} return; } 2.无返回值、有参函数的定义: void函数名(参数定义列表) { 定义变量; 实现功能; 返回; } 例: 定义一个能够输出n个”*”的程序 voidf2(intn) { inti; for(i=1;i<=n;i++) {printf(“*”);} return; } 例: 定义一个能够输出n个指定字符的程序。 voidf3(charc,intn) { inti; for(i=1;i<=n;i++) {printf(“%c”,c);} return; } 3.有返回值有参函数的定义: 类型函数名(参数定义列表) { 定义变量; 实现功能; 返回计算结果; } 这里”类型”一定要与”计算结果”一致。 例: 定义一个计算两个整数加法的函数。 intf4(intx,inty) { return(x+y); } 例: 定义一个能判断奇数的函数 intf5(intx) { if(x%2==1) return1; else return0; } (二)函数的调用 1.无参函数调用: 函数名() 2.有参函数调用: 函数名(实参列表) 这里的实参可以是一个具体的值,或者一个已经有值的变量,也可以是一个表达式。 3.函数的调用可以成为一个独立的语句,也可以参与到表达式中进行计算。 例如: 调用f1函数: f1() 调用f2函数: f2(5)或intn=20;f2(n); 调用f3函数: f3(‘#’,10)或charcc=’$’;intn=8;f3(cc,n); 调用f4函数: ints,a=1,b=2; s=f4(a,b); 调用f5函数: intx=7; if(f5(x))printf(“奇数”) elseprintf(“偶数”); (三)指向一维数组的函数: f1(inta[],intn) { inti; for(i=0;i { a[i]; } } voidmain() { inta[10]={1,2,3,4,5,6,7,8,9,10}; f1(a,10); } 练习: ●求10个数的和 ●求10个数的平均值 ●把10个数逆序输出 ●求10个数中的最小值 (四)指向字符串的函数: f2(chars[]) { inti; for(i=0;s[i]! =0;i++) { …s[i]…; } } 使用自定义函数的要点: 1.自定义函数要写在main函数的上方 2.在分析程序的运行时要知道,程序的执行从main函数开始,在main中结束 3.自定义函数可以接收主函数传递的多个参数 4.自定义函数每次只能返回一个结果给主函数 5.自定义函数可以通过指针对主函数中的数值进行直接访问(操作) 6.输入操作一般交给main函数 练习(全都用函数实现,输入输出由主函数负责,功能实现由自定义函数负责): ●求任意两个数的和、差、积(用三个自定义函数实现) ●求任意两个数的余数,如果输入的除数为0要输出警告信息 ●交换两个变量 ●计算x的10次方(x为双精度) ●求等比数列2481632…的第n项 ●查找字符c在字符串s中第一次出现的位置 ●连接两个字符串 /*连接两个字符串*/ #include"stdio.h" #include"string.h" Voidf1(chars1[],chars2[]) { inti; ln=strlen(s1); for(i=0;i<=strlen(s2);i++) { s1[ln+i]=s2[i]; } } voidmain() { chars1[20],s2[10]; printf("请输入两行字符串: "); gets(s1); gets(s2); f1(s1,s2); printf("结果是%s",s1); } 六、指针 (一)指针的概念: 1.指针: 变量的地址 2.指针变量: 能存指针的变量 3.指针变量的定义: int*p,x; 4.对于变量指针的操作: 赋值: p=&x;//把x的地址值赋给p,即p指向x 通过p间接访问x: *p; 将x的值加上10: *p=*p+10; (二)指向一维数组的指针: 1.定义与赋值: inta[20],*p;p=a; 2.相关概念: 数组名a就是数组的首地址,也就是a[0]的地址。 3.利用指针访问数组: inta[10],*p,i; p=a; for(i=0;i<10;i++) { p[i];//相当于*(p+i) } (三)指向字符串的指针: 1.定义: chars[20],*p; 2.赋值: p=s;//p指向字符串 3.通过指向访问字符串: chars[20],*p; p=s; while(*p)//相当于p! =0或p! =’\0’ { …*p…; p++; } ..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 总结