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("|%d-%d|=%d\n",a,b,c);
}
7.2 已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime( );用来判断一个整型数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。
isprime(int a)
{ }
7.3 已有变量定义和函数调用语句int a ,b;b=sum(a);函数sum()用以求,和数作为函数值返回。若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("Input a: "); scanf("%d",&a);
b=sum(a);
printf("%c(1,%d)=%d\n",228,a,b);
}
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]); /*求每行字符串的长度*/
输入一行字符,以空格分隔,单词只包含字母将每个单词存入字符串数组c求c中最长字符串的行号
输入一行字符,以空格分隔,单词只包含字母
将每个单词存入字符串数组c
求c中最长字符串的行号
输出
for(i=1;i
if(len[p]
/*找最长字符串的行号*/
printf("The word is : %s\n",c[p]);
}
main()
{ char a[80];
printf("Input a line string: "); gets(a);
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("Input error!\n"); exit(0);
/*如果输入了不合法的字母,输出相应的信息*/
}
else if(isdigit(a[i])) /*如果a[i]是数字*/
m=a[i]-'0';
else { pri