C语言程序设计总结

 

C语言程序设计总结

一、C语言程序的基本结构

#include“stdio.h”

void main()

{

定义变量;

程序实现;

输出结果; 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--%c double--%lf 字符串--%s

变量的输出:

输出一个提示语句:printf(“xxxxxx”);

输出一个回车:printf(“\n”);

输出一个变量:printf(“xxx is %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; }

else if(条件2)

{执行语句2; }

else if(条件3)

{执行语句3; }

else if(条件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。

例如: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日是星期五。 日历如下:

一 二 三 四 五 六 日

1

4 5 6 7 8

11 12 13 14 15

18 19 20 21 22

25 26 27 28 29 2 9 16 23 30 3 10 17 24 31

void main()

{

int i,n,d; //i是循环变量,n代表总天数,d代表星期;

n=31; //n代表一个月的天数

d=5; //d代表星期,星期一为1,星期五为5,星期日为7

printf(" 一 二 三 四 五 六 日\n"); //一个汉字占两个字符的位置 for(i=1;i<d;i++) //开始日期之前用空格占位,每个日期对应3个空格 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为非负整数)

void main()

{

double x,s;

unsigned n,i;

s=1;

printf("请输入x和n:");

scanf("%lf%u",&x,&n);

for(i=1;i<=n;i++)

{

s=s*x;

}

printf("jieguo is %.2lf",s);

}

四、数组

2. 定义形式:类型名 数组名[长度]

例如:int a[10] //a数组中包含有10个整型变量,名字分别是a[0]、a[1]、a[2]……a[9] 这里每一个a[n]都是一个普通的整数变量

3. 一维数组的初始化:定义数组的时候就给每个数组元素赋值

int a[5]={2,4,6,8,10};

4. 对a数组中的每一个元素依次进行操作(访问)的方法如下:

int i;

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个数并进行循环左移

2个下标的一堆变量,逻辑上可看成n行m列的二维表格。

2. 定义形式:类型名 数组名[行长度][列长度]

例如:int a[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. 二维数组的初始化:

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

? 为二维数组中的每一个元素赋值

? 将二维数组转置输出(行变列,列变行)

? 求每行的平均值

? 求每列的总和

? 求列上的最小值

5. 行列相等的二维数组叫做矩阵,对矩阵的操作有:

? 求主对角线的和

? 求次对角线的平均值

? 输出该矩阵的上半三角元素

练习:

1.

对一个3*4的数组,求列上的平均值

2. 求一个3*3矩阵的主、次对角线的平均值

3. 利用数组输出以下图形

?\0?做为结束标志。

2.字符串的输入与输出

char str1[20],str2[20],str3[20];

gets(str1); //字符串的输入

scanf(“%s”,str2); //字符串的输入

puts(str1); //字符串的输出;

printf(“%s”,str2); //字符串的输出;

3.对字符串的访问:如有char s1[20]; int n;

字符串的长度:n=strlen(s1);

第一个字符:s1[0];

最后一个字符:s1[n-1]

4. 字符串常用函数:

注意:用以下函数需要用#include “string.h”引入头文件。

? 连接字符串:strcat(str1,str2)

? 比较两个字符串的大小:strcmp(str1,str2); ? 求字符串的长度:strlen(str1);

? 在字符串中查找一个字符,并返回其位置:char c=?a”; strchr(str1, c); ? 复制字符串:strcpy(str3,str1);

? 在字符串str1中查找字串str2的位置:strstr(str1,str2) 5.字符串常见操作

? 把字符串逆置 ? 判断是否为回文

五、函数

(二)函数的调用

1.无参函数调用:函数名()

2.有参函数调用:函数名(实参列表)

这里的实参可以是一个具体的值,或者一个已经有值的变量,也可以是一个表达式。

3.函数的调用可以成为一个独立的语句,也可以参与到表达式中进行计算。 例如:

调用f1函数:f1()

调用f2函数:f2(5) 或 int n=20; f2(n);

调用f3函数:f3(?#?,10) 或 char cc=?$? ;int n=8; f3(cc,n);

调用f4函数:int s,a=1,b=2;

s=f4(a,b);

调用f5函数:int x=7;

if(f5(x)) printf(“奇数”)

else printf(“偶数”);

(三)指向一维数组的函数:

f1(int a[],int n)

{

int i;

for(i=0;i<n;i++)

{

a[i];

}

}

void main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

f1(a,10);

}

练习:

? 求10个数的和

? 求10个数的平均值

? 把10个数逆序输出

? 求10个数中的最小值

(四)指向字符串的函数:

f2(char s[])

{

int i;

for(i=0;s[i]!=0;i++)

{

…s[i]…;

}

}

使用自定义函数的要点:

1. 自定义函数要写在main函数的上方

2. 在分析程序的运行时要知道,程序的执行从main函数开始,在main中结束

3. 自定义函数可以接收主函数传递的多个参数

4. 自定义函数每次只能返回一个结果给主函数

5. 自定义函数可以通过指针对主函数中的数值进行直接访问(操作)

6. 输入操作一般交给main函数

练习(全都用函数实现,输入输出由主函数负责,功能实现由自定义函数负责):

? 求任意两个数的和、差、积(用三个自定义函数实现)

? 求任意两个数的余数,如果输入的除数为0要输出警告信息

? 交换两个变量

? 计算x的10次方(x为双精度)

? 求等比数列2 4 8 16 32…的第n项

? 查找字符c在字符串s中第一次出现的位置

? 连接两个字符串

/*连接两个字符串*/

#include "stdio.h"

#include "string.h"

Void f1(char s1[], char s2[])

{

int i;

ln=strlen(s1);

for(i=0;i<=strlen(s2);i++)

{

s1[ln+i]=s2[i];

}

}

void main()

{

char s1[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.定义与赋值:int a[20],*p; p=a;

2.相关概念:数组名a就是数组的首地址,也就是a[0]的地址。

3.利用指针访问数组:

int a[10], *p, i;

p=a;

for(i=0;i<10;i++)

{

p[i]; //相当于*(p+i)

}

(三)指向字符串的指针:

1.定义:char s[20], *p;

2. 赋值:p=s; //p指向字符串

3. 通过指向访问字符串:

char s[20],*p;

p=s;

while(*p) //相当于p!=0 或 p!=?\0?

{

…*p…;

p++;

}

www.99jianzhu.com/包含内容:建筑图纸、PDF/word/ppt 流程,表格,案例,最新,免费下载,施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。


TOP最近更新内容

    长城小学关爱留守儿童工作制度
    园林史名词解释
  • 上一篇:14221019魏宏波单片机电子钟课程设计报告
  • 下一篇:杨辉三角net