如图,这个c语言程序,求详细讲解

如题所述

char a[] = "program", *p;//定义了一个字符数组a,一个字符指针p

p = a; //将指针p指向数组a的首地址

while(*p != 'g') //当*p的内容不等于g则执行循环
{
printf("%c\n",*p-32); //将取得的内容-32,也就是进行ASCII转码,
// 比如a的ASC码是97,97-32 = 65, 65是A的ASCII码
p++; //指针执行下一个地址
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-17
亲,你这个题目涉及到指针和ASCII码
常用的字母ASCII码
大写字母65-90
小写字母97-122
p=a 即让p指针指向了数组a的首地址
while(*p!='g') 表示指针p 指向的值不等于g,如果等于g则循环结束,
printf("%c",*p-32); *p-32则是让p指针指向的ASCII值减去32,并打印出来
p++; 即让p指针指向了下一个地址
亲,再有什么不懂可以问我,希望采纳!!!
第2个回答  2015-06-17
这个程序就是输出字符串“program”中的除了g字符之外的字符大写:
输出:"PROgRAM"
大写字母的ASCII码为:65(A)、66(B)、67(C)等等。
小写字母的ASCII码为:97(a)、98(b)、99(c)等等。
因此*p-32就表示将小写转换为大写。
第3个回答  2015-06-17
输出结果应该是PROgram
相似回答