20.下面程序段的运行结果是 ______。 char a[]="language", *p; p=a; 55 while(*p!='u') {printf("%c",*p-32); p++; } A.LANGUAGE B.language C.LANG D.langUAGE
时间: 2024-04-09 09:29:33 浏览: 239
正确的答案是 A. LANGUAGE。
解析:
- 程序段中首先定义了字符数组 a,内容为 "language"。
- 然后定义了字符指针变量 p,并将数组 a 的首地址赋给了 p。
- 接下来进入 while 循环,循环条件是 *p != 'u',即指针 p 所指向的字符不是 'u'。
- 在循环中,首先使用 printf 打印出 *p-32 的值,也就是当前字符的 ASCII 值减去 32,相当于将小写字母转换为大写字母。
- 然后将指针 p 向后移动一位,指向下一个字符。
- 循环继续执行,直到遇到字符 'u' 为止。
- 最后的运行结果就是打印出转换后的大写字母,即 "LANGUAGE"。
所以,运行结果是选项 A. LANGUAGE。
相关问题
程序段运行结果是什么char s[ ] = "language", *p = s; while( *p++ != 'u') { printf("%c", *p – 'a' + 'A'); }
程序段的运行结果是 "NG"。
解释如下:
1. 首先定义了一个字符数组 s,并初始化为 "language"。
2. 然后定义了一个字符指针 p,指向 s 的首地址。
3. 在 while 循环中,先判断 *p 是否为 'u',如果不是则执行循环体内的语句。
4. 循环体内先将 *p 减去 'a',得到它离字母 a 的距离,再加上 'A',得到它对应的大写字母。
5. 最后将这个大写字母打印出来。
6. 循环结束后,指针 p 指向字符 'u',但由于循环条件是 *p++ != 'u',所以循环体内最后一次执行时指针已经指向了字符 'u' 的下一个位置。
7. 因此最后打印出来的是字符 'n' 和 'g',组成了字符串 "NG"。
程序运行的结果char s[ ] = "language", *p = s; while( *p++ != 'u') { printf("%c", *p – 'a' + 'A'); }
### 回答1:
程序输出结果为 "NGUAGE",该程序的具体执行流程如下:
1. 定义字符数组 s 并赋值为 "language",定义字符指针 p 并将其指向 s 的首地址。
2. 进入 while 循环,判断当前指针指向的字符是否为 'u'。由于指针 p 是先进行判断,再进行自增操作,因此第一次循环时,判断的是 'l',符合条件,继续执行循环体。
3. 在循环体中,输出当前指针指向的字符的 ASCII 码减去 'a' 的 ASCII 码再加上 'A' 的 ASCII 码,即将小写字母转换为大写字母。第一次循环时,输出 'N'。
4. 执行指针自增操作,将指针指向下一个字符。
5. 继续进行下一轮循环,判断当前指针指向的字符是否为 'u',由于指针 p 已经指向 'u' 的下一个字符 'a',因此第二次循环时,判断的是 'a',不符合条件,跳出循环。
6. 程序结束,输出结果为 "NGUAGE"。
### 回答2:
程序运行的结果为:
该程序定义了一个字符数组s,并将字符串"language"赋值给s。另外还定义了一个指针p,将s的地址赋值给p。
在while循环中,条件判断为指针p指向的字符不等于字符'u'。循环体内部使用printf函数打印出指针p指向的字符减去字符'a'减去字符'A'的结果。
首先,字符'a'对应的ASCII码为97,字符'A'对应的ASCII码为65。因此,字符'a'减去字符'a'的结果为0,字符'A'减去字符'a'的结果为-32。所以,在printf函数中,打印的是指针p指向的字符减去32的结果。
由于数组s中的字符串是"language",所以程序会逐个打印出字符串中的字符,直到遇到字符'u'为止。
具体运行结果为:ln+g+g+.
### 回答3:
程序运行的结果是"laDAng"。
首先,让我们逐步分析下这段代码的执行过程:
1. 定义一个字符数组s,并初始化为"language"。
2. 定义一个指针p,指向数组的首字符s[0]。
3. 进入while循环,条件为*p不等于字符'u'。由于p指向s[0],所以将进入循环。
4. 在循环中,使用printf函数输出*p减去字符'a'和字符'A'的差值。
- *p的值是'l',减去字符'a'的差值是11,减去字符'A'的差值是37,所以输出的结果是'11'和'37'对应的字符。即输出的第一个字符是字符(11 + 'a'),即'a';
- p指向下一个字符,即s[1],即'a'。
5. 进入下一轮循环,*p等于'a',仍然不等于字符'u',所以继续执行循环体。
6. 同样地,输出的结果是第二个字符是字符(0 + 'a'),即'a'。
7. 一直重复这个过程,直到*p等于'u',需要注意的是循环体内p的指向不断变化,依次指向s[2]、s[3]、s[4]、s[5]、s[6]。
8. 当*p等于'u'时,不满足循环的条件,退出循环。
最终的输出结果是'laDAng',其中包含了从数组s中去除字母'u'并将每个字母转换为对应大写字母的结果。