C语言程序设计基础教程 - 习题答案(5)

2019-01-07 19:26

以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请补充填空。

# include

findmax (int *s ,int t ,int *k ) { int p;

for(p=0,*k=p;p

if ( s[p] > s[*k] ) __*k=p______; }

void main()

{ int a[10] , i , k ;

for ( i=0 ; i<10 ; i + + ) scanf(\findmax ( a,10,&k );

printf ( \} 8.2.5 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素

数,请补充填空。

#include void main()

{ int i,a[10],*p= a ,sum=0; printf(\

for(i=0;i<10;i + + ) scanf(\for(i=0;i<10;i + + )

if(isprime(*(p+i)) = = 1)

{ printf(\ sum+= a[i] //或者 *(a+i) 或者 *(p+i) ; } /*打印

素数*/

printf(\ /*打印所有素数的和*/ }

isprime(int x) { int i;

for(i=2;i<=x/2;i + + )

if(x%i = = 0) return (0); return 1 ; } 8.2.6 在下列程序中,其函数的功能是比较两个字符串的长度,比较的结果是函数返

回较长的字符串的地址。若两个字符串长度相同,则返回第一个字符串的地址。

#include

char * fun ( char *s, char *t) { char *ss=s, *tt=t; while((*ss)&&(*tt)) { ss++; tt++; } if (*tt) return tt;

else return ss ; }

} 8.2.4

void main( )

{ char a[20],b[10],*p=a,*q=b; gets(p);

gets( q );

printf(\}

8.3 写出以下程序的运行结果 8.4.1

main( )

{ int a[ ]={2,4,6,8},*p=a,i;

for(i=0;i<4;i++) a[i]=*p++; printf(\}

运行结果: 6,8 8.4.2

#include void main( ) { int a,b,c;

int x=4,y=6,z=8;

int p1=&x,p2=&y,*p3; a=p1==&x;

b=3*(-*p1)/(*p2)+7; c=*(p3=&z)=*p1*(*p2); printf(\}

运行结果: 1,5,24 8.4.3

#include void main( )

{ int a[ ]={2,4,6,8,10},*p,**k; p=a; k=&p;

printf(\ \printf(\}

运行结果: 24 8.4.4

#include void main( )

{ int a[3][4]={2,4,6,8,10,12,14,16,18,20,22,24}; int (*p)[4]=a,i,j,k=0; for(i=0;i<3;i++) for(j=0;j<2;j++))

k+=*(*(p+i)+j);

printf(\

}

运行结果: 66 8.4.5

#include void main( ) { int k=0,sign,m;

char s[ ]=“-12345”; if(s[k]==?+?||s[k]==?-?) sign=s[k++]==?+??1:-1;

for(m=0;s[k]>=?0?&&s[k]<=?9?;k++) m=m*10+s[k]-?0?;

printf(\ }

运行结果: Result=-12345 8.4.6 若有5门课程的成绩是:90.5, 72, 80, 61.5, 55,则程序运行结果是多少,其函数执

行什么功能。 #include

float fun ( float *a , int n ) { int i;

float sum=0; for(i=0; i

void main()

{ float score[30]={90.5, 72, 80, 61.5, 55}, aver; aver = fun( score, 5 );

printf( \}

运行结果: Average score is: 71.80 函数功能:求5门课程平均分

8.4.7 若输入字符串\,则程序运行结果是多少,其程序执行什么功能。

#include #include long fun ( char *p)

{ long nn=0; int ss=1;

if((*p)=='-'){ p++; ss=-1;} if((*p)=='+') p++; while(*p)

nn=nn*10-48+(*p++); return(nn*ss); }

void main() /* 主函数 */ { char s[6]; long n;

8.4.8

8.4.9

printf(\ gets(s); n = fun(s);

printf(\}

运行结果: -1234 程序功能:输入一个字符串,并将其转换为数字

下列程序功能是将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642。请改正程序中的错误,使它能得出正确的结果。 #include

void fun (long s, long *t) { int d;

long sl=1; *t = 0;

while ( s > 0) { d = s;

if (d/2==0) // 改为:if(d%2==0) { *t=d* sl+ *t; sl *= 10; }

s \\= 10; //改为:s/=10; } }

void main() { long s, t;

scanf(\ fun(s, &t);

printf(\}

下列程序功能是对M行M列整数方阵求两条对角线上各元素之和。请改正程序中的错误,使它能得出正确的结果。 #include #define M 5

int fun(int n, int x[ ][ ]) //改int fun(int n,int x[][M]) { int i, j, sum=0,*p; //改int i,j,sum=0,(*p)[M];

for( p = 1,i= 1;i <= M ; i++ ) //改for(p=x,i=0;i

void main( )

{ int a[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}; printf ( \}

习题9

9.1 选择题

9.1.1 在宏定义#define PI 3.14159 中,宏名PI代替的是一个( D )。 A) 常量 B) 单精度数 C) 双精度数 D) 字符串

9.1.2 定义一个名为NEW(X)的宏,产生它的参数的负值,正确的语句是( C )。 A) #define NEW(X) -x B)#define NEW(X) x

C) #define NEW(X) (-x) D)#define NEW(X) (-x);

9.1.3 定义一个名为ABSVAL(X)的宏,产生它的参数的绝对值,正确的语句是( D )。 A) #define ABSVAL(X) (-x)

B) #define ABSVAL(X) (x<0 ? –x:x) C) #define ABSVAL(X) (x>0 ? x:-x) D) #define ABSVAL(X) ((x)<0 ?(-x):(x)) 9.1.4 下列格式中哪个是合法的( D)。

A) #define PI=3.14159 B) include "string.h" C) #include math.h; D) #define s(r) r*r 9.1.5 以下程序的输出结果是( B )。

#define MIN(x,y) (x)<(y)?(x):(y) main( )

{ int i=10,j=15,k; k=10*MIN(i,j);

printf("%d\\n",k); }

A) 10 B) 15 C) 100 D) 150 9.1.6 以下有关宏替换的叙述不正确的是( C )。

A) 宏替换只是字符替换 B) 宏名无类型

C) 宏名必须用大写字母表示 D) 宏替换不占用运行时间 9.1.7 设有以下宏定义,则执行语句“z=2*(N+Y(5+1));”后,z值为( C )。 #define N 3

#define Y(n) ((N+1)*n)

A) 42 B) 15 C) 48 D) 出错

9.1.8 设有以下定义:#define F(n) 2*n ,则表达式F(4+2)的值是( B )。 A) 12 B) 10 C) 22 D)20 9.1.9 关于预处理,以下叙述正确的是( B )。

A. 可以把define和if定义为用户标识符(即宏名或常量符号名)

B. 可以把define定义为用户标识符,但不能把if定义为用户标识符 C. 可以把if定义为用户标识符,但不能把define定义为用户标识符 D. define和if都不能定义为用户标识符 9.1.10 关于预处理,以下叙述正确的是( B )。

A. 预处理命令行必须位于C源程序的起始位置 B. 在C语言中,预处理命令行都以“#”开头

C. 每个C程序必须在开头包含预处理命令行:#include D. C语言的预处理不能实现宏定义和条件编译的功能

9.2 编程题

9.2.1 写出下列程序的运行结果,并上机予以验证。 #define LETTER 0 void main( )

{ char str[20]= "C Language",c; int i=0;


C语言程序设计基础教程 - 习题答案(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2010-2011学年第一学期期末试卷(1)出题人: -科目:心理健康

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: