以下程序段的输出结果为()。charastr[5]="1234";char*pstr=astr;printf("%c",pstr[1]-'0');

题目
以下程序段的输出结果为()。charastr[5]="1234";char*pstr=astr;printf("%c",pstr[1]-'0');

A.ASCII码值为2的字符

B.ASCII码值为1的字符

C.2

D.1

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

对于 char *pstr;,以下赋值语句正确的是()。

A.*pstr="Hi"

B.pstr="Hi"

C.*pstr="Hi"

D.**pstr="Hi"


char s1[10],s1="china"

第2题:

以下程序段的输出结果是 int main() { int a=1234; printf("%2dn",a); return 0; }

A.1234

B.12

C.34

D.无结果


38 1 0 3810

第3题:

阅读以下说明和C程序,将应填入 (n) 处的字句写在对应栏内。 2、【说明】下面的程序按照以下规则输出给定名词的复数形式。 a.若名词以“y”结尾,则删除y并添加“ies”; b.若名词以“s”、“ch”或“sh”结尾,则添加“es”; c.其他所有情况,直接添加“s”。【C程序】 #include <stdio.h> #include <string.h> char*plural(char *word) { int n; char *pstr; n=strlen(word); /*求给定单词的长度*/ pstr=(char*)malloc(n+3);/*申请给定单词的复数形式存储空间*/ if (!pstr||n<2) return NULL; strcpy(pstr,word); /*复制给定单词*/ if ( (1) ) { pstr[n-1]='i';pstr[n] ='e';pstr[n+1]='s'; (2) ; } else if(pstr[n-1]=='s'| |pstr[n-1]=='h'&&( (3) )) { pstr[n]='e';pstr[n+1]='s';pstr[n+2]='\0'; } else { pstr[n]='s';pstr[n+1]='\0';) (4) ; } main() { int i; char *ps; char wc[9][10]= {"chair","dairy","boss","circus","fly","dog","church","clue","dish"); for(i = 0;i<9; i++) { ps= (5) ; printf("%s: %s\n",wc[i],ps); /*输出单词及其复数形式*/ free(ps); /*释放空间*/ } system("pause"); }


答案:
解析:
(1)pstr[n-1]='y',或*(pstr+n-1)=='y',或其等价表示 (2)pstr[n+2]='\0',或*(pstr+n+2)='\0',或其等价表示 (3)pstr[n-2]='c'||pstr[n-2]='s',或其等价表示 (4)return pstr (5)plural(wc[i]),或其等价表示
【解析】

本题考查C程序设计基本能力和字符串处理基本操作。 C程序中字符串存储在字符数组中,串的结尾需要设置结束标志符号'\0'。若已知串 pstr的长度为n(不包括结束标志),则串中的字符依次存储在pstr[0],pstr[1],...,pstr[n-1]中。因此,名词的最后一个字符pstr[n-1]若等于字符“y”,则按照规则a求其复数形式。下面的if语句处理的是以“y”结尾的名词,因此,空(1)处应填入“pstr[n-1]='y'”或其等价形式。由于串pstr的长度发生了变化,所以需要设置新的结束标志,空(2)处应填入“pstr[n+2]='\0'”’或其等价形式。 if( (1) ) { pstr[n-1]= 'I'; pstr[n]= 'e'; pstr[n+1] = 's'; (2) ; } 显然,下面的if语句处理规则b所示的情况,即串的末尾为“s”、“ch”或“sh”的情形,空(3)处应填入“pstr[n-2]='c'||pstr[n-2]='s”或其等价形式。 if(pstr[n-1]=='s'||pstr[n-1]=='h' && ( (3) )) { pstr[n] = 'e'; pstr[n+1] ='s'; pstr[n+2]='\0'; } 根据函数“char *plural(char *word)”的定义,最后应将求得的给定名词的复数形式返回给主调函数mae,对于串,应返回串空间的首地址,即返回指针pstr,因此空(4)处应填入“return pstr”。 根据以下代码,空(5)处应调用函数plural(char*word)对指定名词求复数,数组 WC初始化时已设置了名词序列,因此,空(5)处应填入“plural(wc[i])”。 for(i = 0; i < 9; i++) { ps= (5) ; printf("%s: %s\n",wc[i],ps); /*输出单词及其复数形式*/ free(ps); /*释放空间*/ }

第4题:

下面程序输出的结果是()。includemain(){char *a="1234";fun(a);printf("\n");}fun(cha

下面程序输出的结果是( )。 #include<stdio.h> main() { char *a="1234"; fun(a); printf("\n"); } fun(char *s) { char t; if(*s) { t=*S++;fun(s);} else return; if(t!='\0') putchar(t); }

A.1234

B.4321

C.1324

D.4231


正确答案:B
解析:本题的fun()函数是用递归法实现逆序输出一个字符串。函数中首先定义一个局部变量t,然后s所指的内容是否为字符串结束符,不是的话将s所指的内容赋给t,同时使s后移一位,然后递归调用fun(s)。到这条语句为止是递归过程,即接下来连续递归调用fun(s)都只会执行到这一半,直到回朔条件(s所指内容是字符串结束符)出现,fun()函数连续返回,判断t不等于0的话,就输出t,所以输入的字符串被逆序输出,故本题的正确答案应该是B。

第5题:

下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由大到小的顺序进行排序。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <conio.h>

include <stdio.h>

define MAXLINE 20

void fun(char *pstr[6])

{

int i,j;

char *p;

for(i=0;i<5;i++)

for(j=i+1;j<6;j++)

/*************found*************/

if(strcmp((pstr+i),(pstr+j))<0)

{

p=*(pstr+i);

*(pstr+i)=*(pstr+j);

/*************found*************/

*(pstr+j)=*p;

}

}

main()

{

int i;

char*pstr[6],str[6][MAXLINE];

clrscr();

for(i=0;i<6;i++)

pstr[i]=str[i];

printf("/nEnter 6 string(1 string at each line):\n");

for(i=0;i<6;i++)

scanf("%s",pstr[i]);

fun(pstr);

printf("The strings after sorting:\n");

for(i=0;i<6;i++)

printf("%s\n",pstr[i]);

}


正确答案:(1)错误:if(strcmp((pstr+i)(pstr+j))0) 正确:if(strcmp(*(pstr+i)*(pstr+j))0) (2) 错误:*(pstr+j)=*p; 正确:*(pstr+j)=p;
(1)错误:if(strcmp((pstr+i),(pstr+j))0) 正确:if(strcmp(*(pstr+i),*(pstr+j))0) (2) 错误:*(pstr+j)=*p; 正确:*(pstr+j)=p; 解析:错误1:本题旨在考查指针的引用方法。*(pstr+i)指字符串中下标为i的字符。错误2:*p是字符类型,而*(pstr+j)是指针类型,二者不能进行赋值运算。

第6题:

阅读以下说明和C程序,将应填入(n)处的字句写在对应栏内。

【说明】

下面的程序按照以下规则输出给定名词的复数形式。

a.若名词以“y”结尾,则删除y并添加“ies”;

b.若名词以“s”、“ch”或“sh”结尾,则添加“es”;

c.其他所有情况,直接添加“s”。

【C程序】

include <stdio.h>

include <string.h>

char*plural(char *word)

{

int n;

char *pstr;

n=strlen(word); /*求给定单词的长度*/

pstr=(char*)malloc(n+3);/*申请给定单词的复数形式存储空间*/

if (!pstr||n<2)

return NULL;

strcpy(pstr,word); /*复制给定单词*/

if ((1))

{

pstr[n-1]='i';pstr[n] ='e';pstr[n+1]='s';(2);

}

else

if(pstr[n-1]=='s'| |pstr[n-1]=='h'&&((3)))

{

pstr[n]='e';pstr[n+1]='s';pstr[n+2]='\0';

}

else

{ pstr[n]='s';pstr[n+1]='\0';)

(4);

}

main()

{ int i; char *ps;

char wc[9][10]=

{"chair","dairy","boss","circus","fly","dog","church","clue","dish");

for(i = 0;i<9; i++) {

ps= (5) ;

printf("%s: %s\n",wc[i],ps); /*输出单词及其复数形式*/

free(ps); /*释放空间*/

}

system("pause");

}


正确答案:(1)pstr[n-1]='y'或*(pstr+n-1)=='y'或其等价表示 (2)pstr[n+2]='\0'或*(pstr+n+2)='\0'或其等价表示 (3)pstr[n-2]='c'||pstr[n-2]='s'或其等价表示 (4)return pstr (5)plural(wc[i])或其等价表示
(1)pstr[n-1]='y',或*(pstr+n-1)=='y',或其等价表示 (2)pstr[n+2]='\0',或*(pstr+n+2)='\0',或其等价表示 (3)pstr[n-2]='c'||pstr[n-2]='s',或其等价表示 (4)return pstr (5)plural(wc[i]),或其等价表示 解析:本题考查C程序设计基本能力和字符串处理基本操作。
C程序中字符串存储在字符数组中,串的结尾需要设置结束标志符号'\0'。若已知串 pstr的长度为n(不包括结束标志),则串中的字符依次存储在pstr[0],pstr[1],...,pstr[n-1]中。因此,名词的最后一个字符pstr[n-1]若等于字符“y”,则按照规则a求其复数形式。下面的if语句处理的是以“y”结尾的名词,因此,空(1)处应填入“pstr[n-1]='y'”或其等价形式。由于串pstr的长度发生了变化,所以需要设置新的结束标志,空(2)处应填入“pstr[n+2]='\0'”’或其等价形式。
if((1))
{
pstr[n-1]= 'I';pstr[n]= 'e';pstr[n+1] = 's';(2);
}
显然,下面的if语句处理规则b所示的情况,即串的末尾为“s”、“ch”或“sh”的情形,空(3)处应填入“pstr[n-2]='c'||pstr[n-2]='s”或其等价形式。
if(pstr[n-1]=='s'||pstr[n-1]=='h'&&((3)))
{
pstr[n] = 'e';pstr[n+1] ='s';pstr[n+2]='\0';
}
根据函数“char *plural(char *word)”的定义,最后应将求得的给定名词的复数形式返回给主调函数mae,对于串,应返回串空间的首地址,即返回指针pstr,因此空(4)处应填入“return pstr”。
根据以下代码,空(5)处应调用函数plural(char*word)对指定名词求复数,数组 WC初始化时已设置了名词序列,因此,空(5)处应填入“plural(wc[i])”。
for(i = 0;i 9; i++){
ps=(5);
printf("%s:%s\n",wc[i],ps);/*输出单词及其复数形式*/
free(ps);/*释放空间*/
}

第7题:

设有说明语句:intx=1,y=3,z=5;则下面表达式中值为0的是()。

A、x

B、charstr[80];str=”abcdefg”;

C、char*pstr=”abcdefg”

D、char*pstr=NULL;pstr=”abcdefg”;


参考答案:B

第8题:

试题二(共 15 分)

阅读以下说明和 C 程序,将应填入 (n) 处的字句写在答题纸的对应栏内。

[说明]

下面的程序按照以下规则输出给定名词的复数形式:

a. 若名词以“y”结尾,则删除 y 并添加“ies” ;

b. 若名词以“s” 、 “ch”或“sh”结尾,则添加“es” ;

c. 其他所有情况,直接添加“s” 。

[C 程序]

#include <stdio.h>

#include <string.h>

char *plural(char *word)

{

int n;

char *pstr;

n = strlen(word); /*求给定单词的长度*/

pstr = (char *)malloc(n+3); /*申请给定单词的复数形式存储空间*/

if (!pstr || n < 2)

return NULL;

strcpy(pstr,word); /*复制给定单词*/

if ( (1) )

{

pstr[n-1] = 'i'; pstr[n] = 'e'; pstr[n+1] = 's'; (2) ;

}

else

if(pstr[n-1]=='s'||pstr[n-1]== 'h' && ( (3) ))

{

pstr[n] = 'e'; pstr[n+1] = 's'; pstr[n+2] = '\0';

}

else

{ pstr[n] = 's'; pstr[n+1] = '\0'; }

(4) ;

}

main( )

{ int i; char *ps;

char wc[9][10] =

{"chair","dairy","boss","circus","fly","dog","church","clue","dish"}

for(i = 0; i < 9; i++) {

ps = (5) ;

printf("%s: %s\n",wc[i],ps); /*输出单词及其复数形式*/

free(ps); /*释放空间*/

}

system("pause");

}


正确答案:


第9题:

下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.

试题程序:

include <conio.h>

include <stdio.h>

define MAXLINE 20

/*************found**************/

fun(char *pstr[6])

{int i, j;

char *p;

for(i=0;i<5;i++)

{for(j=i+l;j<6;j++)

/*************found**************/

{ if(strcmp(*(pstr+i),pstr+j)>0)

{

p=*(pstr+i);

/*************found**************/

* (pstr+i) -pstr+j;

* (pstr+j)=p;

}

}

}

}

main ( )

{ int i;

char *pstr[6],str[6][MAXLINE];

clrscr();

for(i=0;i<6;i++) pstr[i]=str[i];

printf("\nEnter 6 string(1 string at each

line):\n ");

for(i=0;i<6;i++) scanf("%s",pstr[i]);

fun(pstr);

printf("The strings after sorting:\n ");

for(i=0;i<6;i++) printf("%s\n ",pstr[i]);

}


正确答案:(1)错误: fun(char *pstr[6]) 正确: void fun(char *pstr[6]) (2)错误: if(strcmp(*(pstr+i)pstr+j)>0 正确: if(strcmp(*(pstr+i)*(pstr+j))>0 (3)错误: *(pstr+i)=pstr+j; 正确: *(pstr+i)=*(pstr+j);
(1)错误: fun(char *pstr[6]) 正确: void fun(char *pstr[6]) (2)错误: if(strcmp(*(pstr+i),pstr+j)>0 正确: if(strcmp(*(pstr+i),*(pstr+j))>0 (3)错误: *(pstr+i)=pstr+j; 正确: *(pstr+i)=*(pstr+j); 解析:冒泡法对字符串排序的方法是将相邻两个字符比较,将小的调到前面。令x等于字符串的第i位字符,若该字符的前一位字符大于x,则将该字符与x互换位置。从字符山中的第2位字符到字符串的最后一们字符重复以上过秆,即可完成排序。可用循环语句实现。