|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define N 7 //定义符号常量N
- void main()
- {
- double w[N] = { 2.6,7.3,4.2,5.4,6.2,3.8,1.4 }; //定义一个数组w并赋初值
- double a[N], x;
- int i, count = 0;
- printf("%s", "输入一个实数:"); //也可写成:printf("输入一个实数:”)
- scanf_s("%1f", &x);
- for (i = 0; i < N; i++)
- /*请在下面空白处补充程序*/
- {
- if (w[i] > x)
- {
- a[count] = w[i];
- count++;
- }
- }
- printf("count=%d\n", count);
- /*请在上面面空白处补充程序*/
- for (i = 0; i < count; i++) //输出所有大于x的数组元素
- {
- printf("%.1lf\n", a[i]);
- printf("\n");
- }
- }
复制代码
问题:为什么无法正确运行这个程序?
答案:这个程序有两个问题。
首先,scanf_s函数的格式化字符串应该是"%lf"而不是"%1f",因为我们要读取一个double类型的变量x。
其次,在第二个for循环中,printf("\n")应该在循环外面,否则每次循环都会输出一个空行。
以下是修改后的代码:
- #include <stdio.h>
- #define N 7
- void main()
- {
- double w[N] = { 2.6,7.3,4.2,5.4,6.2,3.8,1.4 };
- double a[N], x;
- int i, count = 0;
- printf("%s", "输入一个实数:");
- scanf_s("%lf", &x);
- for (i = 0; i < N; i++)
- {
- if (w[ i] > x)
- {
- a[count] = w[ i];
- count++;
- }
- }
- printf("count=%d\n", count);
- for (i = 0; i < count; i++)
- {
- printf("%.1lf\n", a[ i]);
- }
- printf("\n");
- }
复制代码
|
|