C语言课堂笔记Word文档格式.docx

上传人:b****5 文档编号:20768548 上传时间:2023-01-25 格式:DOCX 页数:27 大小:26.31KB
下载 相关 举报
C语言课堂笔记Word文档格式.docx_第1页
第1页 / 共27页
C语言课堂笔记Word文档格式.docx_第2页
第2页 / 共27页
C语言课堂笔记Word文档格式.docx_第3页
第3页 / 共27页
C语言课堂笔记Word文档格式.docx_第4页
第4页 / 共27页
C语言课堂笔记Word文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C语言课堂笔记Word文档格式.docx

《C语言课堂笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课堂笔记Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

C语言课堂笔记Word文档格式.docx

+4!

+.....10!

s----sss=1ss=0

分析:

=10;

i++)

{s*=i;

ss+=s;

求1+(1+2)+(1+2+3)+(1+2+3+4)+....+(1+2+3+..n)=?

假设n=10

编循环题:

a.循环次数

b.循环规律

求5+55+555+5555+55555=?

1+12+123+1234+12345=?

1+121+12321+1234321=?

循环中加条件

找出1---100能被3整除的偶数

找出1----500能被5或7但不能同时被5和7

整除的数,每行输出6个数

输出100-----999的水仙花数

for(i=100;

=999;

{a=

b=

c=

if(i==a*a*a+b*b*b+c*c*c)

输出i

注:

如何取出千/百/十/个?

永远是%10

千=数/1000%108563====>

88563/1000%10

百=数/100%108563====>

58563/100%10

十=数/10%10

个=数%10

输出2000----5000的所有回文数,每行输出8个数

回文数:

8888666612213553

习题:

1.输出100------999中满足

百+个被10除所得余数恰是十位的数

每行输出5个数

329

输入任意一个>

=10的数,要求

6543====>

54323===>

398124===>

8124

376====>

76

提示:

用取余k=196543

while(m>

10)

{3+40+500+6000

t+=m%10*k

m/=10;

k*=10;

输入任意一个正整数,求它的逆序数

345===>

5431==>

112===>

21

7851===>

1587

5.短路循环/跳出循环

continuebreak

将一个串输出5次

输出1---100能被5整除的数

求1+4+7+10+13+.....i=s

当s不大于5000的最大i值

素数(>

=2的正整数)

flag原理:

====>

反向

flag=1;

=数-1;

if(数%i==0){flag=0;

break;

elseflag=1;

if(flag==1)是素数;

else不是素数

输入任意一个正整数,判断是否为素数

输入任意一个正整数,判断是否为完数

6=1+2+3

28=1+2+4+7+14

15=1+3+5

求1-3+5-7+9-11+13-15+17....99=?

异号类

解1:

1591317=====>

s1

371115=====>

s2

s=s1-s2

求8-1/3+3/5-5/7+7/9-9/11+......97/99=?

同步循环

for(a=1,b=5;

a<

a++,b+=3)

for(i=1,j=3,k=5;

i<

i+=2,j+=3,k+=4)

求1-3+5-7+9-11+13........99=?

for(a=1,b=3;

a+=4,b+=4)

s+=a-b;

s=0+1-3+5-7+9-11+13-15

判断一个字符串是否为回文串?

"

abcdcba"

flag原理:

for(a=0,b=6;

b;

a++,b--)

if(k[a]!

=k[b]){flag=0;

if(flag==1)是回文串

6.多重循环:

for(a=1;

a<

a++)

for(b=1;

b<

b++)

for(c=1;

c<

c++)

百钱买百鸡:

数量

1只公鸡:

5元a

1只母鸡:

3元b

3只小鸡:

1元c

分析:

for(a=0;

for(b=0;

=33;

for(c=0;

=300;

if(5*a+3*b+c/3==100&

&

a+b+c==100)

输出a,b,c

10/3=39/2

输出100----999的水仙花数

153=1*1*1+5*5*5+3*3*3

输出100-----999的完全平方数

121400256169

变例:

求100---999中的完全平方数且满足

任意两位数字相同的数144400225121

统计满足的个数并求和

输出10----100的所有素数

输出1-----1000的所有完数

158795634====>

43659

95634

95634/10000%10===>

9

pow(10,4)

95634/1000%10===>

5

pow(10,3

while(m>

输出满足条件的三位数及四位数

要求six+six+six=nine+nine

940+940+940=1410+1410

1)3a=2b

2)三位数的十位=四位数的百位

四位数的千位=四位数的十位

for(a=100;

for(b=1000;

=9999;

求500----800的所有素数和

要求:

第1个素数-第2个素数+第3个素数-第4个素数

依此类推

输入两个数a,b输出比a大的b个素数

第四讲.数组

chark[]="

windows"

;

一.一维数组

1.定义:

类型名数组名[下标];

inta[5];

floatb[7];

chark[100];

下标必为正整型常量

inta[-3];

intb[5.6];

inta=3;

intb[a];

2.赋值:

inta[5]={10,20,55,800,76};

chark[8]="

chark[8]={"

1)数组的下标从0计算

intk[5];

k[5]=9000;

2)若赋了全值,则可省略下标

intb[]={10,20,30}

若没有赋全值,则自动补零00.0'

\0'

inta[5]={10,33};

floatb[7]={5,1.28,3.14}

chark[100]="

chark[100]={'

a'

'

b'

c'

d'

e'

};

3)数组名本身就表示数组的首地址

数列类

有一数列01123581321345589......

求该数列的第15个数

k[i]=k[i-2]+k[i-1](固定前2,i=2)

有一数列12510172637506582.....

0123

规律1:

k[i]=k[i-1]+?

规律2:

k[i]=i*i+1(无需固定i=0)

有一数列01123581321345589.....

求数列中不大于1000的最大的那个数

找出给定一维数组中最大的数max(起泡法)

HHHHHHH

max

intk[7]={34,128,-30,17,999,56,400}

找出给定一维数组中的最大数max及最小数min

有一歌手的分数保存在一个一维数组中

floatk[10]={9.7,9.8,10,8.0,9.5,8.0,

10,8.5,9.9,9.3}

求该歌手的最后得分,并将结果保留2位小数

找最大及最小

把10个求和

fs=(sum-max-min)/8

k*=1000;

k=(long)((k+5)/10);

k/=100;

图形类(双重循环)

*i=14空1*

***i=23空3*

*****i=32空5*

*******i=41空7*

*********i=50空9*

for(i=0;

行;

{空格循环

*号循环

\n

}

******i=60

*****i=51

****

***

**

*

*****A

*****BBB

*****CCCCC

*****DDDDDDD

*****EEEEEEEEE

1

121

12321

1234321

123454321i=5空格1--ii-1---1

找数存储m[cnt++]=找到的数

将给定一维数组中能被5整除的数存放至另一数组中

intk[7]={12,17,500,-3,-15,24,75}

cnt=0m[cnt++]=500m[0]=500cnt=1

m[cnt++]=-15m[1]=-15cnt=2

m[cnt++]=75m[2]=75cnt=3

将给定一维数组中满足千+个=百+十的数

存放至另一数组中

intk[7]={2568,9632,5471,2356,1569,8742,3657}

将给定一维数组中的素数存放至另一数组中

intk[7]={12,5,7,13,37,24,88}

排序类(双重循环)

将给定一维数组中的数升序排序

intk[7]={128,34,-5,500,89,-12,71}

7;

for(j=0;

j<

j++)

if(k[i]<

k[j])========>

升序

t交换

解2:

for(j=i+1;

if(k[i]>

k[j])=========>

注:

对奇数排序

对奇数位置的数排序

对下标为奇数的数排序

for

if(条件)

if<

求该歌手的最后得分,

先排序

再累加sum:

1----8

fs=sum/8

找出给定一维数组中的次最大数cmax

intk[10]={200,800,100,900,100,500,

900,800,300,100};

900900900800800700600300200100100

二.二维数组

类型名数组名[下标1][下标2];

inta[3][4];

floatb[4][5];

chark[5][80];

a.分行赋值:

inta[][4]={{3,5,7,8},chark[3][80]={"

abc"

{2,6,9,4},"

desk"

{6,7,2,9}}"

app"

b.线性赋值:

inta[][6]={3,5,7,8,2,6,9,4,6,7,2,9};

1)数组下标从0计算

a[3][4]=800;

2)若赋了全值,则能省略一维下标,但不能省略

二维下标

3)若没有赋全值,则自动补零00.0'

inta[3][4]={1,2,3};

inta[3][4]={{1},{2},{3}};

12301000

00002000

00003000

列;

输出一个3*4的矩阵

求给定的3*4矩阵所有元素之和

求给定的5*5矩阵中右上半角元素之和

右上半角:

if(i<

=j)

右下半角:

if(i+j>

=4)

左下半角:

if(i>

左上半角:

if(i+j<

周边元素之和:

if(i==0||i==4||j==0||j==4)

非周边元素之和:

if(i!

=0&

i!

=4&

j!

181112

两条对角线:

if(i==j||i+j==4)

将一个3*4矩阵行列互换

1235136

3478====>

242

6251375

581

3;

4;

b[j][i]=a[i][j];

杨晖三角(以7*7为例)

1000000

1100000

1210000

1331

14641

15101051

1615201561

1)每行的第0个为1

2)k[i][j]=k[i-1][j-1]+k[i-1][j];

3)输出左下半角

找出3*5矩阵中每行的最大值(起泡法)

三.字符串数组

1.字符串函数:

必须用到#include"

string.h"

strlen():

表示求字符串的长度(不含'

a:

"

n=strlen(a);

====>

n=7注:

strlen(串);

最后一个元素的下标=总长-1

strcat():

表示字符串连接函数

strcat(串1,串2):

b:

abcde"

strcat(a,b);

a:

windowsabcde"

不变

应保证串1足够长

memset():

清零

memset(串,0,长度);

如chara[100];

memset(a,0,100);

100;

a[i]='

strcpy()/strncpy():

字符串复制函数

strcpy(串1,串2):

永远拷到结束

strcpy(a,b);

=====>

strcpy(串1,&

串2[?

])

strcpy(a,&

b[2]);

cde"

strncpy(串1,串2,n):

appledesk"

strncpy(a,b,5);

applews"

strncpy(串1,&

],n);

strncpy(a,&

b[3],4);

ledeows"

为避免出现'

错误,凡定义一个新串最好用

memset()清零

strcmp():

字符串比较函数

strcmp(串1,串2):

不是比较长度,而是逐字符的比较其ASCII值

正值:

串1>

串2"

z"

0:

两串相等"

windzws"

负值:

串1<

windowsa"

windowsb"

若a,b是数if(a>

b)if(a==b)if(a<

b)a=b

若a,b是串if(a>

if(strcmp(a,b)>

0)if(strcmp(a,b)==0)

itoa():

表示把数转成串atoi():

表示把串转成数

itoa(数,串,10)k=atoi(串)

chara[]="

1234"

intk;

k=atoi(a);

输入任意一个正整数,输出它的逆序数

m3456===>

654318==81

strrev():

把串逆转"

===>

edcba"

itoa(m,k,10);

strrev(k);

m=atoi(k)

2.字符函数:

ctype.h"

isalpha():

判断是否为字母

='

k[i]<

z'

||k[i]>

A'

Z'

if(isalpha(k[i]))

islower()/isupper():

判断是否为小写字母/大写字母

if(!

islower(k[i]))

将给定字符串中的第一个字母绕至最后

indowsw"

将给定的字符串逆序存储

swodniw"

删除类

删除给定字符串中所有的'

*'

****win**do***ws!

!

******"

if(k[i]!

m[cnt++]=k[i];

删除给定字符串前端的'

删除给定字符串后端的'

删除给定字符串头尾的'

*indow*

15

删除给定字符串中间的'

***window**

38

输入一个数n,要求删除尾部的n个*

n>

*个数,则原串不动

将给定字符串中所有的大写字母改成它的下

一个字母,如果是'

则改成'

小写及其它字符不动

aabbyyzzAABBYYZZ!

***"

aabbyyzzBBCCZZAA!

Y'

k[i]+=1;

elseif(k[i]=='

k[i]='

将................小写.........上一个

如果是'

======>

'

大写及其它字符不动

变例:

将给定字符串中所有的字母改成它的下一个字母

'

其它字符不动

统计给定字符串中每个小写字母出现的次数

并分别存入yy[0]-----yy[25]中

aaaaaaabbbcc"

yy[0]=7yy[1]=3yy[2]=2

第五讲.函数

一.概述

1.C程序的构成单位是函数,一个C程序有且必须只有

一个主函数main,且不管主函数位置如何,永远从

主函数开始执行

2.主函数可以调用其它函数,其它函数也可以

相互调用,但永远不能调用主函数

+5!

+8!

+9!

+13!

+20!

3.分类:

1)库函数:

#include"

_____.h"

math.h"

数学函数

sqrt()abs()pow()

stdio.h"

输入输出函数

puts()printf()scanf()

字符串函数

strlen()strcat()strcpy()

字符函数

islower()i

2)空函数:

void函数名()

{}

3)用户自定义函数

二.用户自定义函数:

1.无参函数

voidzdy()

{函数体;

2.有参函数:

类型名函数名(参数列表)

如:

编写函数pfh(),功能为求两数的平方和

关于函数的返回值

a.若函数名前是void,则函数体内一定没有

return语句

b.若函数名前是int/float/char/double等

则函数体内一定有return语句

c.若函数名前什么都没有,则函数体内可能有

return,也可能没有return语句(具体看

题目要求)

三.函数的参数与调用

1.函数的参数

a.形参必须一一定义

b.若形参是普通变量,则是单向传递

实变形变,但形变实不变

例:

编写函数swap(),功能为实现两元素的互换

若形参是数组或指针,则是双向传递

实变形变,形变实也变

2.函数的调用

1)调用方式:

a.作为语句调用:

printf("

........"

);

b.作为表达式调用:

如a=sqrt(b)+6

c.函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1