四.例子:
/*
编写一个程序,以小数形式输出一个分数。用户输入分母和分子,表示一个分数形式的数值,用户输入小数位数后,程序以小数形式输出分子的计算结果。程序需要满足以下条件
()用户输入分母、分子和输出位数;
()保证输入的数值为大于的整数。
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void GetFloat(int x, int y, char* str, int num)
{
char tmp[30]; //保存转换后的数值
strcat(str, itoa(x/y,tmp,10)); //获取x除以y的整数部分,并将其转换成字符串保存在str中
strcat(str, "."); //加入小数点
int nn = num-strlen(str)-1; //-1去掉'\0' strlen得到的包换结束符
x%=y; //得到x/y的余数部分然后辗转相除
int i=0; //表示已经获取的小数倍数
while(i<nn && (x!=0))
{
x*=10; //将小数位加扩大倍
strcat(str, itoa(x/y, tmp, 10));
x%=y;
i++;
}
}
int main(int argc, char* argv[])
{
int x;//分子
int y;//分母
int num;//输出位数
do
{
printf("输入分子");
scanf("%d", &x);
}while(!(x>=0));
do
{
printf("输入分母");
scanf("%d", &y);
}while(!(y>=0));
do
{
printf("要输出的位数");
scanf("%d", &num);
}while(!(num>=0));
char* str = new char[num]; //申请保存结果的内在空间
memset(str, 0, num); //初始化内在空间
GetFloat(x, y, str, num);
printf("%s\n", str);
delete[] str;//释放堆中数据
getchar();
getchar();
return 0;
}
五.例子
/*
编写一个程序,输出由字母组成的“字母塔”。例如:输入C,则输出:
A
ABA
ABCBA
*/
#include <stdio.h>
int main(int argc, char* argv[])
{
char ch;
int i,j;
printf("请输入一个字母");
scanf("%c", &ch);
if(ch>='A' && ch<='Z')
{
//for(i='A';i<=ch;i++) //小堆 从A开始到指定字母
for(i=ch;i>='A';i--) //大堆
{
for(j=ch;j>=i;j--) //空格反向输出
{
printf(" ");
}
for(j='A';j<i;j++) //A小于指定字母
{
printf("%c", j);
}
for(;j==i;j--) //A等于指定字母
{
printf("%c", j);
}
for(;j>='A';j--) //A大于指定字母
{
printf("%c", j);
}
printf("\n"); //一行结束输出换行
}
}
getchar();
return 0;
}
六.
射耙问题:
##################到网上找找如何输出结果#############
#include <iostream>
using namespace std;
void step(int n, int &l)
{
if( n==0 )
l++;
if( n>=8 )
step(n-8, l);
if( n>=9 )
step(n-9, l);
if( n>=10 )
step(n-10, l);
}
int main(int argc, char* argv[])
{
int n = 100;
int l=0;
step(n, l);
cout << "情况次数为:" << l << endl;
return 0;
}
射耙问题 字母塔 分母和分子
最新推荐文章于 2017-12-22 09:55:49 发布