大学C语言试题6,不懂,我要详细的解答~谢谢先分析那个结构体,类型名称为st,只含有两个内容,(1)一个字符c;(2)一个字符串指针s 。
再解读那个函数char *f(strct st t):
这个函数的返回值是一个字符串指针 , 它的自变量是一个结构体变量t(类型为st) 。
这的作用是什么?看内部,while(t.s[k]!='\0')是一个循环语句 , 它遍历t变量中的s字符串的每一个字符 , 干什么呢?看循环体共两句:
{
if(t.s[k]==t.c)return t.s+k;
k++;
}
第一句是把s字符串的第k个字符与c做比较,如果相等 , 则返回s那个指针,只不过不是第一个字符 , 而是出现相等的那个字符 。注意 , 一旦相等,就跳出这个函数啦?。?
第二句则是让k加1,也就是继续比较下一个字符 。
如果很不幸 , 一直把s的字符全部比较完,也没有一个跟c相同的,那就循环结束了,执行后面的那一句:return t.s 。这一次是返回s那个指针,而且是指向第一个字符的了~~
最后分析一下主函数main , 定义了一个st类型的数组a,共有4个元素,a[0]~a[3],每一个元素是都有不同的c和s都依次进行了定义 。
然后是一个循环,依次用a[0]~a[3]做参数调用f函数,并打印返回的值——从前面的分析我们知道每一次调用都返回一个字符串的指针——也就是打印这个字符串,每个字符串占一行 。共打印四行 。
分析完程序之后,我们再来看题目:
注意题目有一点bug,21、22、23、24题的问题应该是第一、二、三、四行输出的内容,题目表述都问第一行的输出内容,那不是答案一样嘛?所以应该是题目印错了 。
其实每一行输出的内容只跟结构体变量a[k]中的c和s两个变量有关 。下面逐行分析:
第一行:c=1,s=123,k=0时第一个字符比较就相等了,所以返回s+k,也就是指向s的第一个字符的指针,所以输出的内容是全部s:123,是为选项C 。
第二行:c=2 , s=321 , 比较到第二个字符2(k=1)就相等了,所以返回s+1,也就是指向s的第二个字符2的指针,所以输出的内容是s从2开始的后面全部字符:21,是为选项A 。
第三行:c=3,s=123,比较到第三个字符3(k=2)就相等了 , 所以返回s+2,也就是指向s的第三个字符3的指针 , 所以输出的内容是s从3开始的后面全部字符:(非常不幸只有一个)3,是为选项A 。
第四行:c=4,s=321,比较到最后一个字符也没有发现4 , 所以返回s,也就是指向s的指针,所以输出的内容是全部s:321,是为选项D 。
求c语言试题及答案!急?。?/h2>c语言考试题(一)
一、 单项选择题(每题2分,共20分)
1、以下选项中属于C语言的数据类型是( )
A.复数型 B.逻辑型 C.集合型 D.双精度型
2、一个C程序的执行是从( )
A.main()函数开始,直到main()函数结束 B.第一个函数开始 , 直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main()函数开始 , 直到最后一个函数结束
3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )
A.3 B.0C.-12?。模?
4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( ) 。
A.cd\0e B.'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( ) 。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替换不正确的叙述( ).
A.宏替换不占用运行时间 B.宏名无类型
推荐阅读
- 视频号后台看直播记录,视频号在哪里能看到直播记录
- a5创建mysql存储过程,mysql怎样创建存储过程
- thinkphp3.2多表联查,多表联查的sql
- php数据字典怎么开发 php数据字典怎么开发出来的
- 鸿蒙照片放桌面,鸿蒙图片放桌面
- 网红养成计划游戏,网红养成记游戏
- 如何做好一场ppt培训,怎么才能做好ppt的培训
- 关于java字符串加1代码的信息
- redis填表,redis怎么写