scanf("%c",&arr[i])!="\n"为什么报错
时间: 2024-04-15 11:22:02 浏览: 21
scanf("%c",&arr[i])!="\n"这段代码报错的原因是因为scanf函数的返回值是成功读取的参数个数,而不是一个布尔值。所以不能将scanf函数的返回值与"\n"进行比较。
如果你想判断输入的字符是否为换行符"\n",可以使用以下方式:
```c
char c;
scanf(" %c", &c); // 注意空格,避免读取到之前的换行符
if (c == '\n') {
// 输入的是换行符
} else {
// 输入的不是换行符
}
```
相关问题
检查下面的代码,如果有错误请指出,并且改正:#include<stdio.h> int main() { int num; scanf("%d",&num); int a=num/1000; int b=num/100&10; int c=num/10%10; int d=num%10; while(a!=b ||a!=c||a!=d||b!=c||b!=d||c!=d){ int arr[4]={a,b,c,d}; for(int i=0;i<3;i++) { for(int j=i+1;j<4;j++) { if(arr[i]<arr[j]) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } int max=arr[0]*1000+arr[1]*100+arr[2]*10+arr[3]; int min=arr[3]*1000+arr[2]*100+arr[1]*10+arr[0]; num=max-min; printf("%d-%d=%d\n",max,min,num); a=num/1000; b=num/100%10; c=num/10%10; d=num%10; } printf("%d\n",num); return 0; }
检查后发现代码中有一个错误,即在计算变量 b 的值时,应该使用括号来确保运算的顺序,而不是使用 & 符号。因此,将第 6 行的代码修改为:
```
int b=(num/100)%10;
```
修改后的代码如下:
```
#include <stdio.h>
int main()
{
int num;
scanf("%d", &num);
int a = num / 1000;
int b = (num / 100) % 10;
int c = (num / 10) % 10;
int d = num % 10;
while (a != b || a != c || a != d || b != c || b != d || c != d)
{
int arr[4] = {a, b, c, d};
for (int i = 0; i < 3; i++)
{
for (int j = i + 1; j < 4; j++)
{
if (arr[i] < arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
int max = arr[0] * 1000 + arr[1] * 100 + arr[2] * 10 + arr[3];
int min = arr[3] * 1000 + arr[2] * 100 + arr[1] * 10 + arr[0];
num = max - min;
printf("%d-%d=%d\n", max, min, num);
a = num / 1000;
b = (num / 100) % 10;
c = (num / 10) % 10;
d = num % 10;
}
printf("%d\n", num);
return 0;
}
```
#include<stdio.h> int main(){ int m,n; int avg,sum=0; while(scanf("%d%d",&n,&m)!=EOF) { int arr[n]; int i=0,ii=0; for(int i=0;i<n;i++) { arr[0]=2; arr[i+1]=arr[i]+2; } for(int i=ii;i<n-2;i++){ for(int j=ii;j<ii+m;j++) { sum+=arr[j]; } avg=sum/m; printf("%d ",avg); ii+=m; sum=0; if(n%m!=0) { for(int i=ii;i<n;i++) { sum+=arr[i]; } avg=sum/(n-ii); printf("%d\n",avg); } } } }
您的代码有一些问题。首先,在循环中创建数组的语法是不正确的。在C语言中,不允许使用变量来定义数组的大小。您可以使用动态内存分配来解决这个问题。其次,在循环中,您错误地将arr[0]的值设置为2,并在后面的迭代中重复设置相同的值。应该是arr[i] = arr[i-1] + 2。最后,在处理剩余元素时,计算平均值的代码逻辑有误。
以下是修复后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n;
int avg, sum = 0;
while (scanf("%d%d", &n, &m) != EOF) {
int *arr = (int*)malloc(sizeof(int) * n);
arr[0] = 2;
for (int i = 1; i < n; i++) {
arr[i] = arr[i - 1] + 2;
}
int ii = 0;
for (int i = ii; i < n - m + 1; i += m) {
for (int j = i; j < i + m; j++) {
sum += arr[j];
}
avg = sum / m;
printf("%d ", avg);
sum = 0;
}
if (n % m != 0) {
for (int i = ii + (n - ii) / m * m; i < n; i++) {
sum += arr[i];
}
avg = sum / (n - ii - (n - ii) / m * m);
printf("%d\n", avg);
}
free(arr);
}
}
```
这个修复后的代码可以接受输入的两个整数n和m,并根据规定的算法计算出平均值并打印出来。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)