单选题设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是(  )。

题目
单选题
设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是(  )。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。

#include <stdio.h>

main ()

{ int i; char? s[21],*p;

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

s[i]=getchar ();

s[i]=【6】;

p =【7】

while (*p)putchar? (【8】);

}


正确答案:
'\0';s;*p++

第2题:

若有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)while(s[i]){d[j]=;j++;}d[j]=0;


正确答案:s[i++]
当s中最后一个数组元素不是0(没有拷贝完),将数组元素赋给d.然后i++.

第3题:

以下能正确定义字符串的语句是

A)char str[]={' \ 064'};

B)char str="kx43";

C)char str=";

D)char str[]="\0";


正确答案:D
(15)D) 解析 : 字符串常量是用一对双引号括起来的字符序列 , 用字符数组来存放 , 不用大括号 。

第4题:

以下语句或语句组中,能正确进行字符串赋值的是( )。

A.char*sp;*sp="right!";

B.char s[10];s="right!";

C.char s[10];*s="right!";

D.char*sp="right!";


正确答案:D
解析:本题的考点是C语言的数组和指针。C的数组名是一个特殊类型的指针,固定指向数组第一个元素的位置,运行过程中不能再改变其指向。因此选项B、C都是错误的。指针可以指向任何单元,但选项A是错误的,因为赋值语句“*sp=”right!”;”是错误的,正确写法是“sp=”right!”;”。而对于选项D,由于“char*sp="right!";”是定义指针同时赋初值,因此是正确的。

第5题:

(30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是

A gets(s)

B)while((s[i++]=getchar())!=”\n”;s=”\0”;

C)scanf(“%s”,s);

D)do{scanf(“%c”,&s);}while(s[i++]!=”\n”);s=”\0”;


正确答案:C

第6题:

设有定义:

struct person

{ int ID;char name[12];}p;

请将 scanf("%d", 【 1 2 】 ); 语句补充完整,使其能够为结构体变量 p 的成员 ID 正确读入数据。


正确答案:

第7题:

编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

注意:部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:

include<conio.h>

include<stdio.h>

include<string.h>

fun(char (*a) [81], int num, char *max)

{

}

main ()

{

char ss[l0] [81],*ps;

int n, i=0;

clrscr();

prlntf("输入若干个字符串");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i], "****")==0)

/*用****作为结束输入的标志*/

{

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

ps=fun(ss,n,&ps);

print~("\nmax=%s\n",ps);

}


正确答案:fun(char (*a)[81] int num char *max) { int i=0; max=a[0]; for (i=0; inum; i++) /*找出最长的一个字符串*/ if(strlen(max)strlen(a[i])) max=a[i]; return max; /*传回最长字符串地址*/ }
fun(char (*a)[81], int num, char *max) { int i=0; max=a[0]; for (i=0; inum; i++) /*找出最长的一个字符串*/ if(strlen(max)strlen(a[i])) max=a[i]; return max; /*传回最长字符串地址*/ } 解析:做本题之前,我们先应该明白ss是一个指向一维数组的指针变量,max是指向指针变量的指针变量。所以引用时要注意加上*。我们不可能只用max,因为ss[0]是一个数组地址而不是一个指针的地址。

第8题:

设有定义 :char s[81];int i=0;, 以下不能将一行 ( 不超过 80 个字符 ) 带有空格的字符串正确读入的语句或语句组是

A)gets(s);

B)while((s[i++]=getchar())!= ' \n ' );s[i]='\0';

C)scanf("%s",s);

D)do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';


正确答案:C

第9题:

若已包括头文件且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串“ABCDE”赋给s

若已包括头文件<string.h>且已有定义char s1[18],s2={"ABCDE"}和int i,现要将字符串“ABCDE”赋给s1,下列语句错误的是( )。

A.strcpy(s1,s2)

B.strcpy(sl,"ABCDE");

C.s1="ABCDE";

D.for(i=0;i<6;i++) s1[i]=s2[i];


正确答案:C
解析:数组名s1是代表s1数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量,因此s1=“ABCDE”的方法是错误的。

第10题:

编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。 试题程序: include<stdio.h> include<string.h> include<conio.h> char*proc(char(*a)[81],int num) { } void main { char ss[l0][81],*max; int n,i=0; printf("输入若干个字符串:"); gets(ss[i]); puts(ss[i]); while(!strcmp(ss[i],"****")= =0) { i++: gets(ssEi]); puts(ss[i]); } n=i: max=proe(SS,n); printf("\nmax=%s\n",max); }


正确答案:
char*proc(char(*a)[81],int M)
{
char*max;
int i=0:
max=a[O]:
for(i=0;i<M;i++)
if(strlen(max)<strlen(a[i]))//找出最长的字符串
max=a[i];
return max; //返回最长字符串的地址
}
【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串;再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针;最后返回最长字符串的地址。

更多相关问题