这个问题实际上需要分成两个问题:
1.逆序输出 2.输出大写字母的数量
首先对第一个问题进行考虑,我可以想到两种解决方法。
第一种:利用数组将字符串储存起来,然后定义指针指向字符串所在的最后一个数组地址,然后循环进行指针地址每次减一输出就可以实现了逆序输出。
第二种方法:定义两个数组将第一个数组的第一位放到第二个数组的最后一位,这个只需要得到字符串的长度就可以很好的实现了。
显然本文是采用的第二种方法。
第二个问题:这个问题也很简单只需要把字符串中的每一个字母拿出来进行与A和Z比较(由于ASCII码的存在是可以直接进行比较的)然后定义一个计数变量每一次加一就可以了。
#include<stdio.h> #include<string.h>? void reverse(char a[]); int main() { ?? ?int sumA=0; ?? ?char a[300]=""; ?? ?gets(a); ?? ?reverse(a); ?? ?printf("%s, ",a); ?? ?char *p; ? ? for (p = a; *p != '\0'; p++){ ? ? ?? ?if (*p >= 'A' && *p <= 'Z') ?? ??? ?sumA += 1; ?? ?} ?? ?printf("%d",sumA); ?? ?return 0; } void reverse(char a[]) { ?? ?int i,j; ?? ?char b[300]=""; ?? ?j=(int)strlen(a)-1; ?? ?for(i=0;i<=j;i++) ?? ?{ ?? ??? ?b[i]=a[i]; ?? ?} ?? ?b[i]='\0'; ?? ?for(i=0;i<(int)strlen(a);j--,i++) ?? ?{ ?? ??? ?a[i]=b[j]; ?? ?} ?? ?a[i]='\0'; } 这个代码很简单适合初学者掌握学习
|