C/C++语言经典实用趣味程序设计编程百例精解--大部分是自己写的(1)

本文汇集了C/C++语言的经典编程实例,包括图形绘制、用户输入处理等多种方法,旨在深入浅出地讲解编程技巧,帮助读者提升实践能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 
查看文章
 
C/C++语言经典实用趣味程序设计编程百例精解--大部分是自己写的(1)
2008-06-15 21:52

 

在屏幕上用*显示0~360度的余弦函数cos(x)曲线

对余弦曲线放大十倍

#include<stdio.h>

#include<math.h>

int main()

{

double y;

int x,m;

for(y=1;y>=-1;y-=0.1)

{

m=acos(y)*10;

for(x=1;x<m;x++) printf(" ");

printf("*");

for(;x<62-m;x++)printf(" ");

printf("*/n"); }

return 0;

}

余弦曲线:有误差,对部分数据作了调整

#include <iostream>
#include<math.h>
int main()
{
double y;
int x,m;
using namespace std;
for(y=1;y>=0;y-=0.1)
{
m=asin(y)*10 ;
for(x=1;x<=m;x++)
cout<<" " ;
cout<<"*" ;
for(;x<32-m;x++)
cout<<" " ;
cout<<"*/n" ;
}
for(y=0;y>=-1;y-=0.1)
{
m=-asin(y)*10+34;
for(x=1;x<m;x++)
cout<<" " ;
cout<<"*" ;
for(;x<96-m;x++)
cout<<" " ;
cout<<"*/n" ;
}
return 0;
}

 

绘制余弦曲线和直线:

#include<stdio.h>

#include<math.h>

int main()

{

double y;

int x,m,n,yy;

for(yy=0;yy<=20;yy++)

{

y=0.1*yy;

m=acos(1-y)*10;

n=45*(y-1)+31;

for(x=0;x<=62;x++)

if(x==m&&x==n) printf("+");

else if(x==n) printf("+");

else if(x==m||x==62-m) printf("*");

else printf(" ");

printf("/n");

}

return 0;

}

 

sin(x)曲线与cos(x)曲线图形的同时显示

#include <iostream>
#include<math.h>
int main()
{
double y;
int x,m,m1;
using namespace std;
for(y=1;y>=-1;y-=0.1)
{
m1=acos(y)*10;
   if(y>0)
{
m=asin(y)*10 ;
for(x=1;x<=62;x++)
if(x==m||x==32-m||x==m1||x==60-m1)
cout<<"*" ;
else
cout<<" " ;
cout<<endl ;
}
   else
{
m=-asin(y)*10+32;
for(x=1;x<62;x++)
if(x==m||x==96-m||x==m1||x==60-m1)
cout<<"*" ;
else
cout<<" " ;
cout<<endl ;
}
}
return 0;
}

绘制圆

#include<stdio.h>
#include<math.h>
int main()
{
double y;
int x,m;
for(y=10;y>=-10;y--)
{
m=2.5*sqrt(100-y*y); /*计算行y对应的列坐标m,2.5是屏幕纵横比调节系数因为屏幕的行距大于列距,不进行调节显示出来的将是椭圆*/
for(x=1;x<30-m;x++) printf(" "); /*图形左侧空白控制*/
printf("*"); /*圆的左侧*/
for(;x<30+m;x++) printf(" "); /*图形的空心部分控制*/
printf("*/n"); /*圆的右侧*/
}
return 0;
}

阶乘尾数零的个数
#include <math.h>
#include <stdio.h>
main()
{
int i ,m, n,j;
int cnt=j=0;
printf("输入一个数:/n");
scanf("%d",&n);
m=n;
while(m/5)
{
j++;
m/=5;
}
for(i=1;i<=j;i++)
{
m=pow(5,i);
cnt+=n/m;
}
printf("%d的阶乘的尾部0的个数为:%d/n",n,cnt);
}

阶乘尾数零的个数优化

这个写的还算有点水平,呵呵!

#include <stdio.h>
main()
{int cnt=0,n;
printf("输入一个数,计算尾部零的个数:/n");
scanf("%d",&n);
while(n)
{n/=5;
cnt+=n ;}
printf("尾部零的个数为:%d/n",cnt);
}

借书方案

 

 

自己写的算法

#include<stdio.h>
void printb(int,int);
int main()
{
int x,int aa[32],p,cnt=sizeof(int)*8,i,n;
printf("Input number:");
scanf("%d",&x);
printf("number of decimal form:%d/n",x);
if(x<0)
{
p=1;
    x=-x;
}
for(i=0;i<cnt;i++)
aa[i]=0 ;
i=cnt ;
while(x)
{
i-- ;
aa[i]=x%2 ;
x=x/2 ;
}

//对负数求原码
if(p==1)
{
for(i=cnt;i>=0;i--)
if(aa[i]==0)
aa[i]=1;
else
aa[i]=0 ;


for(i=cnt;aa[i]==1&&i>=0;i--)
aa[i]=0 ;
aa[i]=1 ;
}
printf(" it's binary form:");

for(i=0;i<cnt;i++)
printf("%d",aa[i]);

}

 

int main()

{

int a,b,c,count=0;

printf("There are diffrent methods for XM to distribute books to 3 readers:/n");

for(a=1;a<=5;a++) /*穷举第一个人借5本书中的1本的全部情况*/

for(b=1;b<=5;b++) /*穷举第二个人借5本书中的一本的全部情况*/

for(c=1;a!=b&&c<=5;c++) /*当前两个人借不同的书时,穷举第三个人借5本书

中的1本的全部情况*/

if(c!=a&&c!=b) /*判断第三人与前两个人借的书是否不同*/

printf(count%8?"%2d:%d,%d,%d ":"%2d:%d,%d,%d/n ",++count,a,b,c);

/*打印可能的借阅方法*/

}

杨辉三角

#include<stdio.h>
int c(int x,int y) ;
int main()
{
int i,j,n;
printf("N="); //12行以内,多则堆积
scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/
for(i=0;i<=n;i++) /*控制输出N行*/
{
for(j=0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/
for(j=1;j<i+2;j++) printf("%4d",c(i,j)); /*输出第i行的第j个值*/
printf("/n");
}
}

int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/
{
int z;
if((y==1)||(y==x+1)) return 1; /*若为x行的第1或第x+1列,则输出1*/
z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/
return z;
}

数制转换

 

 

 

#include<stdio.h>
void printb(int,int);
int main()
{
int x;printf("Input number:");
scanf("%d",&x);
printf("number of decimal form:%d/n",x);
printf(" it's binary form:");
printb(x,sizeof(int)*8);
putchar('/n');
}

void printb(int x,int n)
{
if(n>0)
{
putchar('0'+((x& (unsigned)(1<<(n-1)) ) >>(n-1) ));
printb(x,n-1);
}
}

自己写的数制转换

#include<stdio.h>
void printb(int,int);
int main()
{
int x,int aa[32],p,cnt=sizeof(int)*8,i,n;
printf("Input number:");
scanf("%d",&x);
printf("number of decimal form:%d/n",x);
if(x<0)
{
p=1;
    x=-x;
}
for(i=0;i<cnt;i++)
aa[i]=0 ;
i=cnt ;
while(x)
{
i-- ;
aa[i]=x%2 ;
x=x/2 ;
}

//对负数求原码
if(p==1)
{
for(i=cnt;i>=0;i--)
if(aa[i]==0)
aa[i]=1;
else
aa[i]=0 ;


for(i=cnt;aa[i]==1&&i>=0;i--)
aa[i]=0 ;
aa[i]=1 ;
}
printf(" it's binary form:");

for(i=0;i<cnt;i++)
printf("%d",aa[i]);

}

C/C++语言经典实用趣味程序设计编程百例C/C++语言经典实用趣味程序设计编程百例(1)1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 7.阶乘尾数零的个数 8.借书方案知多少 9.杨辉三角形 10.数制转换 C/C++语言经典实用趣味程序设计编程百例(2)11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 17.平分七筐鱼 18.有限5位数 19.8除不尽的自然数 20.一个奇异的三位数C/C++语言经典实用趣味程序设计编程百例(3)21.4位反序数 22.求车速 23.由两个平方三位数获得三个平方二位数 24.阿姆斯特朗数 25.完全数 26.亲密数 27.自守数 28.回文数 29.求具有abcd=(ab+cd)2性质的四位数 30.求素数 C/C++语言经典实用趣味程序设计编程百例(4)31.歌德巴赫猜想 32.可逆素数 33.回文素数 34.要发就发 35.素数幻方 36.百钱百鸡问题 37.爱因斯坦的数学题 38.换分币 39.年龄几何 40.三色球问题C/C++语言经典实用趣味程序设计编程百例(5)41.马克思手稿中的数学题 42.最大公约数和最小公倍数 43.分数比较 44.分数之和 45.将真分数分为埃及分数 46.列出真分数序列 47.计算分数的确值 48.新娘和新郞 49.委派任务 50.谁在说谎 C/C++语言经典实用趣味程序设计编程百例(6)51.谁是窃贼 52.黑与白 53.迷语博士的难题(1) 54.迷语博士的难题(2) 55.哪个大夫哪天值班 56.区分旅客国籍 57.谁家孩子跑最慢 58.拉丁方阵 59.填表格 60.1~9分成1:2:3的三个3位数 C/C++语言经典实用趣味程序设计编程百例(7)61.1~9组成三个3位的平方数 62.由8个整数形成奇特的立方体 63.减式还原 64.乘式还原 65.乘式还原(2) 66.除式还原(1) 67.除式还原(2) 68.九位累进可除数 69.魔术师的猜牌术(1) 70.魔术师的猜牌术(2) C/C++语言经典实用趣味程序设计编程百例(8)71.约瑟夫问题 72.邮票组合 73.和数能表示1~23的5个正整数 74.可称1~40磅的4块砝码 75.10个小孩分糖果 76.小明买书 77.波松瓦酒的分酒趣题 78.求π的近似值 79.求π的近似值(2) 80.奇数平方的一个有趣性质 C/C++语言经典实用趣味程序设计编程百例(9)81.角谷猜想 82.四方定理 83.卡布列克常数 84.尼科彻斯定理 85.回文数的形成 86.自动发牌 87.黑白子交换 88.常胜将军 89.抢30 90.搬山游戏 C/C++语言经典实用趣味程序设计编程百例(10)91.人机猜数游戏 92.人机猜数游戏(2) 93.汉诺塔 94.兎子产子 95.将阿拉伯数字转换为罗马数字 96.选美比赛 97.满足特异条件的数列 98.八皇后问题 99.超长正整数的加法 100.数字移动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值