我是编码和尝试完成作业的初学者。
虽然我已经解决了我的问题,但在这样做的时候,我遇到了意想不到的\ t。我在这里得到了不同的标签长度\ t \ t。这是我的代码:
#include<stdio.h>
int calculate_intpart_qutent(int dividend, int diviser);
int main()
{
int a;
int b;
int choice;
do
{
printf("Enter the Dividend (a) :\t");
scanf("%d", &a);
printf("\nEnter the Divisor (b) :\t");
scanf("%d", &b);
printf("\n\nThe quotient is:\t%d", calculate_qutent(a, b));
printf("\n\nDo you want to try again?(Y\\N):\t");
choice = getchar();
if (choice == '\n') choice = getchar();
printf("\n\n\n");
} while (choice=='y'|| choice=='Y');
}
int calculate_intpart_qutent(int dividend, int diviser)
{
return (dividend/diviser);
}
这是我的输出:
由于我在两个第一个printf语句中使用了单选项卡,为什么我在输出屏幕上获得不同的选项卡长度?我在这里做错了什么?
在你投票并埋葬这个问题之前,请考虑我是C的初学者。任何帮助将不胜感激。
我正在使用Visual Studio 2017 RC。
答案 0 :(得分:5)
由于我在两个第一个printf语句中使用了单选项卡,为什么我在输出屏幕上获得不同的选项卡长度?
使用标签won't guarantee打印的空格数。
如果您想要printf
中的固定长度,请尝试使用%-30s
之类的内容。它保证打印的字符串有30个空格,-
表示左对齐。
printf("%-30s", "Enter the Dividend (a) :");
scanf("%d", &a);
printf("\n%-30s", "Enter the Divisor (b) :");
scanf("%d", &b);
答案 1 :(得分:3)
'\ t'字符会将文字与下一个'\ t'停止对齐。在您的情况下,Tab每隔8个字符停止一次。
printf("Enter the Dividend (a) :\t");
'\ t'之前的字符数等于24.所以下一个'\ t'将在8 * 4 = 32nd Position处对齐。
printf("\nEnter the Divisor (b) :\t");
'\ t'= 23之前的字符数。因此,下一个'\ t'将在8 * 3 =第24位置对齐。
这不是问题,你没有做错。您需要了解标签在终端中的行为方式(因为用户可以更改标签宽度)。您可以删除'\ t'并在printf语句中使用固定长度,如@artm answer中所述。