主题:纠结了几天的C语言问题,望大家指点!
janko
[专家分:0] 发布于 2012-05-25 12:11:00
#include<stdio.h>
int main(void)
{
int num,ling=0,zheng=0,fu=0;
printf("请输入数字:");
while(num!=999)
{
scanf("%d",&num);
if(num > 0 && num!=999 )
{
zheng++;
}
if(num<0)
{
fu++;
}
if(num==0)
{
ling++;
}
}
printf("正数有%d个,负数有%d个,零有%d个\n",zheng,fu,ling);
return 0;
}
最后更新于:2012-05-25 12:19:00
回复列表 (共5个回复)
沙发
janko [专家分:0] 发布于 2012-05-25 12:23:00
补充:
为何程序遇到字母就会停止,怎样不管输入什么字母或其它字母,
程序会继续统计正数,负数,和零的个数.大家指点指点我,谢!谢!
板凳
bruceteen [专家分:42660] 发布于 2012-05-25 13:18:00
[code=c]
#include <stdio.h>
int GetNumber()
{
int num;
for( ; 1!=scanf("%d",&num); )
getchar();
return num;
}
int main()
{
printf( "%s", "请输入数字:" );
unsigned zero=0, pos=0, neg=0;
for( int num; (num=GetNumber())!=999; )
{
if( num > 0 )
++pos;
else if( num < 0 )
++neg;
else
++zero;
}
printf("正数有%u个,负数有%u个,零有%u个\n", pos, neg, zero );
return 0;
}
[/code]
3 楼
janko [专家分:0] 发布于 2012-05-26 12:06:00
谢谢你.....看得懂.有点不明白程序怎么操作,能不能分步解释,谢谢你
4 楼
janko [专家分:0] 发布于 2012-05-26 12:22:00
请问:
1. for( ; 1!=scanf("%d",&num); ) 如何运行的?
getchar();
2. unsigned zero=0, pos=0, neg=0;
for( int num; (num=f())!=999; ) nusigned 是什么?for又是怎么运行的
5 楼
1048211615 [专家分:30] 发布于 2012-05-27 13:14:00
scanf 用此函数代替
long int num_input(void)
{
long int i=1,j,k;
do{
k=0;
i=scanf("%ld",&j);
while((getchar())!='\n')k++;
if(!i||k>=1 ||j < 0)
printf("\nInput a number error!\n"
"Repeat input a number!");
}while(!i||k>=1 || j < 0);
return j;
}
我来回复