C语言中从键盘上输入字符变量的值时,若指定宽度,那么宽度有没有限制?

例如:
#incude <stdio.h>
main()
{char a,b,c,d;
scanf("%2c%3c%4c%5c",&a,&b,&c,&d);
printf("a=%c,b=%c,c=%c,d=%c\n",a,b,c,d);}

为什么最后所得到的C的值都不正确呢?

第1个回答  2009-12-14
你用的是%c,c是字符而不是字符串,只表示一个字符,不能声明宽度,因此你的宽度声明是无效 的
第2个回答  2009-12-13
一个字符型变量只能表示一个字符 不能对它指定宽度的
第3个回答  2009-12-13
scanf("%2c%3c%4c%5c",&a,&b,&c,&d);
%c只输入或输出一个字符
输入abcdefghi则a='a',b='b',c='c',d='d'本回答被网友采纳
第4个回答  2009-12-13
都可以的啊

C语言中从键盘上输入字符变量的值时,若指定宽度,那么宽度有没有...
你用的是%c,c是字符而不是字符串,只表示一个字符,不能声明宽度,因此你的宽度声明是无效 的

c语言中宽度精度问题
在C语言中,精度和宽度问题涉及到数据类型和printf函数的格式控制。通常,int类型只能存储整数值,不能表示小数。当你尝试使用%.2f格式输出一个int类型的变量时,程序会报错,因为你不能将int转换为浮点数来使用该格式。正确做法是定义变量为float类型,如float a=20.526,b=20.533;然后使用%.2f格式打...

c语言中scanf(“%2d%*2d%2d”,&a,&b);若要输入123456789 则变量a和
scanf可以指定输入的宽度,比如scanf(“%2d",&a);就是把输入数据的前两位赋值给a。scanf可以用“*”跳过指定的宽度,比如scanf(“%2d%*2d%2d”,&a,&b);就是把输入数据的前两位12赋值给a,然后跳过34两位,最后把下面两位56赋给b。scanf函数遇到空格和非法输入时结束,并且可以指定输入宽度。

c语言中scanf函数定义宽度的问题
你问题的第二种情况是说如果输入多个字符类型数据的情况。如果是这样,请注意,除非,如果scanf后面的格式是%c的,那么它只能吸收你输入的一个字符,后面的东西全部放在缓存区。也就是说,你再接上一个scanf( "%c", &c),它会继续吸收你前面没有吸收到的字符。如果下面语句段:scanf( "%c", ch1...

C语言中字符变量数值取值范围。
在C语言中一般char类型占1个字节,即8个二进制bit位,每1位有0或者1两种值,使用乘法原理,排列组合数为2^8 = 256种排列数。如果是无符号char类型,即unsigned char类型,可以表示【0,255】共256个无符号数。如果是有符号char类型,即signed char或者char类型,可以表示【-128,127】,共256个有...

c语言 从键盘上输入一个浮点数,把他以科学计数法的形式输出,要求宽度...
共用体是类部成员共同使用同一内存区域,你在该区域存储的是整形的变量97,然后该区域在通过浮点数存储的方法来读出浮点数,结果得到了0.

C语言关于scanf函数的问题?
是通过十进制整数3指定输入的宽度,即字符数,超出部分不赋值,故题中只把123赋值给a。scanf("%3c",&ch);通常%3c可以用来读入三个连续的字符,由于这里ch是一个变量,而不是一个数组,所以只能放下一个字符,即题中将4作为一个字符型数据,赋值给ch变量。超出的部分没有被保存,所以不显示。如果有...

...标准C语言中输出函数printf中的格式化字符串的二部分内容的例子...
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。⑤c格式:输出一个字符。⑥s格式:用来输出一个串。有几中用法 s:...

用c语言编程,计算f(x)的值。要求从键盘上输入x的值,精度控制在0.001内...
C语言中,一般用scanf ("%d",&a);来读取从键盘上输入的数字,其中a为已定义变量 在输出时 printf(''%.3f'',f(x));可以使精确度控制在0.001内

c语言中如何用printf输出一个小于7的值。
求 s = m! + n! + k!,m、n、k 从键盘输入(值均小 于 7)。int fun(int m);int main(){ int m,n,k;int s;printf("请输入三个小于7的数:");scanf("%d %d %d",&m,&n,&k);s=fun(m)+fun(n)+fun(k);printf("%d\\n",s);return 0;} int fun(int m){ int i;in...

相似回答
大家正在搜