整齐地输出n的平方,立方
初学C语言,有许多搞不明白的地方。编程,最重要的就是实践。今天,我偶然间看到书上的练习,做了一个能整齐地输出n,n的平方,n的立方的小程序。首先,我先用伪代码设计程序:
提示用户输入表格上限,下限或退出
循环:检测输入是否正确{
测试字宽 //为了输出更好看
按照字宽打印表头
循环:按照字宽输出数据
提示用户输入表格上限,下限或退出
}
然后,我设计了一个函数来测试数字的字宽(这里指数字所占的显示宽度,如123占3个单位,123456占6个单位)。通过笔算得出如下结论:数字[abcd](a,b,c,d均为大于0小于10的整数)可以表示为1000a+100b+10c+d,它占了四个单位;数字[abc]可以表示为100a+10b+c,它占了3个单位。观察得出,所占字宽就是以10为底最高位数字系数的对数+1。由此我们可以设立一个循环,来求出字宽,代码如下:
int i,i_wide; ,i_wide = ;;i *= ,i_wide++) ) break;
这样就巧妙地计算出了字宽。
解决了字宽的问题,似乎其他问题就好办多了。但是要注意,如果用户输入的上限是1,下限是10,那么输出字宽就是下限的字宽;但是,如果输入的上限是10,下限是1,这时输出字宽就是上限的字宽,如果这时还用下限的字宽,就会把数字输出得乱七八糟,这里就要用if语句。按照字宽来输出,我们需要用printf() 加 *修饰符(自定义输出的字宽,如printf("%*d",wide,num);)。
下面就是完整的程序代码了,如果有缺陷,请批评指出。
#include <stdio.h> #include <stdlib.h> int numlen(int i_num) //测试数字所占字宽 { int i,i_wide; ,i_wide = ;;i *= ,i_wide++) ) break; return i_wide; } int main(int argc,char *argv[]) { ]; //分别存储n,n^2,n^3三个数据的宽度 int i_top,i_bottom,i_flag; //表格的上下限和增长标记 printf("Please input top and bottom(\'q\' to quit):"); ){ if(i_top == i_bottom) continue; else if(i_top > i_bottom){ //测试上限字宽 i_flag = -; i_wide[] = numlen(i_top); i_wide[] = numlen(i_top * i_top); i_wide[] = numlen(i_top * i_top * i_top); } else{ //测试下限字宽 i_flag = ; i_wide[] = numlen(i_bottom); i_wide[] = numlen(i_bottom * i_bottom); i_wide[] = numlen(i_bottom * i_bottom * i_bottom); } printf(],],],"n^3"); //整齐地输出表头 for(;;i_top += i_flag){ printf("%*d %*d %*d\n", i_wide[],i_top,i_wide[],i_top * i_top,i_wide[],i_top * i_top * i_top); //整齐地输出表格 if(i_top == i_bottom) break; } printf("Please input top and bottom(\'q\' to quit):"); } getch(); ; }
整齐地输出n的平方,立方的更多相关文章
- 从键盘输入数,输出它们的平方值&判断是不是2的阶次方数
1.从键盘输入两个整数,然后输出它们的平方值和立方值 在Java中,没有像C语言那样有一个专供接受键盘输入值的scanf函数,所以一般的做法是从键盘输入一行字符,保存到字符串s中,再将字符组成的字符串 ...
- 【C语言入门教程】3.2 数据的输入 与 输出
在程序的运行过程中,通常需要用户输入一些数据,而程序运算所得到的计算结果等又需要输出给用户,由此实现人与计算机之间的交互.所以在程序设计中,输入输出语句是一类必不可少的重要语句.在 C 语言中,没有专 ...
- Repeater控件的详细用法
中隔行(交替项)呈现一次.通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观. FooterTemplate在所有数据绑定行呈现之后呈现一次的元素.典型的 ...
- 【算法】C语言趣味程序设计编程百例精解
C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1) https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...
- c primer plus(五版)编程练习-第六章编程练习
1.编写一个程序,创建一个具有26 个元素的数组,并在其中存储26 个小写字母.并让该程序显示该数组的内容. #include<stdio.h> #define SIZE 26 int m ...
- 0UE3 材质概要
材质概要 概述 参数 当创建材质时如何考虑颜色 材质表达式 Abs(求绝对值) 添加 AntialiasedTextureMask AppendVector(向量合并) BumpOffset(凸凹偏移 ...
- 探索性数据分析EDA综述
目录 1. 数据探索的步骤和准备 2. 缺失值处理 为什么需要处理缺失值 Why data has missing values? 缺失值处理的技术 3. 异常值检测和处理 What is an ou ...
- Python模块之"prettytable"
Python模块之"prettytable" 摘要: Python通过prettytable模块可以将输出内容如表格方式整齐的输出.(对于用Python操作数据库会经常用到) 1. ...
- 【C语言训练】尼科彻斯定理
题目描述验证尼科彻斯定理,即:任何一个正整数的立方都可以写成一串连续奇数的和. 输入任一正整数 输出该数的立方分解为一串连续奇数的和 样例输入13样例输出13*13*13=2197=157+159+1 ...
随机推荐
- Centos7 Openstack - (第一节)基本环境配置
Centos7 install Openstack - (第一节)基本环境配置 我的blog地址:http://www.cnblogs.com/caoguo 根据openstack官方文档配置 官方文 ...
- 用Ultra ISO制作启动U盘装系统
用UltraISO制作启动U盘可以在没有光驱的情况下装系统. 现在有大容量U盘的越来越多,而且不装光驱的也越来越多. 那么用U盘装系统成为了可能和必须,不多废话了. 首先,需要准备的有: Ultra ...
- eclipse 弹出智能提示、代码自动换行
在eclipse 中编写java 程序时,为了快速查找变量或搜索方法调用,在智能窗口的帮助下,程序的编写速度会更快,但eclipse 默认下并不弹出智能窗口,这就需要自己进行配置,设置的步骤如下: 打 ...
- EXTJS 密码确认与验证
extjs 框架是一个非常优秀的前端框架,提供了丰富的功能与炫丽的界面展示,在用 extjs 创建表单时,特别是在注册或修改密码的时候,要对密码进行确认,这里就密码确认一致性验证和大家分享自己的心得与 ...
- Spring 3.0以后版本的定时任务
自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种 <beans xml ...
- Response.Write页面跳转
一.<a>标签 <a href=”test.aspx”></a> 这是最常见的一种转向方法 二.HyperLink控件 1. Asp.net 服务器端控件 属性 ...
- oracle:触发器,自治事务 trigger
create or replace trigger TRI_FC83_INSERT before insert ON FC83 FOR EACH ROW declare PRAGMA AUTONOMO ...
- 详解Ossim 4.3控制台
在Ossim 4.2以后的发行版中增加了控制台功能下面加以详细说明,当Ossim 启动之后,在控制台以root身份登录系统后会执行ossim-setup脚本,然后显示如下图1所示,了解这些功能,以及操 ...
- ax 的错误处理范例
#OCCRetryCount ; try { ttsbegin; //example as insert or update or delete record ttscommit; } catch(E ...
- vim中查找指定字符串
0x01 自当前光标位置向上搜索 /pattern Enter (pattern表示要搜索的字符串) 0x02 自当前光标位置向下搜索 ?pattern Enter 0x03 n继续从同 ...