C语言学习提纲Word下载.docx

上传人:b****5 文档编号:20489881 上传时间:2023-01-23 格式:DOCX 页数:20 大小:22.26KB
下载 相关 举报
C语言学习提纲Word下载.docx_第1页
第1页 / 共20页
C语言学习提纲Word下载.docx_第2页
第2页 / 共20页
C语言学习提纲Word下载.docx_第3页
第3页 / 共20页
C语言学习提纲Word下载.docx_第4页
第4页 / 共20页
C语言学习提纲Word下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言学习提纲Word下载.docx

《C语言学习提纲Word下载.docx》由会员分享,可在线阅读,更多相关《C语言学习提纲Word下载.docx(20页珍藏版)》请在冰豆网上搜索。

C语言学习提纲Word下载.docx

//改变测试变量的值,以便下次循环时的测试比较。

intmain(intargc,char*argv[])

intc;

c=getchar();

while(c!

=EOF){

putchar(c);

c=getchar();

}

3、在屏幕输入输出:

{

intc;

while((c=getchar())!

=EOF)//如果没有遇到文件结束符,就一直循环。

{//每次循环获取从键盘录入的一个字符,并输出。

表现:

输入回车后将本行输入内容显现到屏幕。

putchar(c);

}

4、符号常量的程序编制时的运用:

main()

#defineLOWER0//运用大写字符串代表一个具体的数值,能更好体现数据的意图

#defineUPPER300//宏替换,在后面遇到一样的大写字符串,以被替换数值或表达式取替。

#defineSTEP20

intfahr;

for(fahr=LOWER;

fahr<

=UPPER;

fahr=fahr+STEP)//替换后for(fahr=0;

fahr=fahr+20)

printf("

%3d\t%6.1f\n"

fahr,(5.0/9.0)*(fahr-32));

//\t中间插入一Ta间距

5、统计从键盘录入的信息包含有多少行,多少单词,多少字符:

#defineIN1

#defineOUT0

intc,nl,nw,nc,state;

state=OUT;

nl=nw=nc=0;

while((c=getchar())!

=EOF)

{

++nc;

if(c=='

\n'

)++nl;

'

||c=='

||c=='

\t'

)state=OUT;

elseif(state==OUT)

{state=IN;

++nw;

}

printf("

%d%d%d\n"

nl,nw,nc);

6、统计录入的信息0-9各数字出现的次数,不可见字符的次数,其他的次数。

intmain()

intc,i,nwhite,nother;

intndigit[10];

nwhite=nother=0;

for(i=0;

i<

10;

++i)//对数组各元素赋初值0

ndigit[i]=0;

while((c=getchar())!

if(c>

='

0'

&

&

c<

9'

)//获取的字符如果在0到9之间

++ndigit[c-'

];

//数组对应序列中的值加1

elseif(c=='

)//不可见字符的判断

++nwhite;

else

++nother;

数组中各元素对应值是:

\n"

);

++i)

[%2d]"

i);

++i)//读出数组中各元素的值并输出

%-4d"

ndigit[i]);

//每个值占4个宽,并左对齐

\nwhitespace=%d,other=%d\n"

nwhite,nother);

7、计算某个数的n次方;

示例函数的定义与运用:

intpower(intm,intn);

//函数的原型声明。

C可对数据类型进行检查并强制转换

main()

inti;

++i)

i,power(2,i),power(-3,i));

//函数调用

intpower(intbase,intn)//某个数自身相乘n次

inti,p;

p=1;

for(i=1;

=n;

++i)//控制自身相乘的次数

p=p*base;

returnp;

//函数返回那个值

////节省一个变量的写法

{intp;

for(p=1;

n>

0;

--n)

p=p*base;

returnp;

8、获取从键盘录入的各行信息中最长的那行并输出:

#defineMAXLINE1000//定义定符常量,以实现宏替代

intgetline(charline[],intmaxline);

//有返回值函数原型声明

voidcopy(charto[],charfrom[]);

//无返回值函数原型声明

intlen;

intmax=0;

charline[MAXLINE],longest[MAXLINE];

while((len=getline(line,MAXLINE))>

0)//获取输入的各行及行长度以此作判断条件进行循环

if(len>

max)//如果本行的长度比上一行的长度更长

{//则改变行长,并将行内容拷到目标数组中存放

max=len;

copy(longest,line);

//无返回值的函数调用

if(max>

0)

%s"

longest);

//输出字符串

return0;

intgetline(chars[],intlim)

{

intc,i;

//在数组长度内获取输入字符,通过for循环将其放入数组中

lim-1&

(c=getchar())!

=EOF&

c!

;

++i)

s[i]=c;

){//一行末尾的换行符也统计到行长度中

s[i]=c;

++i;

s[i]='

\0'

//给字符串数组加上结束标志

returni;

//返回输入信息行的长度

voidcopy(charto[],charfrom[])//字符数组间的复制

inti=0;

while((to[i]=from[i])!

)//如果源字符串未结束则继续循环

9、指定每行打印的元素个数,每列用空格隔开:

inti,t[100];

for(i=0;

100;

i++)//给数组的100个元素赋值

t[i]=i;

i++)//每行打印10个元素,每列之间用一个空格隔开。

%6d%c"

t[i],(i%10==9||i==99)?

'

:

//三元运算符,如果..则..否则..

1、检测字符串的长度:

%3d\n"

strlen("

abcde"

));

intstrlen(chars[])

{inti=0;

while(s[i]!

)//如果字符串还未结束则继续循环

++i;

2、枚举常量的定义及应用:

{

enumweekday{sun,mon,tue,wed,thu,fri,sat}a,b,c;

//枚举常量的定义

a=sun;

b=mon;

c=tue;

%d,%d,%d\n"

a,b,c);

3、大写转小写,数字字符转数值,判断是否闰年:

voidleapyear(int);

inti=0;

intyear;

i=atoi("

1234"

//将数字组成的字符串转换为纯数字

%d\n"

输入具体的年数:

"

scanf("

%d"

&

year);

//从键盘获得需要判断是否闰年的具体年份数&

year

leapyear(year);

//调用是否闰年函数

%c转换为小写字母是:

%c\n"

'

B'

lower('

//调用转换为小字字母函数

intatoi(chars[])//字符数组转换为数字的函数

inti,n;

n=0;

for(i=0;

s[i]>

s[i]<

='

++i)

n=10*n+(s[i]-'

returnn;

intlower(intc)//大写转小写函数

if(c>

A'

Z'

returnc+'

a'

-'

else

returnc;

voidleapyear(intyear)//判断是否为闰年函数

if((year%4==0&

year%100!

=0)||year%400==0)

%disaleapyear\n"

year);

else

%disnotaleapyear\n"

4、删除字符数组中某个指定字符,再连接一个字符串:

voidsqueeze(chars[],intc);

voidstrcat(chars[],chart[]);

charsour[20]="

abcdefg"

//定义一字符数组并赋初值

intc='

b'

%s\n"

sour);

//输出未删除前源字符数组的内容

删除%c字符后:

c);

squeeze(sour,c);

//调用函数squeeze删除指定字符

chara[10]="

tttt"

再连接一个字符串%s后:

a);

strcat(sour,a);

voidsqueeze(chars[],intc)//删除字符数组中的某个指定字符的函数

inti,j;

for(i=j=0;

s[i]!

i++)

if(s[i]!

=c)//不一样的才赋值后进下次循环;

否则直接进入下次循环

s[j++]=s[i];

s[j]='

voidstrcat(chars[],chart[])//字符数组的连接函数

i=j=0;

)//原字符数组先保留

i++;

while((s[i++]=t[j++])!

)//再在后面添加新字符数组的内容

;

1、在经过排序后的整型数组中查找指定数字所在的位置:

核心是整型数组的操作

intbinsearch(intx,intv[],intn);

intt[15];

inti,x;

录入15个数\n"

//提示数据录入信息

15;

++i)//循环录入15个数给数组各元素赋值

scanf("

t[i]);

//带&

表示录值给对应序列数组元素的值

输入要查找的数:

x);

binsearch(x,t,t[14]));

//调用折半查找函数

最后一个元素的值是:

t[14]);

//引用数组中某个元素的值

intbinsearch(intx,intv[],intn)

intlow,high,mid;

low=0;

//下限

high=n-1;

//上限

while(low<

=high)

mid=(low+high)/2;

//中值

if(x<

v[mid])//如果待查找的值小于中值,将上限改为中值减1再循环

high=mid-1;

elseif(x>

v[mid])//如果待查找的值大于中值,将下限改为中值加1后再循环

low=mid+1;

returnmid;

//如果正好等于中值,那就返回中值

return-1;

//返回没有找到

2、Switch应用的一个示例

intc,i,nwhite,nother,ndigit[10];

nwhite=nother=0;

//对二个整型变量进行连续赋初值0

i++)//10个元素的整型数组赋初值0

=EOF)//从键盘获取输入的信息,直到收到结束信号

{

switch(c)

{//逐个字符进行判断,如果是数字则整型数组对应元素的值加1

case'

case'

1'

2'

3'

4'

5'

6'

7'

8'

ndigit[c-'

]++;

//输入的是以字符形式存储的,ASCII码中0为48

break;

//若输入4,实际存储4这个字,ASCII码52,故:

c-'

=4

case'

:

nwhite++;

//break跳出这层分支,阻止程序直接进入下一分支

default:

//缺省选项,可以没有。

习惯在这分支也加上break跳出语句

nother++;

}

}

digits="

for(i=0;

i<

i++)//for循环读出整型数组中各元素的值

printf("

%d"

printf("

whitespace=%d,other=%d\n"

nwhite,nother);

return0;

3、Shellsort排序:

voidshellsort(intv[],intn);

inti,a[10];

录入要排序的10个数:

for(i=0;

i++)//for循环录入整型数组10个元素的值

a[i]);

shellsort(a,i);

//调用排序函数实现排序

排序后的数组\n"

i++)//for循环读出已排序数组的10个元素的值

%2d"

a[i]);

voidshellsort(intv[],intn)

intgap,i,j,temp;

for(gap=n/2;

gap>

gap/=2)//控制二个被比较元素间隔,从n/2开始,逐步对折

for(i=gap;

n;

i++)//控制元素间移动位置

for(j=i-gap;

j>

=0&

v[j]>

v[j+gap];

j-=gap)//比较相距gap个位置的各对元素,如果逆序则互换

{

temp=v[j];

v[j]=v[j+gap];

v[j+gap]=temp;

}

4、字符串反转操作:

string.h>

//后有使用strlen字符串操作的函数

voidreverse(chars[]);

chara[100];

输入需反转的字符串:

scanf("

//从键盘获取字符串;

汉字字符串本程序不能反转

reverse(a);

//字符数组名本身为指针,故前面不需要加"

"

反转后的字符串:

\n%s\n"

voidreverse(chars[])

intc,i,j;

for(i=0,j=strlen(s)-1;

j;

i++,j--)//二个循环变量,一个从开头,一个从末尾,二者相等时结束

{c=s[i];

s[i]=s[j];

s[j]=c;

5、将数值转换为字符串:

ctype.h>

main()

voiditoa(int,chars[]);

voidreverse(chars[]);

longx=-1234552;

chart[100];

itoa(x,t);

//调用itoa将数值转为字符串;

将长整型数值%d转换为字符串:

x);

t);

inti;

strlen(t);

i++)//输出字符数组各元素的值

%2c"

t[i]);

voiditoa(intn,chars[])//将数字转换为字符串并保存到S中

inti,sign;

if((sign=n)<

n=-n;

i=0;

do{s[i++]=n%10+'

while((n/=10)>

0);

if(sign<

0)

s[i++]='

s[i]='

reverse(s);

voidreverse(chars[])//将字符数组中各元素的值的反置

i++,j--)

c=s[i];

6、去除字符串尾部的不可见字符:

inttrim(chars[]);

intstrlen(chars[]);

chart[100]="

abcdade"

//printf("

录入尾部包含不可见字符的字符串:

//scanf("

输入的字符串长度为:

strlen(t));

trim(t);

删除字符串尾部的不可见字符后,读数组各值:

\n以字符串格式读出%s\n"

inttrim(chars[])//去除字符串尾部不可见字符函数

intn;

for(n=strlen(s)-1;

=0;

n--)//从后面开始循环;

实际上就是将’\0’放到假想的位置上

if(s[n]!

&

s[n]!

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

当前位置:首页 > 经管营销 > 经济市场

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

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