| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 969 人关注过本帖
标题:不明白是程序的问题还是电脑的问题,大家探讨一下。
只看楼主 加入收藏
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
结帖率:90.48%
收藏
已结贴  问题点数:10 回复次数:11 
不明白是程序的问题还是电脑的问题,大家探讨一下。
还是统计一个数组中空格字符,数字字符,字母字符,还有其他字符的个数。我有一个疑问,程序如下:
#include <stdio.h>
#define n 20
void main()
{int  letter,digit,space,other,i;
 char a[n],*p;
 p=a;
 letter=0;
 digit=0;
 space=0;
 other=0:
 printf("enter str a[n]=");
 for(i=0;i<n;i++)
 scanf("%c",&(*(p+i)));    //*本来这里在进入显示运行结果的时候需要我输入20个字符,可是为什么我输入到第20个以后还能继续输入,怎么样才能让程序控制下.就是当我输入20个字符以后要跳到下面运行,而不是等我计算好是第20个字符的时候按回车*//
 while(*p!='\0')
  {if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z'))
     letter++;
   if(*p>='0'&&*p<='9')
    digit++;
   if(*p==' ')
     space++;
   else other++;
   p++;}
 p=a;
 printf("while str a[n]=%s\n",*p);
 printf("letter=d%,digit=%d,space=%d,other=%d\n",letter,digit,space,other);
 getch();
}






[ 本帖最后由 李若斌 于 2009-11-11 11:59 编辑 ]
搜索更多相关主题的帖子: 探讨 
2009-11-11 10:31
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
把scanf("%c",&(*(p+i)));
改成scanf("%c",&a[i]);
2009-11-11 11:42
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
while(*p!='\n')改成while(*p!='\0')
2009-11-11 11:46
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 2楼 佳嘉
..........&(*(p+i))就是等同于a[i]的。我去前面已经指定指针变量p=a
2009-11-11 11:48
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
那个循环中也有问题
2009-11-11 11:51
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 5楼 佳嘉
嗯 看到了 没注意把0打成了N, 不过改过来了以后还是不能当输入到第20个字符的时候自动跳到下面的判断循环里。
2009-11-11 12:00
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 4楼 李若斌
可p所指的发生了变化
2009-11-11 12:05
佳嘉
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:534
专家分:1383
注 册:2009-11-8
收藏
得分:0 
回复 6楼 李若斌
自己回车啊??你那个if和else有问题,最后的else是与它上面的那个if对应
2009-11-11 12:07
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:5 
#include <stdio.h>
#define n 20
void main()
{int  letter,digit,space,other,i;
char a[n],*p;
p=a;
letter=0;
digit=0;
space=0;
other=0: /*这是个冒号*/
printf("enter str a[%d]=",n);
for(i=0;i<n;i++)
scanf("%c",&(*(p+i)));    //*本来这里在进入显示运行结果的时候需要我输入20个字符,可是为什么我输入到第20个以后还能继续输入,怎么样才能让程序控制下.就是当我输入20个字符以后要跳到下面运行,而不是等我计算好是第20个字符的时候按回车*//
while(*p!='\n')
  {if((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z'))
     letter++;
   else if(*p>='0'&&*p<='9')
    digit++;
   else if(*p==' ')
     space++;
   else other++;
   p++;}
p=a;
printf("while str a[n]=%s\n",*p);/*蓝色部分一起看*/
printf("letter=d%,digit=%d,space=%d,other=%d\n",letter,digit,space,other);
getch();
}
%c和%s混合运用,结果一塌糊涂

我可好玩啦...不信你玩玩^_^
2009-11-11 12:21
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:5 
LZ想输到20个字符的时候就自动运行下面的话,建议试下输入的时候改成:
for(i=0;i<n;i++)
*(p+i)=getche();
    *(p+i)='\0';
不过下面要改的还有好多:
程序代码:
#include <stdio.h>
#include<conio.h>
#define n 20
void main()
{int  letter,digit,space,other,i,z;
char a[n],*p,*q;
p=a;
letter=0;
digit=0;
space=0;
other=0;
printf("enter str a[%d]=",n);
for(i=0;i<n;i++)
*(p+i)=getche();    //*本来这里在进入显示运行结果的时候需要我输入20个字符,可是为什么我输入到第20个以后还能继续输入,怎么样才能让程序控制下.就是当我输入20个字符以后要跳到下面运行,而不是等我计算好是第20个字符的时候按回车*// 
*(p+i)='\0';
q=p;   //  记住p的初始位置
while(*p!='\0')
  {if((*p>='A'&& *p<='Z')||(*p>='a'&&*p<='z'))
     letter++;
   else if(*p>='0'&&*p<='9')
    digit++;
   else if(*p==' ')
     space++;
   else other++;
   p++;
    }
p=q;    //  找加原始位置
printf("while str a[n]=%s\n",p);/*
printf("letter=%d,digit=%d,space=%d,other=%d\n",letter,digit,space,other);
}
如LS所说···好多问题··
2009-11-11 13:02
快速回复:不明白是程序的问题还是电脑的问题,大家探讨一下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016727 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved