C语言程序设计

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

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

第1题:

设有定义 :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

第2题:

设有定义:

struct person

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

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


正确答案:

第3题:

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

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

B)char str="kx43";

C)char str=";

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


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

第4题:

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

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

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


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

第5题:

编写一个函数,从传入的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]是一个数组地址而不是一个指针的地址。

第6题:

下面程序是指从终端读入的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++

第7题:

若有定义语句: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++.

第8题:

( 14 )以下程序用以删除字符串所有的空格,请填空。

#include <stdio.h>

main ()

{ char s[100]={ " Our teacher teach C language! " };int i,j;

for ( i=j=0;s[i]!= ’ \0 ’ ;i++ )

if ( s[i]!= ‘ ’ ) {s[j]=s[i];j++;}

s[j]= 【 14 】

printf ( " %s\n " ,s ) ;

}


正确答案:

第9题:

(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

第10题:

若已包括头文件且已有定义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”的方法是错误的。

更多相关问题