教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

c语言复习题及参考答案(8)

来源:网络收集 时间:2026-08-23
导读: 26、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________。 void main( ) { int *p,*q,a,b; p= printf(―input a:‖); scanf(―%d‖,*p); …… } A、*p表示的是指针变量p的地址 B、*p表示

26、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________。 void main( ) { int *p,*q,a,b; p=&a; printf(―input a:‖); scanf(―%d‖,*p); …… }

A、*p表示的是指针变量p的地址

B、*p表示的是变量a的值,而不是变量a的地址 C、*p表示的是指针变量p的值 D、*p只能用来说明p是一个指针变量 27、已有变量定义和函数调用语句:

int a=25; print_value(&a);

下面函数的正确输出结果是________。 void print_value(int *x) { printf(―%d\\n‖,++*x);}

A、23 B、24 C、25 D、26

28、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是 。 A、*p=&a; scanf(\

B、p=(long *)malloc(8); scanf(\ C、scanf(\ D、scanf(\

29、有以下程序,程序运行后的输出结果是 。 #include void main( )

{ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;

printf(\}

A、1,2,1,2 B、1,2,2,1 C、2,1,2,1 D、2,1,1,2

30、有以下程序,执行后的输出结果是 。 void main( ) { int a=1, b=3, c=5;

int *p1=&a, *p2=&b, *p=&c; *p =*p1*(*p2);

printf(\ }

A、1 B、2 C、3 D、4

- 36 -

31、在16位编译系统上,若有定义int a[]={10,20,30}, *p=&a;,当执行p++;后,下列说法错误的是 。

A、p向高地址移了一个字节 B、p向高地址移了一个存储单元 C、p向高地址移了两个字节 D、p与a+1等价

32、有以下定义 char a[10],*b=a;不能给数组a输入字符串的语句是 。 A、gets(a) B、gets(a[0]) C、gets(&a[0]); D、gets(b); 二、填空题

1、若有定义:int a[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是_____,*(a+5)的值是_________。 2、p1,p2都是字符指针,p1指向字符串―ABCDEFGIJKLMN‖,p2-p1的差为5,则执行printf(―%s‖,p2);时显示在屏幕上的是 。

3、P为一指针变量,使p指向下一个单元,然后取该单元的数据作为表达式的值的表达式是 。

4、已知指针p为int型指针,且其指针值为5000,则p+3的指针值为 。(注:sizeof(int)=4)

5、P为一指针变量,取p所指向单元的数据作为表达式的值,然后使p指向下一个单元的表达式是 。

6、P为一指针变量,将P所指向单元的数据值加1并作为表达式的值的表达式是_______ ________。

7、若正常执行了如下语句:

int m[]={1,2,3,4,5,6,7,8},*p1=m+3,*p2=&m[6],*p3; p3=p1+3;

printf(―%d %d %d‖,*p1,*p2,*p3); 则程序的输出是________ ______。 8、下面程序段的运行结果是 。 char s[80],*sp=\ sp=strcpy(s,sp); s[0]='h'; puts(sp);

9、下面程序段的运行结果是 。 char str[ ]=\*p=str; printf(\10、若有以下定义 :int a[2][3]={2,4,6,8,10,12}; 则 a[1][0] 的值是 .,*(*(a+1)+0)) 的值是 。 11、 运算符用于返回变量在内存中的地址; 运算符用于返回指针变量指向变量的值。 三、程序填空题

1、以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 #include \

- 37 -

void main( )

{int *a,*b,*c,num,x,y,z; a=&x;b=&y;c=&z;

printf(\输入 3 个整数: \ scanf(\ printf(\num=*a; if(*a>*b )

_; if(num>*c)

_ ;

printf(\输出最小整数 :%d\\n\ ); }

2、下面程序的功能是将两个字符串 s1 和 s2 连接起来。请填空。 #include void main( )

{char s1[80],s2[80]; gets(s1); gets(s2); conj( ); puts(s1); }

void conj(char *p1,char *p2) {char *p=p1; while(*p)

; while(*p2)

{*p= ; p++; p2++; } *p='\\0'; }

3、以下程序将数组 a 中的数据按逆序存放,请填空。 #define M 8 void main( ) {int a[M],i,j,t; for(i=0;i

- 38 -

while(i

for(i=0;i

4、下面的程序的功能是:利用指针统计一个字符串中,字母、空格、数字、及其它字符的个数,请填空。

#include void main( )

{ int alpha,space,digit,other; char *p,s[80];

alpha=space=digit=other=0; printf(―input string:\\n‖); ; for(p=s;*p!=‘\\0‘;p++)

if( ) alpha++; else if(( *p==‘ ‘|| *p==‘\\t‘) ) space++; else if( *p>=‘0‘ && *p <=‘9‘) digit++; else other++;

printf(―alpha:%dspace:Yigit:%dother:%d\\n‖,alpha,space,digit,other);

}

5、main()函数利用函数swap()来交换main函数中的两个变量的值。

void swap( __ ) { int temp; temp=*x; *x=*y; __ ; } void main( ) { int x=10,y=10; swap( __ ); printf(―%d, %d\\n‖, x, y); }

四、程序改错题,注意:不得增行或删行,也不得更改程序的结构。

1、下面有一段程序,函数spacenum的功能是统计字符串中空格的个数,并将空格的个数存

- 39 -

放在形参n所指向的存储单元中,请指出并更改程序中出现的5处错误。

#include

void spacenum(char *a,int *n) {int i;

n=0; for(i=0;;i++) if(*(a+i)==‘ ‘))

*n++; }

void main( ) {char str[100]; int count;

puts(str); spacenum(str,count); printf(―space=%d\\n‖,count); }

( )改为:( ) ( )改为:( ) ( )改为:( ) ( )改为:( ) ( )改为:( )

2、下面有一段程序,其功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由fun函数返回,平均分存放在形参aver所指的存储单元中。例如,若8名学生的成绩为:80.5 60 72 90.5 98 51.5 88 64,则低于平均分的学生人数为4(平均分为75.5625)。请指出并更改程序中出现的5处错误。

#inclue

int fun(float s …… 此处隐藏:1798字,全部文档内容请下载后查看。喜欢就下载吧 ……

c语言复习题及参考答案(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/404309.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)