[求助]请教两道习题!
1.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。我是这样写的:
#include "stdio.h"
#include "ctype.h"
main()
{int s,num,c,space,other;
scanf("%c",&s);
for(;(s=getchar())!='\n';)
{if(isdigit(s))
num++;
else if(isalpha(s))
c++;
else if(isspace(s)) space++;
else other++;
}
printf("the num is %d\;\nthe char is %d\;\nthe space is %d\;\nthe other is %d\n",num,c,space,other);
}
问题:统计结果出来后,字符数总是比实际的少一个,不知道为什么。
2.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。编程找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3
我是这样写的:
main()
{int k,a,n,x,s=1,i,j,m[20];
for(x=1;x<=1000;x++)
{ j=0;a=0;k=0;
do
{for(n=x,i=2;i<x;i++)
{k=a; /*用于判断用否执行了下面的if语句*/
if(x%i==0)
{x=x/i;
s=s+x;
m[j]=i;
a=++j;
i=1;
}
}
}while(!(k==a));
s=s+x;m[j]=x;
if(s==n)
{printf("%d its factors are 1\,\n",i);
for(i=0;i<=j;i++)
{ if(!m[j]) break;
printf("%d",m[j]);
printf("\,");
}
}
}
}
按ctrl+F9后,没有任何输出,并且不能返回TC的编辑界面。
好像是陷入死循环了
但是我实在是发现不了哪里有问题。
我是初学者, 这两道题都是谭浩强《C程序设计》第二版里的习题。
希望知道的帮忙解答一下。
不尽感激。
[此贴子已经被作者于2005-9-11 4:22:35编辑过]