c语言求教!需要详细解答!
17.统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。#include 〈stdio.h〉#include 〈ctype.h...
17.统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
#include 〈stdio.h〉
#include 〈ctype.h〉
void main( )
{
int num[26],i;
char c,*p=&c;
for(i=0; i<26; i++) num[i]=0;
while( ( ① =getchar())!=‘#‘) /* 统计从终端输入的大写字母个数 */
if(isupper(*p)) ② ;
for(i=0;i<26;i++) /* 输出大写字母和该字母的个数 */
if(num[i]) printf("%c: %d\n", i+’A‘, ③ );
}
A.① c ② num[i]++ ③ num[i]
B.① c ② num[c-'A']++ ③ num[i]
C.① p ② num[c-'A']++ ③ num[i]
D.① *p ② num[i]++ ③ num[i] 展开
#include 〈stdio.h〉
#include 〈ctype.h〉
void main( )
{
int num[26],i;
char c,*p=&c;
for(i=0; i<26; i++) num[i]=0;
while( ( ① =getchar())!=‘#‘) /* 统计从终端输入的大写字母个数 */
if(isupper(*p)) ② ;
for(i=0;i<26;i++) /* 输出大写字母和该字母的个数 */
if(num[i]) printf("%c: %d\n", i+’A‘, ③ );
}
A.① c ② num[i]++ ③ num[i]
B.① c ② num[c-'A']++ ③ num[i]
C.① p ② num[c-'A']++ ③ num[i]
D.① *p ② num[i]++ ③ num[i] 展开
2个回答
展开全部
本题需弄清楚的是数组num的下标问题,从最后的输出:
for(i=0;i<26;i++) /* 输出大写字母和该字母的个数 */
if(num[i]) printf("%c: %d\n", i+’A‘, ③ );
可以看出,num[i]中的i的取值范围是0-25,也就是说,num[0]内存的是字母‘A’的个数,num[1]内存的是字母‘B’的个数,......,以此类推。我们就会发现,num下标变量i和字符变量c作下标时的对应压关系,应该是每一个具体的i的值对应c-'A',我们暂时称之为“结论1”。
这样,也就不难看出,③的内容应该是字母表中‘A’后第i个字母的个数,也就是num[i]。
另外需要弄清楚的是变量c和p,
根据定义:char c,*p=&c;我们很容易知道:c是字符变量,而p是指针变量,且指向变量c的地址,也就是*p的值就是变量c的值。我们暂时称之为“结论2”。
由 while( ( ① =getchar())!=‘#‘) /* 统计从终端输入的大写字母个数 */
因为getchar()的返回值是一个字符,我们暂时称之为“结论3”。①处可以填入的内容就应该是 c 或者 *p(两种写法均可,但不能是 p,因为p是指针,存的是地址,而不是字符 ) 。
再由if(isupper(*p)) ② ;
我们可以知道,此处应该是对输入的字符进行统计(num做加1运算),我们暂时称之为“结论4”。
再综合“结论1”和“结论4”,我们就会得出②处应该是: num[c-'A']++。
综上所述,答案为B
for(i=0;i<26;i++) /* 输出大写字母和该字母的个数 */
if(num[i]) printf("%c: %d\n", i+’A‘, ③ );
可以看出,num[i]中的i的取值范围是0-25,也就是说,num[0]内存的是字母‘A’的个数,num[1]内存的是字母‘B’的个数,......,以此类推。我们就会发现,num下标变量i和字符变量c作下标时的对应压关系,应该是每一个具体的i的值对应c-'A',我们暂时称之为“结论1”。
这样,也就不难看出,③的内容应该是字母表中‘A’后第i个字母的个数,也就是num[i]。
另外需要弄清楚的是变量c和p,
根据定义:char c,*p=&c;我们很容易知道:c是字符变量,而p是指针变量,且指向变量c的地址,也就是*p的值就是变量c的值。我们暂时称之为“结论2”。
由 while( ( ① =getchar())!=‘#‘) /* 统计从终端输入的大写字母个数 */
因为getchar()的返回值是一个字符,我们暂时称之为“结论3”。①处可以填入的内容就应该是 c 或者 *p(两种写法均可,但不能是 p,因为p是指针,存的是地址,而不是字符 ) 。
再由if(isupper(*p)) ② ;
我们可以知道,此处应该是对输入的字符进行统计(num做加1运算),我们暂时称之为“结论4”。
再综合“结论1”和“结论4”,我们就会得出②处应该是: num[c-'A']++。
综上所述,答案为B
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询