(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]);
}
}
结帖吧,兄弟