C语音课堂代码笔记.docx
- 文档编号:5499209
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:76
- 大小:30.78KB
C语音课堂代码笔记.docx
《C语音课堂代码笔记.docx》由会员分享,可在线阅读,更多相关《C语音课堂代码笔记.docx(76页珍藏版)》请在冰豆网上搜索。
C语音课堂代码笔记
C语言程序设计代码笔记
∙本笔记版权属于信息工程学院谢勇,为《C语言程序设计》课程教学课堂编写的例题代码。
∙所有代码都在WinXP,MinGW/GNUC4.4.1下编译通过,仅供参考,如果有错误,望发邮件给我,不胜感激。
∙所有代码可以复制,改写,但请注明出处。
另外不要拿来直接交作业!
∙网页支持HTML5标准,请使用Firefox,Chrome,IE9+浏览器浏览
更新日志
∙14/12/2316:
55:
27动态分配二维数组加入VLA方式的例子
∙13/12/2416:
15:
46修正sscanf中第8行缺少分号的错误
∙2013-11-911:
38:
29修正埃氏筛法的复杂度说明
∙2013-1-310:
39:
45补5-3,5-4中遗漏的输出语句
∙2012-12-308:
26:
27完成第11,12,13章的代码更新
∙2012-12-281:
34:
27完成第9,10章的代码更新
∙2012-12-275:
02:
07修改7-1和8-1代码中的bug
∙2012-12-2519:
38:
48完成第8章所有代码
∙2012-12-2315:
38:
50使用表格显示目录,修改第8章错误的页内连接
∙2012-12-2315:
34:
01使用SyntaxHighlighter进行代码高亮显示
∙2012-12-112:
47:
13完成第7章,第8章8-8之前的代码更新
∙2012-11-292:
06:
52完成第4章~第6章课堂代码的更新,上线
目录
4-1大小写转换
4-ex1判断闰年
4-ex2分段函数
5-1猜比赛结果
5-2a多样例a+b
(1)
5-2b多样例a+b
(2)
5-2c多样例a+b(3)
5-3求n个数的累加和
5-4求n个数中的最大值
5-5最大公约数
5-6有多少个1
5-7丑数
5-8素数的判定
5-9字母塔
6-1计算GPA
6-ex1区间最大值
6-2求素数表
6-3素数的个数
6-4铺骨牌
6-5a选择排序
6-5b冒泡排序
6-6组合数
6-7矩阵输出
6-ex2回旋矩阵
6-8回文串
6-9朴素模式匹配
7-1大小写转换
7-2数列
7-3字符串排序
8-1三个数的最大公约数
8-2swap函数
8-3字符串逆序函数
8-4整数数组排序函数
8-5字符串数组排序函数
8-6qsort函数的使用
8-7N!
8-8Fibonacci数的递归实现
8-9Hanoi塔
8-10快速排序
8-11a的N次幂(快速幂)
8-12Fibonacci数(矩阵快速幂)
9-1常用字符处理函数的实现
9-2sscanf的使用示例
9-3sprint的使用示例
10-1班级绩点排名
10-2malloc动态分配一维数组
10-3malloc动态分配二维数组
11-1宏定义的使用举例
12-1常见位运算的操作举例
12-2破案
12-3ACM/ICPC组队
13-1文本文件的操作举例
13-2二进制文件的操作举例
13-3文件重定向的操作举例
回目录
4-1大小写转换
?
1
2
3
4
5
6
7
8
9
10
11
12
#include
intmain(){
charc;
c=getchar();
if(c>='A'&&c<='Z')c+='a'-'A';
elseif(c>='a'&&c<='z')c-='a'-'A';
putchar(c);
return0;
}
4-ex1判断闰年
?
1
2
3
4
5
6
7
8
9
10
11
#include
intmain(){
inty;
scanf("%d",&y);
if(y%400==0||y%100!
=0&&y%4==0)puts("Yes");
elseputs("No");
return0;
}
4-ex2分段函数
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
#include
intmain(){
doublex,y;
scanf("%lf",&x);
if(x<0.0)y=x*x*x;
elseif(y<=1.0)y=x*x;
elsey=sqrt(x);
printf("%f\n",y);
return0;
}
4-2计算器
∙使用if语句实现
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
intmain(){
doublex,y,z;
charop;
scanf("%lf%c%lf",&x,&op,&y);
if(op=='+')z=x+y;
elseif(op=='-')z=x-y;
elseif(op=='*')z=x*y;
elseif(op=='/')z=x/y;
printf("%f%c%f=%f\n",x,op,y,z);
return0;
}
∙使用switch语句实现
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include
intmain(){
doublex,y,z;
charop;
scanf("%lf%c%lf",&x,&op,&y);
switch(op){
case'+':
z=x+y;
break;
case'-':
z=x-y;
break;
case'*':
z=x*y;
break;
case'/':
z=x/y;
break;
}
printf("%f%c%f=%f\n",x,op,y,z);
return0;
}
5-1猜比赛结果
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include
intmain(){
charw;
ints;
for(w='A';w<='D';w++){
s=(w!
='A'&&w!
='C')+
(w=='B'||w=='D')+
(w=='A'&&w!
='B')+
(!
(w=='B'||w=='D'));
if(s==1)printf("%cisthewinner!
\n",w);
}
return0;
}
5-2a多样例a+b
(1)
?
1
2
3
4
5
6
7
8
9
10
11
12
#include
intmain(){
intn,i=0,a,b;
scanf("%d",&n);
while(n--){
scanf("%d%d",&a,&b);
printf("Case%d:
%d\n",++i,a+b);
}
return0;
}
5-2b多样例a+b
(2)
?
1
2
3
4
5
6
7
8
9
10
11
#include
intmain(){
intn,i=0,a,b;
while(scanf("%d%d",&a,&b),a!
=0||b!
=0){
printf("Case%d:
%d\n",++i,a+b);
}
return0;
}
5-2c多样例a+b(3)
?
1
2
3
4
5
6
7
8
9
10
11
#include
intmain(){
intn,i=0,a,b;
while(scanf("%d%d",&a,&b)==2){
printf("Case%d:
%d\n",++i,a+b);
}
return0;
}
5-3求n个数的和
?
1
2
3
4
5
6
7
8
9
10
11
12
13
#include
intmain(){
intn,s=0,t;
scanf("%d",&n);
while(n--){
scanf("%d",&t);
s+=t;
}
printf("%d\n",s);
return0;
}
5-4求n个数中的最大值
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
intmain(){
intn,max,t;
scanf("%d",&n);
scanf("%d",&max);
while(--n){
scanf("%d",&t);
if(max } printf("%d\n",max); return0; } 5-5最大公约数 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include intmain(){ inta,b,r; while(scanf("%d%d",&a,&b)==2){ while(b){ r=a%b; a=b; b=r; } printf("%d\n",a); } return0; } 5-6有多少个1 ? 1 2 3 4 5 6 7 8 9 #include intmain(){ intn,b,c; while(scanf("%d%d",&n,&b)==2){ for(c=0;n;n/=b)if(n%b==1)c++; printf("%d\n",c); } } 5-7丑数 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 #include intmain(){ intn,i; scanf("%d",&n); for(i=2;i<=7;i++){ if(i==4||i==6)continue; while(n%i==0)n/=i; if(n==1)break; } if(n==1)puts("Yes"); elseputs("No"); } 5-8素数的判定 ∙根据定义的最朴素判定(太慢) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include intmain(){ intn,i; scanf("%d",&n); if(n<2){ puts("No"); return0; } for(i=2;i if(i==n)puts("Yes"); elseputs("No"); return0; } ∙常数级别优化(仍然太慢) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include intmain(){ intn,i; scanf("%d",&n); if(n==2){ puts("Yes"); return0; } if(n<2||n%2==0){ puts("No"); return0; } for(i=3;i if(i>=n)puts("Yes"); elseputs("No"); return0; } ∙再次优化,只枚举到sqrt(n) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include intmain(){ intn,i,k; scanf("%d",&n); if(n==2){ puts("Yes"); return0; } if(n<2||n%2==0){ puts("No"); return0; } k=sqrt(n); for(i=3;i<=k&&n%i;i+=2); if(i>k)puts("Yes"); elseputs("No"); return0; } 5-9字母塔 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include intmain(){ charc,t; inti,j,n; while((c=getchar())! =EOF){ getchar(); //readreturnkey n=c-'A'+1; for(i=0;i for(j=0;j for(j=0,t='A';j for(j=0,t-=2;j putchar('\n'); } } return0; } 6-1计算GPA ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include #defineN10 intmain(){ intc[N],g[N],i,n; doublesg=0.0,sc=0.0,gp; scanf("%d",&n); for(i=0;i for(i=0;i for(i=0;i for(i=0;i if(g[i]>=90)gp=4.0; elseif(g[i]>=80)gp=3.0; elseif(g[i]>=70)gp=2.0; elseif(g[i]>=60)gp=1.0; elsegp=0.0; sg+=gp*c[i]; } printf("%.3f\n",sg/sc); return0; } 6-ex1区间最大值 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include intmain(){ intn,Q,x[1000],i,a,b,max; scanf("%d%d",&n,&Q); for(i=0;i while(Q--){ scanf("%d%d",&a,&b); for(max=0,i=a;i<=b;i++){ if(x[i]>max)max=x[i]; } printf("%d\n",max); } return0; } 6-2求素数表 ∙朴素筛法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include #defineN1000001 inta[N]={1,1}; intcnt; intprime[N]; intmain(){ inti,j; //getallprimesbysievealgorithm for(i=2;i if(! a[i]){ prime[cnt++]=i; for(j=i+i;j } } //printallprimesbetween1andN,10primesperline. for(i=0;i printf("%d",prime[i]); if((i+1)%10==0||i==cnt-1)putchar('\n'); elseputchar(''); } } ∙优化后的筛法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include #defineN1000001 #defineSQRT_N1000 inta[N]={1,1}; intcnt; intprime[N]; intmain(){ inti,j; //getallprimesbyO(NloglogN)sievealgorithm for(i=2;i<=SQRT_N;i++){ if(! a[i]){ for(j=i*i;j } } for(i=2;i a[i])prime[cnt++]=i; //printallprimesbetween1andN,10primesperline. for(i=0;i printf("%d",prime[i]); if((i+1)%10==0||i==cnt-1)putchar('\n'); elseputchar(''); } } 6-3素数个数 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include #defineN1000001 #defineSQRT_N1000 inta[N]={1,1}; intg[N]={0}; intmain(){ inti,j,L,R; //getallprimesbyO(NloglogN)sievealgorithm for(i=2;i<=SQRT_N;i++){ if(! a[i]){ for(j=i*i;j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 课堂 代码 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)