c语言问题,求详细解释,在线等

【程序说明】 输入一行字符,统计并输出其中数字字符、英文字符和其它字符的个 数。要求定义并调用函数 count(s,digit,letter,other)分类统计字符串 s 中数字 字符、英文字符和其它字符的个数,函数形参 s 是字符指针,形参 digit,letter,other 的类型是整型指针,函数类型是 void.。 运行示例: Enter charaters:f(x,y)=5x+2y-6 Digit=3 Letter=5 Other=6 【程序】 #include<stdio.h>void count(char *s,int *digit,int *letter,int *other) { (9) while( (10) ) {if(*s>='0'&&*s<='9') (*digit)++; else if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z') (*letter)++; else (*other)++; s++; }
} main() {int i=0,digit,letter,other; char ch,str[80]; printf("Enter charaters:"); ch=getchar(); while( (11) ) {str[i]=ch; i++; ch=getchar(); } str[i]='\0'; ; (12) printf("Digit=%d Letter=%d Other=%d\n",digit,letter,other); } 【供选择的答案】 (9)A.int digit=0,letter=0,other=0; B.int *digit=0,*letter=0,*other=0; C.digit=letter=other=0; D.*digit=*letter=*other=0; // (10)A.*s++!='\0' B.*s++!='\n' C.*s!='\0' D.*s!='\n' // (11)A.ch!= '\0' B.ch!= '\n' C.ch== '\0' D.ch== '\n' // (12)A.count(str,&digit,&letter,&other) B.count(&str,&digit,&letter,&other) C.count(*str,digit,letter,other) D.count(*str,*digit,*letter,*other)

(9)D // 首先要将3个变量置0,AB不选,因为形参表中已经声明了,C不选
// 因为digit=letter=other=0,那么指向的地址改变,不再指向传进来的参数了。
(10)C // 因为下面有s++,所以只能选C和D,又因为str[i]='\0',所以选C。
(11)B // Enter charaters:f(x,y)=5x+2y-6 后面没接0,所以以\n结束输入
(12)A // str是数组名,代表数组首地址,所以不用加" &" ,*str 表示取str[0]的值。所以选A
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-21
兄弟,既然不喜欢C语言的话,大不了就不学,换学其他东西。
第2个回答  2012-11-21
自己拿一本c语言看一下指针,函数的调用里关于地址的传递。
相似回答