您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页C语言上机题库百科园第6章!南信大!

C语言上机题库百科园第6章!南信大!

来源:爱问旅游网


第六章

单选

若已定义char s[10];则在下面表达式中不表示s[1]的地址是( )。

A.&s[1]

B.&s[0]+1

C.s+1

D.s++

下面程序段的运行结果是( )。

char a[ ]=”language” , *p ;

p=a ;

while (*p!='u') { printf(“%c”,*p-32); p++ ; }

A.language

B.langUAGE

页脚内容

1

C.LANGUAGE

D.LANG

下面能正确进行字符串赋值操作的是( )

A.char s[5]={'A','B','C','D','E'};

B.char s[5]={\"ABCDE\

C.char *s ; s=\"ABCDE\" ;

D.char *s; scanf(\"%s\

设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下能正确执行并得到有意义的结果的赋值语句是( )。

A.p2=c;

B.c=*p1+*p2;

C.p1=p2;

D.c=*p1*(*p2);

已有函数max(a,b),为了让函数指针变量p指向函数max,正确的赋值方法是( )。

页脚内容

2

A.*p=max(a,b);

B.*p=max;

C.p=max;

D.p=max(a,b);

以下正确的叙述是( )。

A.C语言允许main函数带形参,且形参个数和形参名均可由用户指定

B.当main函数带有形参时,传给形参的值只能从命令行中得到

C.若有说明: int main(int argc,char **argv),则argc的值必须大于1

D.C语言允许main函数带形参,形参名只能是argc和argv

若有定义:int (*p)[4];则标识符p( )。

A.是一个指针数组名

B.定义不合法

C.是一个指向整型变量的指针

页脚内容

3

D.是一个指针,它指向一个含有四个整型元素的一维数组

设有程序段:char s[ ]=\"china\"; char *p ; p=s ;则下面叙述正确的是()。

A.*p与s[0]相等

B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等

D.s和p完全相同

下面程序段的运行结果是( )。

char *s=”abcde” ;

s+=2 ; printf(“%s”,s);

A.字符'c'的地址

B.不确定

C.cde

D.字符'c'

页脚内容

4

下面判断正确的是()。

A.char str[10]={\"china\等价于 char str[10]; str[ ]={\"china\";}

B.char c[4]=\"abc\等价于 char c[4]=d[4]=\"abc\" ;

C.char *a=\"china\"; 等价于 char *a; *a=\"china\" ;

D.char *s=\"china\"; 等价于 char *s; s=\"china\" ;

设有程序段:char s[ ]=”china”; char *p ; p=s ;则下面叙述正确的是( )

A.数组s中的内容和指针变量p中的内容相等

B.*p与s[0]相等

C.s数组长度和p所指向的字符串长度相等

D.s和p完全相同

已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的输出结果是( void print_value(int *x)

{ printf(“%d\\n”,++*x); }

页脚内容

5

)

A.24

B.23

C.25

D.26

若有说明:int *p,m=5,n;以下程序段正确的是( )

A.p = &n ; *p = m ;

B.p=&n ;scanf(\"%d\

C.p = &n ;scanf(\"%d\

D.scanf(\"%d\

变量的指针,其含义是指该变量的( )

A.值

B.地址

C.一个标志

页脚内容

6

D.名

已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )

A.ptr2=k;

B.k=*ptr1+*ptr2;

C.k=*ptr1*(*ptr2);

D.ptr1=ptr2

程序设计

/*请编写函数fun,该函数的功能是:判断字符串是否为回文,若是则函数返回1,主函数中输出\"YES\否则返回0,主函数中输出\"NO\"。

回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。

注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

试题程序:*/

页脚内容

7

#include

#define N 80

int fun(char str[])

{

/***************Begin************/

/*************** End ************/

}

void main()

{

char s[N];

FILE *out;

char test[][80]={\"1234321\

int i;

页脚内容

8

printf(\"Enter a string : \");

gets(s);

printf(\"\\n\\n\");

puts(s);

if(fun(s))

printf(\"YES\\n\");

else

printf(\"NO\\n\");

/************************************/

out=fopen(\"debug\\\\out12.dat\

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

if(fun(test[i]))

fprintf(out,\"YES\\n\");

页脚内容

9

else

fprintf(out,\"NO\\n\");

fclose(out);

/************************************/

}

【参考代码】

int fun(char str[])

{

int i,n=0,fg=1,j=0;

while (str[j])

{

n++;

j++;

页脚内容

10

}

for(i=0;i/*循环比较字符*/

if(str[i]==str[n-1-i]); /*相同,什么都不作*/

else

/*不同,直接跳出循环*/

{

fg=0;

break;

}

return fg;

}

页脚内容

11

/*请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。

一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

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

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

试题程序:*/

#include

#include

#define N 80

int fun(char *s)

{

/************Begin*************/

/*************End*************/

页脚内容

12

}

void main()

{

FILE *wf;

char line[N];

int num=0;

printf(\"Enter a string:\\n \");

gets(line);

num=fun(line);

printf(\"The number of word is:%d\\n\\n \

/******************************/

wf=fopen(\"d:\\\\out19.dat\

fprintf(wf,\"%d\

页脚内容

13

fclose(wf);

/*****************************/

}

【参考代码】

int i,j=0;

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

if(s[i]!=' '&&(s[i+1]==' '||s[i+1]== '\\0'))

/*如果一个字母的下一个字符为空格或者结束标记,则表示一个单词结束*/

j++;

return j;/*返回单词个数*/

/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。

在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是

页脚内容

14

****ABCDEFG。

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

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

试题程序: */

#include

#include

void fun (char *a)

{

/************Begin*************/

/************End**************/

}

void main()

{

页脚内容

15

char s[81];

FILE *in,*out;

int i;

printf(\"Enter a string :\\n\");

gets(s);

fun(s);

printf(\"The string after deleted:\\n\");

puts(s);

/******************************/

in=fopen(\"in21.dat\

out=fopen(\"debug\\\\out21.dat\

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

{

页脚内容

16

fscanf(in,\"%s\

fun(s);

fprintf(out,\"%s\\n\

}

fclose(in);

fclose(out);

/******************************/

}

【参考代码】

int i=0;

char *p=a;

while(*p&&*p=='*')

{

页脚内容

17

a[i]=*p;i++;p++;

}

while(*p)

{

if(*p!='*')

{

a[i]=*p;i++;

}

p++;

}

a[i]='\\0';

/*假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是

页脚内容

18

A*BC*DEF*G*******。

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

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

试题程序: */

#include

void fun (char *a)

{

/************Begin**************/

/************End*************/

}

void main()

{

FILE *wf,*in;

页脚内容

19

int i;

char s[81],t[81]=\"****A*BC*DEF*G*******\";

printf(\"Enter a string :\\n\");

gets(s);

fun(s);

printf(\"The string after deleted:\\n\");puts(s);

/******************************/

in=fopen(\"in18.dat\

wf=fopen(\"debug\\\\out18.dat\

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

{

fscanf(in,\"%s\

fun(t);

页脚内容

20

fprintf(wf,\"%s\\n\

}

fclose(in);

fclose(wf);

/*****************************/

}

【参考代码】

char *p=a;

while(*p=='*')

p++;

/*指针p指向字符串第一个字母*/ for(;*p!='\\0';p++,a++)

*a=*p;

页脚内容

21

*a='\\0';

/*请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。

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

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

试题程序:*/

#include

#include

#define N 81

void fun(char*s)

{

/************Begin*************/

/************End**************/

页脚内容

22

}

void main()

{

char a[N];

FILE *out;

printf(\"Enter a string:\");

gets(a);

printf(\"The original string is:\");

puts(a);

fun(a);

printf(\"\\n\");

printf(\"The string after modified:\");

puts(a);

页脚内容

23

strcpy(a,\"Hello World! This is a first C program!\");

fun(a);

/******************************/

out=fopen(\"d:\\\\out17.dat\

fprintf(out,\"%s\

fclose(out);

/******************************/

}

【参考代码】

char ch;

int i,m,n;

i=0;

m=n=strlen(s)-1;

页脚内容

24

while(i<(n+1)/2)

{

ch=s[i];

s[i]=s[m];

s[m]=ch;

i++;

m--;

}

/*请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位依次放在c数的百位和个位上。

例如,当a=45,b=12,调用该项函数后,c=4152。

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

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

页脚内容

25

若干语句。

试题程序: */

#include

#include

void fun(int a ,int b,long *c)

{

/************Begin************/

/************End***************/

}

void main()

{

int a,b;

long c;

页脚内容

26

FILE *out;

printf(\"Input a ,b: \");

scanf(\"%d%d\

fun(a,b,&c);

printf(\"The result is :%ld\\n\

/******************************/

out=fopen(\"debug\\\\out20.dat\

for(a=10;a<20;a++)

{

fun(a,109-a,&c);

fprintf(out,\"%d\\n\

}

fclose(out);

页脚内容

27

/******************************/

}

【参考代码】

*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;

页脚内容

28

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务