大佬们好!我想问下while(条件) 条件里用scanf的问题
查看原帖
大佬们好!我想问下while(条件) 条件里用scanf的问题
99244
我是大帅比ZED楼主2022/10/16 23:01

疑惑:

1.while (条件)

  此处条件为何不能 用scanf("%c", &right);来实现
  而是取用cin?
  1.1 如果我想用scanf 又该如何处理呢?

2.cout << sqrt(n);

  为何我直接用printf("%d", sqrt(n));系统却会报错?然后输出不了
  2.1 解决方法难道只有 用cout 或者 定义一个新的变量来解决吗?

报错原因

[警告] format '%d' expects argument of type 'int', but argument 2 has type '__gnu_cxx::__enable_if<true, double>::__type' {aka 'double'} [-Wformat=]

#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;

int main (void)
{
	int n = 0;//读入n个数 最后输出 n^0.5
	
	int point = 1, count[200*200+1] = {0};//point 代表指向count数组 用来计数0或1 单次累计
	char left = '0', right;//题目先从0开始读入 所以先给left附上0
	while (cin >> right)
	{//疑惑1
		n++;//有多少个数字 就加多少个
		if (right != left)//如一直读入都是0 突然出现1了 那么point 该下一位了
		{
			point ++;
			count[point]++;
		}
		else
		{//否则继续累加
			count[point]++;
		}
		left = right;//向右滚动
	}
	
	//以下是疑惑2
	//int n2 = sqrt(n);printf("%d", n2);
	//printf("%d", sqrt(n));
	cout << sqrt(n);
	for (int i=1; i<=point; i++)
		printf(" %d", count[i]);
	
	return 0;
}
2022/10/16 23:01
加载中...