CC++学习总结笔记.docx

上传人:b****6 文档编号:16462471 上传时间:2023-07-13 格式:DOCX 页数:280 大小:1,001.44KB
下载 相关 举报
CC++学习总结笔记.docx_第1页
第1页 / 共280页
CC++学习总结笔记.docx_第2页
第2页 / 共280页
CC++学习总结笔记.docx_第3页
第3页 / 共280页
CC++学习总结笔记.docx_第4页
第4页 / 共280页
CC++学习总结笔记.docx_第5页
第5页 / 共280页
CC++学习总结笔记.docx_第6页
第6页 / 共280页
CC++学习总结笔记.docx_第7页
第7页 / 共280页
CC++学习总结笔记.docx_第8页
第8页 / 共280页
CC++学习总结笔记.docx_第9页
第9页 / 共280页
CC++学习总结笔记.docx_第10页
第10页 / 共280页
CC++学习总结笔记.docx_第11页
第11页 / 共280页
CC++学习总结笔记.docx_第12页
第12页 / 共280页
CC++学习总结笔记.docx_第13页
第13页 / 共280页
CC++学习总结笔记.docx_第14页
第14页 / 共280页
CC++学习总结笔记.docx_第15页
第15页 / 共280页
CC++学习总结笔记.docx_第16页
第16页 / 共280页
CC++学习总结笔记.docx_第17页
第17页 / 共280页
CC++学习总结笔记.docx_第18页
第18页 / 共280页
CC++学习总结笔记.docx_第19页
第19页 / 共280页
CC++学习总结笔记.docx_第20页
第20页 / 共280页
亲,该文档总共280页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CC++学习总结笔记.docx

《CC++学习总结笔记.docx》由会员分享,可在线阅读,更多相关《CC++学习总结笔记.docx(280页珍藏版)》请在冰点文库上搜索。

CC++学习总结笔记.docx

CC++学习总结笔记

#include

#defineN20

main()

{

chars[N][N],i,j,k,m;

if(N%2==0)

m=N/2;

else

m=N/2+1;

for(k=0;k

for(i=k;i

for(j=k;j

if(i==k||i==N-k-1||j==k||j==N-k-1)

s[i][j]='A'+k;

for(i=0;i

{

for(j=0;j

printf("%c",s[i][j]);

printf("\n");

}

}

求负数平均数:

#include

main()

{

inta[7]={1,-2,9,-4,-7,2,0},i,k=0;floats=0.0;

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

printf("%d",a[i]);

printf("\n");

for(i=0;a[i]!

=0;i++)

if(a[i]<0)

{s+=a[i];k++;}

printf("%6.4f",s/k);

}

小写改大写

#include

main()

{

inti;chara[20];

gets(a);

for(i=0;a[i]!

='\0';i++)

if(a[i]>='a'&&a[i]<='z')

a[i]=a[i]-32;

puts(a);

}

第13套题(必须是main函数在上面,fun函数段再下面,要不然会出错)

#include

longfun(inta,intn)

{inti;longs,t=0;

for(i=0;i

t=t*10+a;

s=t;

for(i=1;i

{

t=t/10;

s=s-t;

}

returns;

}

main()

{

inta,n;

scanf("%d%d",&a,&n);

printf("a=%d,n=%d",a,n);

printf("\n");

printf("%ld\n",fun(a,n));/*必须是ld,不能是l*/

}

解法二(不调用子函数)

#include

main()

{

inta,n,i;longs,t=0;

scanf("%d%d",&a,&n);

printf("a=%d,n=%d",a,n);

printf("\n");

for(i=0;i

t=t*10+a;

s=t;

for(i=1;i

{

t=t/10;

s=s-t;

}

printf("%ld\n",s);

}

第18套

#include

#include/*该句必须写上去,要不然函数中的cos,fabs函数将无来源调用,这一点要非常注意*/

main()

{

doublex0,x1=0.0;

do

{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=1e-6);

printf("root=%f\n",x1);

}

注意区别,后者为正确结果

第30套——删除前导*号

解法一(调用子函数)

#include

voidfun(char*a)

{

char*p=a,*s;

while(*p=='*')

p++;

for(s=p;*s!

='\0';s++)

*a++=*s;

*a='\0';

}

main()

{

chara[80];/*此处不能定义为*a*/

gets(a);

fun(a);/*此处不得直接写成puts(fun(a));必须得分两步写*/

puts(a);

}

解法二(未调用子函数)

#include

#include

main()

{

inti,k=0;chars[20],*p,*r;

gets(s);

p=s;

while(*p=='*')

p++;

for(r=p;*r!

='\0';r++)

s[k++]=*r;

s[k]='\0';

puts(s);

}

循环左移

#include

#include

main()

{

inti,j,n,m;chara[20],t;

gets(a);

n=strlen(a);/*要用到strlen函数的话就要用到字符串库函数*/

scanf("%d",&m);

for(i=0;i

{t=a[0];

for(j=0;j

a[j]=a[j+1];

a[n-1]=t;

}

puts(a);

}

注意必须是先输入字符串数组,再输入m值

二维矩阵转置:

#include

#include

#defineM3/*这一句是在main函数之前*/

main()

{

inta[M][M]={{1,2,2},{4,1,6},{1,3,2}},b[M][M],i,j,k;

printf("beforemotivated:

\n");

for(i=0;i

{for(j=0;j

printf("%d",a[i][j]);

printf("\n");/*注意大花括号的位置,以及printf(“\n”);这一句的位置,每一行结尾转行*/

}

for(i=0;i

for(j=0;j

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

printf("aftermotivated:

\n");

for(i=0;i

{for(j=0;j

printf("%d",b[i][j]);

printf("\n");

}

}

#include

#include

main()

{

inti,n,k=0;chars[20],*p;

gets(s);

n=strlen(s);

p=s;

for(i=0;i

if(p[i]%2==0||i%2!

=0)

s[k++]=p[i];

s[k]='\0';

puts(s);

}

删除字符串中某些字符:

解法一

#include

#include

main()

{

inti,n,k=0;chars[20],*p;

gets(s);

n=strlen(s);

p=s;

for(i=0;i

{if(p[i]%2!

=0&&i%2==0);

else

{s[k++]=p[i];

s[k]='\0';

}

}

puts(s);

}

解法二(主要是红色字体部分内容不同)

#include

#include

main()

{

inti,n,k=0;chars[20],*p;

gets(s);

n=strlen(s);

p=s;

for(i=0;i

{if(p[i]%2==0||i%2!

=0)

s[k++]=p[i];

s[k]='\0';

}

puts(s);

}

数组前m位输出

#include

main()

{

ints[7]={1,2,3,4,5,6,7},i,m;

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

printf("%d",s[i]);

printf("\n");

scanf("%d",&m);

for(i=0;i

printf("%d",s[i]);

printf("\n");

}

求1-1/2+1/3-1/4+···求前m项的和

#include

main()

{

inti,m,fg=1;doubles=0.0,s1;

scanf("%d",&m);

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

{

s1=i*fg;

fg=fg*(-1);

s+=1.0/s1;

}

printf("%2.4f\n",s);/*2.4前面的数字2代表包括总位数,前面的数字只要不超过6就能得到正确结果,后面的数字4代表小数点后的位数,即保留几位小数,此处与printf("%.4f\n",s);效果一样*/

}

注意这个结果不是顶行输出的,与8.4前面的数字8有关

判断几组数据的大小

#include

#include

main()

{

inti,a,b,n;

scanf("%d",&n);

for(i=0;i

{

scanf("%d%d",&a,&b);

if(a>b)printf("Text%d:

>\n",i+1);

if(a

<\n",i+1);

if(a==b)printf("Text%d:

=\n",i+1);

}

}

第一套选择题

解法一(答案)

#include

#include

main()

{

inti=2,fg=1;doubles=0.0,s1=0.75,t;

while(s1>1e-3)

{

s=s+fg*s1;

t=2*i;

s1=(t+1)/(t*t);

fg=fg*(-1);

i++;

}

printf("theresultis:

%f\n",s);

}

解法二(为什么有这种差别呢?

求解答)

#include

#include

main()

{

inti=1,fg=1;doubles=0.0,s1,t;

do

{

t=2*i;

s1=(t+1)/(t*t);

s=s+fg*s1;

fg=fg*(-1);

i++;

}

while(s1>1e-3);

printf("theresultis:

%f\n",s);

}

解法三(带子函数段)

#include

#include

doublefun(doublee)

{

inti=1,fg=1;doubles=0.0,s1,t;

do

{

t=2*i;

s1=(t+1)/(t*t);

s=s+fg*s1;

fg=fg*(-1);

i++;

}

while(s1>e);

returns;

}

main()

{

doublee;

scanf("%le",&e);/*此处红色字体%le不能写成%f,这里scanf函数与printf函数使用规则不同,scanf函数读取double型数据是用%le,printf函数显示double型数据是用%f,注意区别*/

printf("%f\n",fun(e));

}

【实现十进制到二进制的转换】:

#include

main()

{

intk=0,i;longt,s1;charp[20],ch;

scanf("%ld",&t);

do

{

s1=t%2;

t=t/2;

p[k++]=s1+'0';

}

while(t>0);

p[k]='\0';

for(i=0;i

{

ch=p[i];

p[i]=p[k-1-i];

p[k-1-i]=ch;

}

puts(p);

}

【二进制到十进制的转换】:

#include

#include

main()

{

inti,j,n,k;longt=0;chars[20];

gets(s);

n=strlen(s);

for(i=0;i

{

k=1;

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

k=k*2;

t=t+k*(s[i]-'0');

}

printf("%ld\n",t);

}

【实现16进制到10进制的转换】:

#include

#include

main()

{

inti,j,n,k;longt=0;chars[20];

gets(s);

n=strlen(s);

for(i=0;i

{

k=1;

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

k=k*16;

if(s[i]>='0'&&s[i]<='9')

t=t+k*(s[i]-'0');

if(s[i]>='A'&&s[i]<='G')

t=t+k*(s[i]-55);/*例如16进制中的’A’代表10进制中的10,而字符’A’对应的ASCII值为65,其他的’B’…一直到’F’都可以依此类推*/

}

printf("%ld\n",t);

}

【实现10进制到16进制的转换】:

#include

#include

main()

{

intk=0,i;longt,s1;charp[20],ch;

scanf("%ld",&t);

do

{

s1=t%16;

t=t/16;

if(s1>=1&&s1<=9)

p[k++]=s1+'0';

if(s1>=10&&s1<=15)

p[k++]=s1+55;

}

while(t>0);

p[k]='\0';

for(i=0;i

{

ch=p[i];

p[i]=p[k-1-i];

p[k-1-i]=ch;

}

puts(p);

}

【2进制转化为8进制】:

思路:

2进制→10进制→8进制

#include

#include

main()

{

inti,j,n,k,m=0;longt=0,s1;chars[20],p[20],ch;

gets(s);

n=strlen(s);

for(i=0;i

{

k=1;

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

k=k*2;/*蓝色字体2如果变为8,则可以实现8进制到10进制的转换*/

t=t+k*(s[i]-'0');

}

printf("%ld\n",t);

do

{

s1=t%8;/*这两句顺序不能颠倒,否则会导致结果错误,即必须是先求余,后求商如果是先求商后求余的话,即按照"t=t/8;s1=t%8"的顺序执行,后一句中s1=t%8中的t已经改变*/

t=t/8;

p[m++]=s1+'0';/*m用于统计二进制数的位数,在此二进制数是作为字符串的形式输出的*/

}

while(t>0);

p[m]='\0';

for(i=0;i

{

ch=p[i];

p[i]=p[m-1-i];

p[m-1-i]=ch;

}

puts(p);

}

【2进制转化为16进制】:

思路与2进制转化为8进制相似

#include

#include

main()

{

inti,j,n,k,m=0;longt=0,s1;chars[20],p[20],ch;

gets(s);

n=strlen(s);

for(i=0;i

{

k=1;

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

k=k*2;/*蓝色字体2如果变为8,则可以实现8进制到10进制的转换*/

t=t+k*(s[i]-'0');

}

printf("%ld\n",t);

do

{

s1=t%16;/*这两句顺序不能颠倒,否则会导致结果错误,即必须是先求余,后求商如果是先求商后求余的话,即按照"t=t/16;s1=t%16"的顺序执行,后一句中s1=t%16中的t已经改变*/

t=t/16;

if(s1>=1&&s1<=9)

p[m++]=s1+'0';

if(s1>=10&&s1<=15)

p[m++]=s1+55;/*m用于统计二进制数的位数,在此二进制数是作为字符串的形式输出的*/

}

while(t>0);

p[m]='\0';

for(i=0;i

{

ch=p[i];

p[i]=p[m-1-i];

p[m-1-i]=ch;

}

puts(p);

}

【从母字符串中查找子字符串的个数】:

解法一

#include

#include

main()

{

inti,j,k=0,n1,n2;chars[100],p[100],q[100];

gets(s);

gets(p);

n1=strlen(s);

n2=strlen(p);

for(i=0;i

{

for(j=0;j

q[j]=s[i+j];/*动态保存字符串数组q,以便与子字符串p比较*/

q[n2]='\0';

if(strcmp(q,p)==0)

k++;

}

printf("%d\n",k);

}

解法二(注意首先定义字符串s,p的长度要足够长,如定义为100。

若定义为20,当从输入设备输入的字符串的长度超过20的时候,会出现错误)

#include

#include

main()

{

inti,j,k=0,tag,n1,n2;chars[100],p[100];

gets(s);

gets(p);

n1=strlen(s);

n2=strlen(p);

for(i=0;i

{

tag=1;

for(j=0;j

if(p[j]!

=s[i+j])

tag=0;

if(tag==1)k++;

}

printf("%d\n",k);

}

【自己研究的小课题】

#include

#include

voidfun1(chars1[100])

{

char*s=s1,*p;

while(*s=='*')

s++;

for(p=s;*p!

='\0';p++)

*s1++=*p;

*s1='\0';

}

voidfun2(chars2[100])

{

intk=0;char*s=s2,*p;

while(*s!

='\0')

s++;

s--;

while(*s=='*')

s--;

*(s+1)='\0';

}

main()

{

inti;chars1[100],s2[100];

printf("Beforetransfered(s1):

");

gets(s1);

printf("Beforetransfered(s2):

");

gets(s2);

fun1(s1);

fun2(s2);

printf("Aftertransfered(s1):

");

puts(s1);

printf("Aftertransfered(s2):

");

puts(s2);

printf("Afterlinked(s1+s2):

");

puts(strcat(s1,s2));

}

【自己研究小课题】

将Excel中的列标变换为10进制数:

AAA→703

#include

#include

main()

{

inti,j,n;longs1=0,k;chars[100];

gets(s);

n=strlen(s);

for(i=0;i

{k=1;

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

k=k*26;

s1=s1+(s[i]-64)*k;

}

printf("%ld\n",s1);

}

703→AAA(当输入的数字为26的倍数时,会出现错误,其他的某些情况也会出现错误,有待进一步考察)

#include

#include

main()

{

intk=0,i;longt,s,s1;charp[20],ch;

scanf("%ld",&t);

do

{

s1=t%26;

t=t/26;

p[k++]=s1+64;

}

while(t>0);

p[k]='\0';

for(i=0;i

{

ch=p[i];

p[i]=p[k-1-i];

p[k-1-i]=ch;

}

puts(p);

}

求最大公约数:

(1也可以是最大公约数,而且注意运行程序时最好切换输入法为英文输入法,要不然会出现死循环)

#include

#include

main()

{

inta,b,i,k=0,s[100];

printf("请输入两个正整数:

");

scanf("%d,%d",&a,&b);

while(a<=0||b<=0)

{

printf("请重新输入两个正整数:

");

scanf("%d,%d",&a,&b);

}

for(i=1;i<=a&&i<=b;i++)

if(a%i==0&&b%i==0)

s[k++]=i;

printf("最大公约数:

%d\n",s[k-1]);/*该数组最后一个元素必为最大公约数*/

}

求最小公倍数:

#include

#include

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2