|
楼主 |
发表于 2004-12-8 18:16:37
|
显示全部楼层
[code:1]/*有一篇文章,共有3行。每一行共有80个字符,要求分别打印出英文大写和小写,数字,空格,以及其他字符的个数*/
#define m 3
#define n 100
main()
{
char a[m][n]={{'A','S','D','B','G','N','\0'},{'f','e','n','g','y','a','n','\0'},{'1','2','3','4','\0'}};
int i,j,k=0,l=0,o=0,p=0,q=0;
printf("请输入三行字符,每行小于等于80个字符:\n");
for(i=0;i<m;i++)
{
for(j=0;i<n&&a[i][j]!='\0';j++)
if(a[i][j]>='A'&&a[i][j]<='Z')
k+=1;
else if(a[i][j]>='a'&&a[i][j]<='z')
l+=1;
else if((int)a[i][j]>=49&&(int)a[i][j]<=57)
o+=1;
else if((int)a[i][j]==32)
p+=1;
else if((int)a[i][j]>=1&&(int)a[i][j]<=31||(int)a[i][j]>=33&&(int)a[i][j]<=47||(int)a[i][j]>=58&&(int)a[i][j]<=64||(int)a[i][j]>=91&&(int)a[i][j]<=96||(int)a[i][j]>=123&&(int)a[i][j]<=254)
q+=1;
}
printf("大写字母数为=%d\n",k);
printf("小写字母数为=%d\n",l);
printf("数字个数为=%d\n",o);
printf("空格数为=%d\n",p);
printf("其他字符数为=%d\n",q);
}[/code:1]
[code:1]fydream@linux:~/源代码/unit 7> gcc -ggdb3 -o dreamdead 710思考着.c
710思考着.c: In function `main':
710思考着.c:20: warning: comparison is always true due to limited range of data type
fydream@linux:~/源代码/unit 7> ./dreamdead
请输入三行字符,每行小于等于80个字符:
大写字母数为=6
小写字母数为=7
数字个数为=4
空格数为=0
其他字符数为=0 [/code:1]
经过stll老兄的指点,我用gdb进行了调试,
我现break main
然后step一步一步观察,发现程序确实在segaeno老兄所说的地方总是过不去!
所以我就针对这个错误做了一个就算是实验吧,结果就可以正常运行了!:)
现在我就可以慢慢的改正了,我严重的感谢二位的帮助!:) |
|