射耙问题 字母塔 分母和分子
来源:互联网 发布:淘宝的买家中心在哪里 编辑:程序博客网 时间: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;}