整齐地输出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 ...
随机推荐
- 读取计算机的OEM信息
只需要读取注册表里面的值即可 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation\Logo 下面有制 ...
- 学习总结 java 父子级
package com.hanqi; //父类 public class Father { // public Father() // { // // } // public Father(Strin ...
- 洛谷P2738 [USACO4.1]篱笆回路Fence Loops
P2738 [USACO4.1]篱笆回路Fence Loops 11通过 21提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 ...
- idea 下的maven使用问题汇总
1,-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable ...
- PL/SQL中查询某的时间段内所有执行的sql
清空缓存,重新开始统计执行的SQL alter system flush shared_pool; 查询执行过的SQL select * from v$sql where parsing_schema ...
- 新安装的ubuntu系统如何设置中文输入法的方案
本文是本人写的第一篇的linux博客,因为很菜,所以就把刚才自己安装中文输入法的过程给大家介绍一下,希望有所帮助. 1.首先,打开命令终端,两种方式,在Dash里面输入terminal然后enter, ...
- Leetcode049. Group Anagrams
//hashmap implement with STL class Solution { public: vector<vector<string>> groupAnagra ...
- JSON时间转换格式化
通常JSON时间一般是这样的格式. 1 /Date(1436595149269)/ 通常我们用AJAX获取下来的JSON数据,如果有时间,都是这种格式的.其中,中间的一段数字"1436595 ...
- StackExchange.Redis使用和封装小试
StackExchange.Redis使用和封装小试 https://git.oschina.net/Ultralisk/ThorActor/blob/ThorActor/DBUtility/Redi ...
- [zt]Which are the 10 algorithms every computer science student must implement at least once in life?
More important than algorithms(just problems #$!%), the techniques/concepts residing at the base of ...