关于C语言的菜鸟问题

放一系列的字符型变量,然后计算大小写
#include<stdio.h>
void main()
{
char inp;
int small, big, i;

printf("input your characters: \n");
scanf("%c",&inp);
small=0;
big=0;

for(i>0; i<=10; i++)
{

if (inp >='a' && inp <= 'z')
small ++;

else if (inp >= 'A' && inp <= 'Z')
big ++;
putchar(inp);
}

if (small > big)
printf("Small is %d more than big \n",small-big);
else if (small < big)
printf("big is %d more than small \n",big-small);
else
printf("same \n");

getch();
}

这个为什么不能运行
我看答案在循环中用了inp=getchar();和putchar(inp);这两个什么意思,求详解

楼上扯淡,small和big已经初始化了。
1. 语法错误。i没有赋予初值。
改发1:for(i>0; i<=10; i++)应为 for(i=0; i<=10; i++)
这样实现11次循环;
改法2:
定义改成:int small, big, i=1;
实现10次循环。
2.inp=getchar();和putchar(inp);加在最后,去掉getch();
前者表示从键盘读入一个字符并赋给inp,然后再循环时继续判断当前inp的大小写;
后者表示把你输入的字符显示到屏幕上,仅此而已。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-19
你的scanf函数是可以接受一串字符的输入,但是你定义的它的输入是%c,而且赋予的也是一个单个字符的变量,把它放在循环的外面,也就是说你的字符型变量inp在整个程序中只接受了第一个输入的字符。没有达到你想像的把整个字符串都输入的目的。而getchar这个函数也是接受字符输入的函数,它每次也接受一个字符输入,但是把它放在循环里面,就到达你输入一个字符循环程序里面就对这个字符的大小判断一次,在配合putchar这个函数把这个字符输出,因此,你在屏幕在看到的是输出了一个字符串,但是其实它是一个字符一个字符去判断的。
如果你实在是想用连串字符判断,可以使用数组的方式,定义一个字符数组。
第2个回答  2011-04-19
#include<stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[])
{
char inp;
int small, big, i;

small=0;
big=0;

for(i = 0; i < 10; i++)
{
printf("input your No. %d characters: \n", i + 1);
flushall();
scanf("%c", &inp);

if (inp >= 'a' && inp <= 'z')
small ++;

else if (inp >= 'A' && inp <= 'Z')
big ++;
}

if (small > big)
printf("Small is %d more than big \n",small-big);
else if (small < big)
printf("big is %d more than small \n",big-small);
else
printf("same \n");

getch();
return 0;
}

改成我这个吧。
有疑问请追问。
第3个回答  2011-04-19
getchar()从标准输入设备读入一个字符,一般就是命令行终端
相似回答