首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

(C语言入门新手)逻辑异常

2012-04-05 
(C语言入门新手)逻辑错误?#include stdio.hvoidmain(){inti0,upper0,lower0,digit0,space0,punch0

(C语言入门新手)逻辑错误?
#include <stdio.h>
void   main()
{
int   i=0,upper=0,lower=0,digit=0,space=0,punch=0;
char   str[20];
printf( "请输入一行字符串\n ");
if(str[i]!= '\0 ')
i++;
scanf( "%s ",str);
for(i=0;str[i]!= '\0 ';i++)
{
        if((str[i]> = 'A ')&&(str[i] <= 'Z '))
        {   upper++;   }  
        if((str[i]> = 'a ')&&(str[i] <= 'z '))
        {   lower++;   }  
        if((str[i]> = '0 ')&&(str[i] <= '9 '))
        {   digit++;   }  
        if(str[i]== '   ')  
        {   space++;   }  
          else   punch=++;
}

printf( "大写字母%d个\n小写字母%d个\n数字%d个\n空格%d\n其它%d个 ",upper,lower,digit,space,punch);
}

空格无法累积;其它字符会错误累积...请教高手帮我修正下哈.

另问.C语言里怎样定义一个动态数组.比如输入一个N值,然后定义数组a[N]   N是由输入者决定的.

[解决办法]
#include <stdio.h>
#include <malloc.h>
void main()
{
int *p=NULL:
int i,N;
printf( "请输入N: ");
scanf( "%d ",&N);
p=(int *)malloc(n*sizeof(int));
if(p==NULL)
{
printf( "内存不足\n ");
return;
}
printf( "请输入N个整数:\n ");
for(i=0;i <N;i++)
{
scanf( "%d ",&p[i]);
}
}

[解决办法]
#include <stdio.h>
#include <malloc.h>
void main()
{
int *p=NULL:
int i,N;
printf( "请输入N: ");
scanf( "%d ",&N);
p=(int *)malloc(n*sizeof(int));//把小写n的改为大写N,应该没问题了
if(p==NULL)
{
printf( "内存不足\n ");
return;
}
printf( "请输入N个整数:\n ");
for(i=0;i <N;i++)
{
scanf( "%d ",&p[i]);
}
}
结帖吧,兄弟

热点排行