7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
两个整数由键盘输入。
hcf(u,v)int u,v;{ int a,b,t,r;if(u>v){ t=u;u=v;v=t; }a=u;b=v;while((r=b%a)!=0){ b=a;a=r; }return(a);}lcd(u,v,h)int u,v,h;{ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.d=%dn",l);return(u*v/h);}#include <stdio.h>void main(){ int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%dn",h);l=lcd(u,v,h);printf("L.C.D=%dn",l);}7.2 求方程根float x1,x2,disc,p,q; greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); }equal_to_zero(a,b)float a,b;{ x1=x2=(-b)/(2*a);}smaller_than_zero(a,b)float a,b;{ p=-b/(2*a);q=sqrt(disc)/(2*a);}main(){float a,b,c;printf("n输入方程的系数a,b,c:n");scanf("%f,%f,%f",&a,&b,&c);printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c);disc=b*b-4*a*c;printf("方程的解是:n");if(disc>0){ great_than_zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else if(disc==0){zero(a,b);printf("X1=%5.2ftX2=%5.2fnn",x1,x2);}else{small_than_zero(a,b,c);printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q);}}7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
#include<stdio.h>#include<math.h>void main(){ int number;scanf("%d",&number);if(prime(number))printf("yes");elseprintf("no");}int prime(number)int number;{ int flag=1,n;for(n=2;n<sqrt(number);n++)if(number%n==0)flag=0;return(flag);}7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。
#define N 3int array[N][N];convert(array)int array[3][3];{ int i,j,t;for(i=0;i<N;i++)for(j=j+i;j<N;j++){ t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){int i,j;printf("输入数组元素:n");for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&array[i][j];printf("n数组是:n");for(i=0;i<N;i++){ for(j=0;j<N;i++)printf("%5d",array[i][j]);printf("n");}convert(array);printf("转置数组是:n");for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%5d",array[i][j]);printf("n");}}7.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include <stdio.h>#include <strung.h>void main(){char str[100];printf("输入字符串:n");scanf("%s",str);inverse(str);printf("转换后的字符串是: %sn",str);}inverse(str)char str[];{char t;int i,j;for(i=0,j=strlen(str);i<(strlen(str)/2;i++,j--) {t=str[i];str[i]=str[i-1];str[i-1]=t;}}7.6 写出一个函数,将两个字符串连接。
char concatenate(string1,string2,string);char string1[],string2[],string[];{int i,j;for(i=0;string1[i]!='';i++)string[i]=string1[i];for(j=0;string2[j]!='';j++)string[i+j]=string2[j];string[i+j]='';}#include<stdio.h>void main(){char s1[100],s2[100],s[100];printf("n输入字符串1:n");scanf("%s",s1);printf("输入字符串2:n");scanf("%s",s2);concatenate(s1,s2,s);printf("连接后的字符串:%sn",s);}7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但是两个数字间空一个空格。
#include<stdio.h>void main(){char str[80];printf("请输入含有四个数字的字符串:n");scanf("%s",str);insert(str);}insert(str)char str[];{int i;for(i=strlen(str);i>0;i--){ str[2*i]=str[i];str[2*i-1]=' ';}printf("n 结果是:n %s",str);}7.9 编写一个函数,由实参传来一个字符串字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include<math.h>int alph,digit,space,others;void main(){ char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf("nalph=%d,digit=%d,space=%d,others=%dn",alph,digit,spac e,others);}count(str)char str[];{ int i;for(i=0;str[i]!='';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(strcmp(str[i],' ')==0)space++;elseothers++;}。