/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:给一个不多于五位数的正整数,1.求它是几位数2.分别输出每一位数字3.按逆序输出各位数字
位置:C程序设计(第四版)2010年6月第四版 113页习题9
*/
#include<stdio.h>
int main()
{
int num,indiv,ten,hundred,thousand,ten_thousand,place;
printf("请输入一个整数(0-99999)");
scanf("%d",&num);
if(num>9999)
place=5;
else if(num>999)
place=4;
else if(num>99)
place=3;
else if(num>9)
place=2;
else
place=1;
printf("位数:%d",place);
printf("每位数字为:");
ten_thousand=num/10000;
thousand=(int)(num-ten_thousand*10000)/1000;//利用整型变量只能存储整数的特点
hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;//为什么要强制转换类型?(前面定义了整型变量)
ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
switch(place)
{
case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);//不能用不同类型的输出符
printf("\n反序数字为:");
printf("%d%d%d%d%d",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d%d",indiv,ten,hundred,thousand);
break;
case 3:printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序数字为:");
printf("%d%d%d",indiv,ten,hundred);
break;
case 2:printf("%d,%d",ten,indiv);
printf("\n反序数字为:");
printf("%d%d%",indiv,ten);
break;
case 1:printf("%d,",indiv);
printf("\n反序数字为:");
printf("%d",indiv);
}
return 0;
}
/*Dev-c++输出结果:
请输入一个整数(0-99999)98765
位数:5每位数字为:9,8,7,6,5
反序数字为:56789
*/
/*Dev-c++输出结果:
请输入一个整数(0-99999)1234
位数:4每位数字为:1,2,3,4
反序数字为:4321
*/
/*Dev-c++输出结果:
请输入一个整数(0-99999)321
位数:3每位数字为:3,2,1
反序数字为:123
*/
/*Dev-c++输出结果:
请输入一个整数(0-99999)98
位数:2每位数字为:9,8
反序数字为:89
*/
/*Dev-c++输出结果:
请输入一个整数(0-99999)5
位数:1每位数字为:5,
反序数字为:5
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 利润的分段计算
位置:C程序设计(第四版)2010年6月第四版 113页习题10
*/
#include<stdio.h>
int main()
{
//if编写
// int i;
// double bonus,bon1,bon2,bon4,bon6,bon10;
// bon1=100000*0.1;
// bon2=bon1+100000*0.075;
// bon4=bon2+200000*0.05;
// bon6=bon4+200000*0.03;
// bon10=bon6+400000*0.015;
// printf("请输入利润i:");
// scanf("%d",&i);
// if(i<100000)
// bonus=i*0.1;
// else if(i<=200000)
// bonus=bon1+(i-100000)*0.075;
// else if(i<=400000)
// bonus=bon2+(i-200000)*0.05;
// else if(i<=600000)
// bonus=bon4+(i-400000)*0.03;
// else if(i<1000000)
// bonus=bon6+(i-600000)*0.015;
// else
// bonus=bon10+(i-1000000)*0.01;
// printf("奖金是:%10.2f\n",bonus);
// return 0;
//switch编写
int i;
double bonus,bon1,bon2,bon4,bon6,bon10;
int branch;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:");
scanf("%d",&i);
branch=i/100000;
if(branch>10)
branch=10;
switch(branch)
{
case 0:bonus=i*0.1;
break;
case 1:bonus=bon1+(i-100000)*0.075;
break;
case 2:
case 3:bonus=bon2+(i-200000)*0.05;
break;
case 4:
case 5:bonus=bon4+(i-400000)*0.03;
break;
case 6:
case 7:
case 8:
case 9:bonus=bon6+(i-600000)*0.015;
break;
case 10:bonus=bon10+(i-1000000)*0.01;
}
printf("奖金是:%10.2f\n",bonus);
return 0;
}
/*Dev-c++输出结果:
请输入利润i:100000
奖金是: 10000.00
*/
/*Dev-c++输出结果:
请输入利润i:200000
奖金是: 17500.00
*/
/*Dev-c++输出结果:
请输入利润i:400000
奖金是: 27500.00
*/
/*Dev-c++输出结果:
请输入利润i:600000
奖金是: 33500.00
*/
/*Dev-c++输出结果:
请输入利润i:1000000
奖金是: 39500.00
*/
/*Dev-c++输出结果:
请输入利润i:234000
奖金是: 19200.00
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 输入4个整数,要求按有小到大的顺序输出
位置:C程序设计(第四版)2010年6月第四版 113页习题11
*/
#include<stdio.h>
int main()
{
int t,a,b,c,d;
printf("请输入4个整数a,b,c,d:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("输入的内容为:a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>d)
{
t=a;
a=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
printf("排序结果如下:\n");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
return 0;
}
/*Dev-c++输出结果:
请输入4个整数a,b,c,d:12,58,01,2
输入的内容为:a=12,b=58,c=1,d=2
排序结果如下:
1 2 12 58
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 求建筑高度
位置:C程序设计(第四版)2010年6月第四版 113页习题12
*/
#include<stdio.h>
int main()
{
int h=10;
float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;
printf("请输入一个点(x,y):");
scanf("%f,%f",&x,&y);
d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);//两点之间的距离公式:|AB|=sqrt(x1-x2)^2+(y1-y2)^2);因为半径为1平方后还是1,所以这里省略开根号
d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);
d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);
if(d1>1 && d2>1 && d3>1 && d4>1)
h=0;
printf("该点高度为:%d\n",h);
return 0;
}
/*Dev-c++输出结果:
请输入一个点(x,y):2,2
该点高度为:10
*/
/*Dev-c++输出结果:
请输入一个点(x,y):0.5,0.7
该点高度为:0
*/
/*Dev-c++输出结果:
请输入一个点(x,y):2,1.7
该点高度为:10
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 累加
位置:C程序设计(第四版)2010年6月第四版 115页例5.1
*/
#include<stdio.h>
int main()
{
int i=1,sum=0;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
/*Dev-c++输出结果:
sum=5050
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: break;
位置:C程序设计(第四版)2010年6月第四版 126页例5.4
*/
#include<stdio.h>
#define SUM 100000
int main()
{
float amount,aver,total;
int i;
for(i=1,total=0;i<=1000;i++)
{
printf("please enter amount:");
scanf("%f",&amount);
total+=amount;
if(total>=SUM)
break;//使流程调到循环体之外,接着执行循环体下面的语句
}
aver=total/i;
printf("num=%d\naver=%10.2f\n",i,aver);
return 0;
}
/*Dev-c++输出结果:
please enter amount:12000
please enter amount:24600
please enter amount:3200
please enter amount:5643
please enter amount:21900
please enter amount:12345
please enter amount:2300
please enter amount:23000
num=8
aver= 13123.50
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 要求输出100~200之间的不能被3整除的数 continue;
位置:C程序设计(第四版)2010年6月第四版 126页例5.4
*/
#include<stdio.h>
int main()
{
int n;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;//结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的表达式3(n++),然后进行下一次是否执行循环的判定
printf("%d\t",n);
}
printf("\n");
return 0;
}
/*Dev-c++输出结果:
100 101 103 104 106 107 109 110 112 113 115 116 118 119 121
122 124 125 127 128 130 131 133 134 136 137 139 140 142 143
145 146 148 149 151 152 154 155 157 158 160 161 163 164 166
167 169 170 172 173 175 176 178 179 181 182 184 185 187 188
190 191 193 194 196 197 199 200
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 输出以下4*5矩阵
位置:C程序设计(第四版)2010年6月第四版 128页例5.6
*/
#include<stdio.h>
int main()
{
int i,j,n=0;
for(i=1;i<=4;i++)
for(j=1;j<=5;j++,n++)
{
if(n%5==0)
printf("\n");
printf("%d\t",i*j);
}
printf("\n");
return 0;
}
/*Dev-c++输出结果:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 求π近似值(公式:π/4~~1-1/3+1/5-1/7+···)
位置:C程序设计(第四版)2010年6月第四版 131页例5.7
*/
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1;
double pi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-6)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
return 0;
}
/*Dev-c++输出结果:
pi=3.14159065
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 兔子问题(Fibonacci数列)
位置:C程序设计(第四版)2010年6月第四版 131页例5.8
*/
#include<stdio.h>
int main()
{
//方法一:
// int f1=1,f2=1,f3;
// int i;
// printf("%12d\n%12d\n",f1,f2);
// for(i=1;i<=38;i++)
// {
// f3=f1+f2;
// printf("%12d\n",f3);
// f1=f2;
// f2=f3;
// }
// return 0;
//方法二:
int f1=1,f2=1,f3;
int i;
for(i=1;i<=20;i++)
{
printf("%12d %12d",f1,f2);
if(i%4==0)
printf("\n");
f1=f1+f2;
f2=f2+f1;
}
return 0;
}
/*Dev-c++输出结果:
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155
*/
/*Dev-c++输出结果:
1 1 2 3 5 8 13 21
34 55 89 144 233 377 610 987
1597 2584 4181 6765 10946 17711 28657 46368
75025 121393 196418 317811 514229 832040 1346269 2178309
3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:输入一个大于3的整数n,判定它是否为素数
位置:C程序设计(第四版)2010年6月第四版 131页例5.9
*/
#include<stdio.h>
#include<math.h>
int main()
{
//方法一:
// int n,i;
// printf("please enter a integer number,n=?");
// scanf("%d",&n);
// for(i=2;i<=n-1;i++)
// if(n%i==0)
// break;
// if(i<n)
// printf("%d is not a prime number.\n",n);
// else
// printf("%d is a prime number.\n",n);
// return 0;
//方法二:
int n,i,k;
printf("please enter a integer number,n=?");
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i<k)
printf("%d is not a prime number.\n",n);
else
printf("%d is a prime number.\n",n);
return 0;
}
/*Dev-c++输出结果:
please enter a integer number,n=?50
50 is not a prime number.
*/
/*Dev-c++输出结果:
please enter a integer number,n=?327
327 is not a prime number.
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:求100~200间的全部素数
位置:C程序设计(第四版)2010年6月第四版 131页例5.10
*/
#include<stdio.h>
#include<math.h>
int main()
{
int n,k,i,m=0;
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i>=k+1)
{
printf("%d ",n);
m=m+1;
}
if(m%10==0)
printf("\n");
}
printf("\n");
return 0;
}
/*Dev-c++输出结果:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:密码转换问题
位置:C程序设计(第四版)2010年6月第四版 131页例5.11
*/
#include<stdio.h>
int main()
{
//方法一:
// char c;
// c=getchar();
// while(c!='\n')
// {
// if((c>='a' && c<='z') || (c>='A' && c<='Z'))
// {
// if((c>='W' && c<='Z') || (c>='w' && c<='z'))
// c=c-22;//c=c+4-26
// else
// c=c+4;
// }
// printf("%c",c);
// c=getchar();
// }
// printf("\n");
// return 0;
//方法二:
char c;
while((c=getchar())!='\n')
{
if((c>='a' && c<='z') || (c>='A' && c<='Z'))
{
c=c+4;
if(c>'Z' && c<='Z'+4 || c>'z') //大写字母不能等于,谭浩强书里面错误了
c=c-26;
}
printf("%c",c);
}
printf("\n");
return 0;
}
/*Dev-c++输出结果:
Y
C
*/
/*Dev-c++输出结果:
abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
efghijklmnopqrstuvwxyzbcdEFGHIJKLMNOPQRSTUVWXYZABCD
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能: 求fabs(t)>=1e-6和fabs(t)>=1e-8的执行循环体次数
位置:C程序设计(第四版)2010年6月第四版 140页习题2
*/
#include<stdio.h>
#include<math.h>
int main()
{
int sign=1,count=0;
double pi=0.0,n=1.0,term=1.0;
while(fabs(term)>=1e-10)
{
pi=pi+term;
n=n+2;
sign=-sign;
term=sign/n;
count++;
}
pi=pi*4;
printf("pi=%10.8f\n",pi);
printf("count=%d\n",count);
return 0;
}
/*Dev-c++输出结果:
pi=3.14159065
count=500000
*/
/*Dev-c++输出结果:
pi=3.14159263
count=5000000
*/
/*Dev-c++输出结果:
pi=3.14159263
count=50000000
*/
/*Dev-c++输出结果:
pi=3.14159265
count=705032704
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:输入正整数m和n,求其最大公约数和最小公倍数
位置:C程序设计(第四版)2010年6月第四版 140习题3
*/
#include<stdio.h>
int main()
{
int p,r,n,m,temp;
printf("请输入两个正整数n,m:");
scanf("%d,%d",&n,&m);
if(n<m)
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{
printf("变化前:n=%d,m=%d,r=%d\n",n,m,r);
r=n%m;//求余数
n=m;
m=r;
printf("变化后:n=%d,m=%d,r=%d\n",n,m,r);
}
printf("它们的最大公约数为:%d",n);
printf("它们的最小公倍数为:%d",p/n);
return 0;
}
/*Dev-c++输出结果:
请输入两个正整数n,m:35,49
它们的最大公约数为:7它们的最小公倍数为:245
*/
/*Dev-c++输出结果:
请输入两个正整数n,m:35,49
变化前:n=49,m=35,r=0
变化后:n=35,m=14,r=14
变化前:n=35,m=14,r=14
变化后:n=14,m=7,r=7
变化前:n=14,m=7,r=7
变化后:n=7,m=0,r=0
它们的最大公约数为:7它们的最小公倍数为:245
*/
/* 创建时间:20171223
创建人:fangweijun(773714759@qq.com)
功能:输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数
位置:C程序设计(第四版)2010年6月第四版 140习题4
*/
#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a' && c<='z' || c>='A' && c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0' && c<='9')
digit++;
else
other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,digit,other);
return 0;
}
/*Dev-c++输出结果:
请输入一行字符:
454f5dg5 4-=-=g22a2g1ag./a,g;alaga
字母数:15
空格数:1
数字数:10
其他字符数:8
*/
C程序设计 第四版(谭浩强)-学习笔记-第四天
最新推荐文章于 2022-04-22 22:57:40 发布