小文字の変換に大文字の配列要素のオフセットアドレスを使用して、前後の文字列を変換して印刷する数を計算します
#include<stdio.h>
#define n 20
main()
{
char *a=NULL;
unsigned int change_sum=0;
unsigned int loop=0;
char array[n]={'a','B','N','8','M','D',',','*','0','X','m','4','y','Z','!','t','U','T','k','@'};
a=array;
for(loop =0;loop<n;loop++)
{
if((loop%5)==0)
{
printf("\n");
}
printf("%-4c",*a++);
}
printf("\n*********************\n\n");
a=array;
for(loop =0;loop<n;loop++)
{
if(('A'<=*a)&&(*a<='Z'))
{
*(array+loop)=*a+'a'-'A';
change_sum++;
}
if((loop%5)==0)
{
printf("\n");
}
printf("%-4c",*a);
a++;
}
printf("\nchange_sum=%u\n",change_sum);
}