int main()
{
int a;
if(scanf("%d%d%d", &a, &a, &a) == 3)
puts("Right input");
else
puts("Wrong input");
}给你改了一下,如下,其中错误已经改了
#include "stdioh"
#define N 4
main()
{
int a[N],i,j,t,p;
printf("请输入%d个任意整数:\n",N);
p=a;
for(i=0;i<N;i++)
{
scanf("%d",(p+i)); //建议写成 &p[i]
if((p+i)-(int)((p+i))==0) //你这里写错了,已经给你改了,建议写成 p[i]-(int)p[i],下面的一样建议写成这种形式,方便看
printf("输入错误!");
}
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if((p+j+1)<(p+j))
{
t=(p+j+1);
(p+j+1)=(p+j);
(p+j)=t;
}
}
}
printf("升序排列后的数为:\n");
for(i=0;i<N;i++)
{
printf("%5d",(p+i));
}
}
至于你说要如何去判断输入的一个数是整数而不是浮点数,这个只能用字符串的形式读入,浮点数是有小数点的是吧?如果将这个数以字符串的形式读入,再判断这个串中有没有小数点就可以知道是整数还是浮点数了,其实在实际运用中,不要纠结这是小数还是整数,没多大意义,用int 可以把浮点数强制转换为整型数。
1、首先在c语言中,long long 是C99标准对整形类型做的扩展,每个long long类型的变量占8字节,64位。如下图使用%lld输出。
2、这种输出方法的结果如下图所示,可以看到输出结果是0,而很明显输出的结果不应该为零,也就是说输出结果是错误的。
3、这时要看下是不是函数有问题,采取的方法如下图所示。
4、修正之后的输入结果下图所示,通过这个过程,得出的结论是输出long long类型的数据应该使用prinf的%lld格式,注意输出函数不要写错。
5、最后输出bool类型的数据,其使用Printf的输出格式如下图所示。
6、最后输出结果如下图所示,就完成了。
先存成字符串,判断有没有小数点,再从字符串格式化成整型或浮点型。#include <stdioh>
#include <stdlibh>
#include <stringh>
//char strchr( const char str, int ch );
int main(int argc, char argv[])
{
int a = 0;
double b = 0;
char str[10]="";
scanf("%s",str); // 先存成字符串
if (NULL == strchr(str, '')) // 等于NULL是没有找到小数点
{
sscanf(str, "%d", &a); // 再从字符串格式化成整型
printf("输入的是整型:%d\n", a);
}
else
{
sscanf(str, "%lf", &b); // 再从字符串格式化成浮点型
printf("输入的是浮点型:%lf\n", b);
}
system("PAUSE");
return 0;
}if(scanf("%d",&h)!=1)
printf("it's
not
a
number!\n");
因为scanf是从缓存中读取输入的数据如果你输入的不是数字,就会返回0,如果是数字就会返回1;
一般人不知道scanf还有返回值,就可以看看头文件中scanf的定义了。
其实我还有一个更好的办法,你输入的不是数字就要他重新输入,直到输入的是数字为止,这样是最好的写法。
程序如下:
#include
int
main()
{
int
h;
while(!scanf("%d",&h))
{
fflush(stdin);
printf("\n输入错误,请重新输入:\n");
}
}
其中fflush(stdin)是清理缓存,就像我上面说的scanf是从缓存取数的,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)