求 c 对 scanf 输入检查判断
/*
输入的整数是奇数还是偶数呢
*/
#include <stdio.h>
int main(void)
{
int cont; /* 要继续 */
do {
int *no=(int *)malloc(10); // 原句是 int no;
printf("请输入一个整数: ");
if(scanf("%[a-z]d",&no)) // 原句是 scanf("%d",&no);
puts("error");
else
if (no%2)
puts("这个整数是奇数。");
else
puts("这个整数是偶数。");
printf("要重复一次吗? 【yes...0 / no ... 9]】:");
scanf("%d",&cont);
} while (cont == 0);
return (0);
}
执行出错在,if(no%2)…
cannot use pointers here.
另请问以下一句是什么意思呢?
int *no=(int *)malloc(10);
求解题,谢.
PS. 上述代码,用原句行,
如输入非数字,则会出错。
[解决办法]
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int cont; /* 要继续 */
do {
int *no=(int *)malloc(10); // 原句是 int no;
printf("请输入一个整数: ");
if(scanf("%[a-z]d",&no)) // 原句是 scanf("%d",&no);
puts("error");
else
if ((*no) % 2)
puts("这个整数是奇数。");
else
puts("这个整数是偶数。");
printf("要重复一次吗? 【yes...0 / no ... 9]】:");
scanf("%d",&cont);
} while (cont == 0);
return (0);
}
[解决办法]
1 no你定义的是int型的指针类型,不能直接用地址去计算,
应该是:
(*no) % 2
2 malloc 给 no分配空间,
不过你写的有问题,我猜想应该是
int *no=(int *)malloc(sizeof(int));
[解决办法]
if((*no)&1) printf("odd\n")
[解决办法]
scanf("%[a-z]d",&no)
这是什么意思??
各种意义上的错
[解决办法]
请判断scanf的返回值!
%[a-z]d
输入由a,b,c,...,z组成的字符串后跟d?自相矛盾。