user-0 提问: 求助，输出不了

回复:
user: user-0
content: #include<stdio.h> int main() { 	int a, b, c, kase = 0; 	while(scanf("%d%d%d", &a, &b, &c) == 1) 	{ 		for(int i = 10; i < 100; i++) 		  if(i % 3 ==a && i % 5 == b && i % 7 == c) 		  printf("Case %d:%d\n", ++kase, i); 		  else 		  printf("Case %d:No answer\n", ++kase); 	} }

user: user-1
content: #include <stdio.h> int main() {     double a, b, c;      printf("Input 3 float number:\n");     if (3==scanf("%lf%lf%lf", &a, &b, &c)) {         printf("sum:%g\n", a + b + c);         printf("avg:%g\n", (a + b + c) / 3.0);     } else {         printf("format error!\n");     }      return 0; } //C:\test>test //Input 3 float number: //1.1 2.22 3.333 //sum:6.653 //avg:2.21767 // //C:\test>test //Input 3 float number: //a b c //format error! // //C:\test>

user: user-0
content: 有人解答吗？

user: user-0
content: 平均数呢？嗯？

user: user-0
content: ok，呵呵呵。

user: user-2
content: 楼主你的输入写的有问题，double类型的用    lf，     float类型的用   f，而你在 f  前加了一个数字是想让输入的数占固定的位数还是怎么样？这种写法据我所知是错误的！

user: user-3
content: 浮点型和整形在二进制存储格式不同

user: user-3
content: scanf("%d", &r); 改成 scanf("%f", &r); %d是整形格式，%f才是双精度型

user: user-0
content: #include<stdio.h> int main() { 	double r, c, s; 	scanf("%d", &r); 	c = 6.28*r; 	s = 3.14*r*r; 	printf("c = %.2f, ", c); 	printf("s = %.2f.\n", s); 	return 0; }

user: user-3
content: 还有一个什么问题？

user: user-0
content: 谢谢。还有一个呢？

user: user-3
content: printf("%d", ABC); 改成  printf("%d\n", ABC);  将多个输出结果分开再看看

user: user-0
content: #include<stdio.h>  int main()  {  for (int a = 1; a <= 9; a++)  for (int b = 0; b <= 9; b++)  for (int c = 0; c <= 9; c++)  {  int ABC = a * 100 + b * 10 + c;  if (ABC < 100) continue;  if (ABC > 999) break;  if (ABC == a * a * a  + b * b * b + c * c * c) printf("%d", ABC);  }  return 0;  }  这个输出153370371407。

user: user-0
content: 输出为0.000 是这个 #include<stdio.h>  int main()  {  double a, b, c;  scanf("%1f%1f%1f", &a, &b, &c);  printf("%.3f\n", (a + b + c) / 3.000);  return 0;  }

user: user-0
content: 只有"%d\n"才出正常的数。

user: user-3
content: printf("%d", ABC); 怎么会输出0.000？？？

user: user-0
content: 重新 #include<stdio.h> int main() { 	double a, b, c; 	scanf("%1f%1f%1f", &a, &b, &c); 	printf("%.3f\n", (a + b + c) / 3.000); 	return 0; }

user: user-0
content: 输出为0.000

user: user-0
content: #include<stdio.h> int main() { 	for (int a = 1; a <= 9; a++) 		for (int b = 0; b <= 9; b++) 			for (int c = 0; c <= 9; c++) 			{ 				int ABC = a * 100 + b * 10 + c; 				if (ABC < 100) continue; 				if (ABC > 999) break; 				if (ABC == a * a * a  + b * b * b + c * c * c) printf("%d", ABC); 			} 	return 0; }

user: user-1
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  scanf Width Specification width is a positive decimal integer controlling the maximum number of characters to be read from stdin. No more than width characters are converted and stored at the corresponding argument. Fewer than width characters may be read if a white-space character (space, tab, or newline) or a character that cannot be converted according to the given format occurs before width is reached.  The optional prefixes h, l, I64, and L indicate the “size” of the argument (long or short, single-byte character or wide character, depending upon the type character that they modify). These format-specification characters are used with type characters in scanf or wscanf functions to specify interpretation of arguments as shown in the Table R.7. The type prefixes h, l, I64, and L are Microsoft extensions and are not ANSI-compatible. The type characters and their meanings are described in Table R.8.  Table R.7   Size Prefixes for scanf and wscanf Format-Type Specifiers  To Specify Use Prefix With Type Specifier  double l e, E, f, g, or G  long int l d, i, o, x, or X  long unsigned int l u  short int h d, i, o, x, or X  short unsigned int h u  __int64 I64 d, i, o, u, x, or X  Single-byte character with scanf h c or C  Single-byte character with wscanf h c or C  Wide character with scanf l c or C  Wide character with wscanf l c, or C  Single-byte – character string with scanf h s or S  Single-byte – character string with wscanf h s or S  Wide-character string with scanf l s or S  Wide-character string with wscanf l s or S    Following are examples of the use of h and l with scanffunctions and wscanf functions:  scanf( "%ls", &x );    // Read a wide-character string wscanf( "%lC", &x );    // Read a single-byte character  To read strings not delimited by space characters, a set of characters in brackets ([ ]) can be substituted for the s (string) type character. The corresponding input field is read up to the first character that does not appear in the bracketed character set. If the first character in the set is a caret (^), the effect is reversed: The input field is read up to the first character that does appear in the rest of the character set.  Note that %[a-z] and %[z-a] are interpreted as equivalent to %[abcde...z]. This is a common scanf function extension, but note that the ANSI standard does not require it.  To store a string without storing a terminating null character ('\0'), use the specification %nc where n is a decimal integer. In this case, the c type character indicates that the argument is a pointer to a character array. The next n characters are read from the input stream into the specified location, and no null character ('\0') is appended. If n is not specified, its default value is 1.  The scanf function scans each input field, character by character. It may stop reading a particular input field before it reaches a space character for a variety of reasons:   The specified width has been reached.   The next character cannot be converted as specified.   The next character conflicts with a character in the control string that it is supposed to match.    The next character fails to appear in a given character set.  For whatever reason, when the scanf function stops reading an input field, the next input field is considered to begin at the first unread character. The conflicting character, if there is one, is considered unread and is the first character of the next input field or the first character in subsequent read operations on stdin.