好文档 - 专业文书写作范文服务资料分享网站

c语言课后习题第7章函数

天下 分享 时间: 加入收藏 我要投稿 点赞

习 题 7

7.1 已有变量定义和函数调用语句:int a=1,b=–5,c;c=fun(a,b);fun函数的作用是计算

两个数之差的绝对值,并将差值返回调用函数,请编写fun函数。 Fun(int x,int y) { }

7.1 求两数之差绝对值 #include fun(int x,int y) { return abs(x-y); } main()

{ int a=1,b=-5,c; c=fun(a,b);

printf(\}

7.2 已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime( );用来判断

一个整型数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。 isprime(int a) { }

7.3 已有变量定义和函数调用语句int a ,b;b=sum(a);函数sum()用以求

?k,和数作为

k?1n函数值返回。若a的值为10,经函数sum的计算后,b的值是55。请编写sum函数。 Sum(int n) { } 7.3 求∑k

#include sum(int n) { int k,s=0;

for(k=1;k<=n;k++) s=s+k; return s; }

main() { int a,b;

printf(\ b=sum(a);

printf(\}

7.4 一函数,输入一行字符,将此字符串中最长的单词输出。

7.4 输出最长的单词,假设只包含字母和空格,单词间以空格分隔,空格个数不限 #include void fun(char a[])

{ int n,i,j,k=0,len[80],p; char c[80][80],max[80]; n=strlen(a); for(i=0;i

if(a[i]!=32) /*a[i]不为空格,说明单词开始了*/ { j=0;

while(a[i]!=32) /*没有遇到下一个空格,说明单词没有结束*/ { c[k][j]=a[i]; j++; i++; } /*将单词放入字符串c[k]*/ c[k][j]='\\0'; /*人为加串尾标志*/

k++; /*k为下一个单词存入c的行号*/ }

for(i=0;i

len[i]=strlen(c[i]); /*求每行字符串的长度*/ p=0;

输入一行字符,以空格分隔, for(i=1;i

单词只包含字母 if(len[p]

/*找最长字符串的行号*/

将每个单词存入字符串数组 printf(\

求c中最长字符串的行号 }

main() 输出 { char a[80];

printf(\ fun(a); }

7.5 一函数,输入一个十六进制数,输出相应的十进制数。 7.5 十六进制数转换成十进制数 #include #include int fun(char a[]) { int i,n=0,m;

for(i=0;a[i];i++) { if(isalpha(a[i]))

/*如果a[i]是字母,求出相应的十进制数*/ switch(a[i]) { case 'a': case 'A': m=10; break;

case 'b':

case 'B': m=11; break; case 'c':

case 'C': m=12; break; case 'd': case 'D': m=13; break; case 'e': case 'E': m=14; break; case 'f': case 'F': m=15; break; default: printf(\ /*如果输入了不合法的字母,输出相应的信息*/ }

else if(isdigit(a[i])) /*如果a[i]是数字*/ m=a[i]-'0';

else { printf(\

/*如果输入了不合法的字符,输出相应的信息*/ n=n*16+m; /*将十六进制数转换成十进制数*/ }

return n; }

main()

{ char a[80]; int n;

printf(\ n=fun(a);

printf(\}

7.6 给出年、月、日,计算该日是该年的第几天。 #include int fun(year,month,day) { int n=0,i;

n=n+day; /*累加当月的天数*/

for(i=month-1;i>0;i--) /*累加前面月份的天数*/ switch(i)

{ case 12: n=n+31; case 11: n=n+30; case 10: n=n+31; case 9: n=n+30; case 8: n=n+31; case 7: n=n+31; case 6: n=n+30; case 5: n=n+31;

case 4: n=n+30; case 3: n=n+31;

case 2: if(year%4==0&&year0!=0||year@0==0)

n=n+28;

else n=n+29; /*根据year判断闰年或平年,进行累加*/ case 1: n=n+31; }

return n; /*返回天数*/ }

main()

{ int year,month,day;

printf(\

printf(\}

7.7 定义一个函数digit(n,k),它回送整数n的从右边开始数第k个数字的值。例如: digit(15327,4)=5 digit(289,5)=0

7.7 回送第k个数字 #include int fun(long n,int k) { int i,m ;

for(i=1;i<=k;i++)

{ m=n; /*从右边分离出第i个数字*/

n=n/10; /*为下一次分离作准备*/ }

return m; /*返回第k次分离出的数字*/ }

main()

{ long int n; int k;

printf(\ printf(\

printf(\}

7.8 计算s。已知 s=10!+7!*8!

将n!定义成函数。

#include

double fun(int n) { double f=1.0; int i; for(i=1;i<=n;i++) f=f*i; /*求n!*/

return f; /*返回阶乘值*/ }

main()

{ printf(\

7.9 定义一个函数,使给定的二维数组(3×3)转置,即行列转换,并输出。 7.9 矩阵转置 #include void convert(int a[][3]) { int i,j,t;

for(i=0;i<3;i++) for(j=0;j

{ t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; } } /*矩阵转置*/ main()

{ int a[3][3],i,j;

printf(\ for(i=0;i<3;i++) for(j=0;j<3;j++)

scanf(\读入数据*/ printf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(\ printf(\

} /*输出原始数据*/

convert(a); /*调用函数进行处理*/ printf(\ for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(\ printf(\

} /*输出转置后的数据*/ }

7.10 写几个函数:①输入10个职工的性名和职工号;②按职工号由小到大的顺序排序,

姓名顺序也随之调整;③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工的姓名。

c语言课后习题第7章函数

习题77.1已有变量定义和函数调用语句:inta=1,b=–5,c;c=fun(a,b);fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数,请编写fun函数。Fun(intx,inty){}7.1求两数之差绝对值#includefun(intx
推荐度:
点击下载文档文档为doc格式
3a9ha8cljw6cyp27lz4y3h0qq02ukg01bww
领取福利

微信扫码领取福利

微信扫码分享