射耙问题 字母塔 分母和分子

来源:互联网 发布:淘宝的买家中心在哪里 编辑:程序博客网 时间:2024/04/30 16:28
四.例子:/*编写一个程序,以小数形式输出一个分数。用户输入分母和分子,表示一个分数形式的数值,用户输入小数位数后,程序以小数形式输出分子的计算结果。程序需要满足以下条件()用户输入分母、分子和输出位数;()保证输入的数值为大于的整数。*/#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;}

原创粉丝点击