请帮我做这几道C语言选择题?
发布网友
发布时间:2023-09-07 15:39
我来回答
共5个回答
热心网友
时间:2023-09-17 07:30
是9个,'A' 'T' 'S' '\n' '0' '1' '2' '1' '\'
主要是理解s=*p1++;*p1=*p2--;*,s=*p1++;相当于s先赋值为*p1,然后p1执行加1操作,*p1=*p2--;*相当于*p1先赋值为*p2,然后p2执行减1操作
循环体共执行4次,第一次指针p指向s,所以输出ABCD,第二次指针p指向'B'的地址,所以输出BCD,第三次指向'C’的地址,输出CD,第四次指向'D’,输出D
num不是函数strle中定义的局部变量吗?while(*(a+num)!='0') num++;执行后,num是a的字符串长度,也就是6,while(b[n]) { *(a+num)=b[n];num++;n++;}中每次循环num执行加1,共4次循环,所以一共加4,最终结果是10.
isalpha是函数,用来判断传入的参数是否是英文字母,for(i=0,j=0;str[i];i++) if(isalpha(str[i]))str[j++]=str[i];是str字符串中的每个字符判断如果其是英文字母的话就保存,如果不是的话不保存,继续下一个循环判断下一个字符,所以最终的结果是把传入字符串中的非英文字母去掉,只保留英文字母。
热心网友
时间:2023-09-17 07:31
10.3,.应该是A T S \n 0 1 2 \1 \\,9个。,
10.5.第一次交换后,s=A,p1指向第二个字符,*p1--的值为G,付给第二个字符,然后p1指向倒数第二个字符,把s的值A付给了第二个字符。剩下的你自己算吧。
10.6,%s是字符串输出格式,所以会输出以某个字符打头的一串
10.14,num求将两个字符串连接后的长度,所以输出10.
10.15,if(isalpha(str[i]))”是判断是否是英文字符,包括大小写,fun函数就是要去掉字符串中的非英文字符。
热心网友
时间:2023-09-17 07:31
1、\\--->算一个字符“\”
2、注意,s=*p1++;*p1=*p2--;*p2=s,开始p1=A,p2=G,但是第一次执行这条后,S=A,P1=指向了B,然后P1被复制为P2指向的G,然后P2指向了F,然后P2有被S所指向的A赋值,此时W[0]和w[strlen(w)-1]都没被改变:此时成为:AGCDEAG
3、for(p=s;p<s+4;p++) printf("%s\n",p);
注意p是指针,指向的是地址,如果赋值的是字符串,那么代表字符串的首地址,首地址和结束符地址之间的为字符串。对应字符串的中*p代表第一字符串,*(p+1)代表第二个....
s:[ A B C D \0(虚的)] 代表字符串
开始 p | | | (ABCD)
p | | (BCD)
p | (CD)
p (D)
结束 p (\0)结束
4、while(*(a+num)!='0') num++;
这里错了,如果是这样的话,结果是随机的,应该为:
while(*(a+num)!='\0') num++;
注意'0'和'\0'的区别,看书就知道了
5、isalpha判断是否是字符,如果是字符就赋值,不是就不赋值,在这里空格直接被忽视掉了:-(
-----------------------------------------------------------------------------------------------
希望对应有用:
介绍个网站:http://faq.cprogramming.com
热心网友
时间:2023-09-17 07:32
到k-1的,所谓的n[k]只是在定义时候申请了k个元素的意思,数组中并不存在n[k]这个元素,所以系统就随机分配一个值。
第二题,用于p++中的++运算是先执行完所有的运算才进行的,即先输出,然后才将p指向下一个元素。如果改成++p就是先指向下一个元素,再输出了。
第三题,很简单,在你输入的时候,在a和b 之后都按了回车键,getchar()将回车作为一个元素读入,所以实际得到的数组就是a,<CR>,b,<CR>,d,e这六个字符,而<CR>在输出时就是换行的作用,这也就是为什么在输出a和b后都换行的原因
第四题,本循环共执行两次。第一次,i=0,所以执行aa[i][i+1]=*p+1,也就是aa[0][1]=*p+1,由于p指向aa[0][0],所以*p也就a[0][0,a[0][1]=*p+1=aa[0][0]+1=2+1=3,在if-else执行完后输出*p,也就是aa[0](=2),然后在第二次循环中执行的是++p,即将p指向下一个元素,也就是aa[0][1],然后输出*p,也就是aa[0][1],注意aa[0][1],在第一次循环中已经算出来等于3,
热心网友
时间:2023-09-17 07:33
第一道题:"ATS\n012\1\\",ATS这个是3个字符,\n是转义字符,算1个字符,012,3个字符,\1又是一个转义字符,\\也是一个转义字符表示\本身。这样字符数 3+1+3+1+1=9
第二道题,你慢慢去算。。。不难就是有点麻烦
第三道题: for(p=s;p<s+4;p++) printf("%s\n",p),这循环每次输出从指针p开始的字符串,循环4次。
第一次p指向的是“ABCD”起始位置,也就是指向A,这样输出的就是ABCD,第二次指向了B,输出的就是BCD,后面依次类推。S[0]这个值是A,而S则是这个数组的首地址,指向的是A。
第四道题,其实就是对输入的两个字符串的字符个数求和。第一次输入6个,第二次4个加起来就是10
第五道题,isalpha()应该是一个判断str[i]是空格还是其他字符的函数,是空格返回0,fun()这个函数是一个去字符串空格的函数