2013自考“高级语言程序设计”习题答案详解(24)
10.编一个程序,将按第9题中加密的字符率(从键盘输入)解密后输出。
「解」本问题编写的程序是完成上一程序的逆操作。同样是顺序考察输入字符串,对满足要求的字符作恢复更改。要求是当字符减3后是大写英文字母时,则对其作减3处理的替换;当字符加3后是小写英文字母时,则对它作加3的处理。如此做法是有错误的,程序未考虑原
先不是英文字母,而未被加3或减3处理,但对它减3或加3后是英文字母时,将被下面的程序转换成英文字母。所以下面的程序不是完成上题程序的逆操作。但没有简单的办法能避免这个错误。完整程序如下:
# include
# define N 200
main()
{char s[N]; int i;
printf(“Enter string!\n”);
scanf(“%s”,s);
for(i=0;s !=‘\0’;i++)
if(s-3>=‘A’&&s-3<=‘Z’)
s-=3;
else if(s+3>=‘a’ && s+3<= ‘Z’)
s+=3;
printf(“s=%s\n”,s);
}
5.1 单项选择题
1.设有定义“int a=3, b,*p=&a;”,则下列语句中使 b不为3的语句是( )
① b=* &a; ② b=* p;
③ b=a; ④ b=*a;
「解」定义有 int a=3, b,*p=&a;对b赋值的表达式有*&a、*p、a 、*a.引用变量。的值有两种方法,一是直接引用a,二是通过a的指针间接引用a.对于后者,又有多种表达方法,通过指向a的指针p,间接引用a的内容,如*p.或通过求地址运算符由变量a得到其指针&a,再由这指针表达式间接引用 a的内容,如* &a.所以表达式*&a、*p和a都能引用变量a的值,而使b的值为3.而表达式。a是错误的,因为a不是指针变量,不能对它施行取内容运算符……所以解答是④。
2 .设指针x指向的整型变量值为万,则“printf(”%d\n“,++ *x);”的输出是( )
① 23 ② 24 ③ 25 ④ 26
「解」若指针变量x指向某个变量,例如指向变量v,并且变量v的值是25,则表达式++ *x的值是26.这是因为表达式的计算顺序可加圆括号表达成(++(*x)),首先是*x,是对X所指变量V的引用,所以++ *X就是++V.++V是先让变量V增1,并以增至后的V的值为表达式++V的结果,所以其值是 26.所以解答是④。
3.若有说明:“ int i,j= 7,*p=&i;”,则与“ i=j;”等价的语句是( )
①i=*p; ②*P=* &j;
③i==&j; ④i=* *p;
「解」指针变量 p指向变量i时,表达式i=*p等价于 i=i;表达式*p=*&j等价于i=j;而表达式i=&j企图将整型变量的指针赋给整型变量,这是错误的;表达式i=* *p也是一种错误的表达式。p是指针,*p是p所指变量j,* *p是企图将整型变量j当作指针,并想通过j间接引用某个变量。所以解答是②。
最新资讯
- 备考资料:2024年自考《英语二》阅读判断模拟试题2024-04-05
- 2024年4月自学考试《马克思主义基本原理概论》模拟题——简答题2024-03-23
- 2024年4月自学考试《马克思主义基本原理概论》模拟题——论述题2024-03-21
- 2021年10月自考《思修》考前2天冲刺卷2021-10-14
- 2021年10月自考《马克思主义基本原理概论》考前2天冲刺卷!2021-10-14
- 2021年10月自考《中国近现代史纲要》模拟题(五)2021-08-01
- 2021年10月自考《中国近现代史纲要》模拟题(四)2021-07-31
- 2021年10月自考《中国近现代史纲要》模拟题(六)2021-07-30
- 2021年10月自考《中国近现代史纲要》模拟题(三)2021-07-30
- 2021年10月自考《中国近现代史纲要》模拟题(二)2021-07-29