【C语言】实例:整齐地输出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;
for(i = 10,i_wide = 1;;i *= 10,i_wide++)
	if((i_num / i) == 0) 
                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;
	for(i = 10,i_wide = 1;;i *= 10,i_wide++)
		if((i_num / i) == 0) break;
	return i_wide;
}

int main(int argc,char *argv[])
{
	int i_wide[3]; //分别存储n,n^2,n^3三个数据的宽度 
	int i_top,i_bottom,i_flag; //表格的上下限和增长标记 
	
	printf("Please input top and bottom(\'q\' to quit):"); 
	while(scanf("%d%d",&i_top,&i_bottom) == 2){
		if(i_top == i_bottom)
			continue;
		else if(i_top > i_bottom){ //测试上限字宽 
			i_flag = -1;
			i_wide[0] = numlen(i_top);
			i_wide[1] = numlen(i_top * i_top);
			i_wide[2] = numlen(i_top * i_top * i_top);
		}	
		else{ //测试下限字宽 
			i_flag = 1;
			i_wide[0] = numlen(i_bottom);
			i_wide[1] = numlen(i_bottom * i_bottom);
			i_wide[2] = numlen(i_bottom * i_bottom * i_bottom);
		}
		printf("%*s %*s %*s\n",i_wide[0],"n",i_wide[1],"n^2",i_wide[2],"n^3"); //整齐地输出表头 
		for(;;i_top += i_flag){
			printf("%*d %*d %*d\n",
			i_wide[0],i_top,i_wide[1],i_top * i_top,i_wide[2],i_top * i_top * i_top);
			//整齐地输出表格 
			if(i_top == i_bottom) 
				break;
		}
		printf("Please input top and bottom(\'q\' to quit):"); 
	}
	getch();
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是使用 C 语言代码实现该功能的示例: ``` #include <stdio.h> int main(void) { int year; printf("请输入年份:"); scanf("%d", &year); if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { printf("0\n"); } else { printf("1\n"); } return 0; } ``` 该代码提示用户输入一个年份,然后判断该年份是否为闰年。如果是闰年,则输出 `0`;否则输出 `1`。 ### 回答2: 使用C语言可以编写一个程序,使其输入为2030,输出为0。 以下是一种可能的解决方案: ```c #include <stdio.h> int main() { int num; printf("请输入一个数: "); scanf("%d", &num); // 判断输入的数是否等于2030,如果等于则输出0,否则输出其他结果 if (num == 2030) { printf("输出为0"); } else { printf("输出为其他结果"); } return 0; } ``` 运行这个程序时,会先要求用户输入一个数。如果用户输入的数为2030,则输出为0;如果用户输入的数不为2030,则输出为其他结果。 ### 回答3: C语言是一种编程语言,可以用于计算机程序的开发和编写。如果要利用C语言输入2030,并输出0,可以使用以下代码: ```c #include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); if (num == 2030) { printf("输出:0\n"); } return 0; } ``` 以上代码使用了`scanf`函数来从用户输入获取一个整数,并将该整数存储在`num`变量中。接下来,使用条件判断语句`if`来判断`num`是否等于2030。如果是,就输出0。 在程序运行时,会先输出提示信息`请输入一个整数:`,然后等待用户的输入。如果用户输入2030,程序会输出`输出:0`;如果用户输入其他任何数,程序不会输出任何内容。 这样就实现了利用C语言输入2030,然后输出0的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值