91.编一个子函数GCD,求两个正整数的最大公约数,主程序输入n个自然数,调GCD,求出这n个数的最大公约数。
#include
int GCD(int,int);
void main()
{
int a[100],i,n,k;
printf("请输入数组元素的个数:\n");
scanf("%d",&n);
printf("请输入%d个正整数:\n",n);
for(i=0;i
scanf("%d",&a);
k=GCD(a[0],a[1]);
for(i=2;i
k=GCD(k,a);
printf("输入的%d个正整数的最大公约数是:%d\n",n,k);
}
int GCD(int x,int y)
{
int i,min,p,q,gcd;
if(x<=y)
min=x;
else
min=y;
for(i=1;i<=min;i++)
{
p=x%i;
q=y%i;
if(p==0&&q==0)
gcd=i;
}
return gcd;
}
92.写函数求sin(x)的值。计算公式为:Sin(x)=X-X3/3!+X5/5!-X7/7!+ …+(-1)n-1X2n-1/(2n-1)!。
#include
float fun(float,int);
float sin(int,float);
float term(int);
void main()
{
int n;
float x;
printf("请输入n,x值:\n");
scanf("%d",&n);
scanf("%f",&x);
printf("sin(%f)=%f",x,sin(n,x));
}
float sin(int n,float x)
{
int i;
float s=0.0;
for(i=1;i<=n;i++)
s+=fun(-1.0,i-1)*fun(x,2*i-1)*term(2*i-1);
return s;
}
float fun(float x,int n)
{
int i;
float p=1.0;
for(i=0;i
p=p*x;
return p;
}
float term(int n)
{
int i;
float q=1.0;
for(i=1;i<=n;i++)
q/=i;
return q;
}
93.编一函数使用冒泡法对若干个整数按从小到大的顺序排序,主函数中输入若干个整数到一个一维数组中,调用排序函数,将其排序,最后将原数组和排好序的数组输出。
#include
#define N 10
void main()
{
int a[N],i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i
scanf("%d",&a);
printf("\n");
printf("原始数据为:\n");
for(i=0;i
printf("%d",a);
for(i=1;i<=N-1;i++)
{
for(j=0;j<=N-i-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
printf("\n排序后的数据为:\n");
for(i=0;i
printf("%d",a);
printf("\n");
}
94.求一个m行n列的二维数组中的这样一个原素;它在它所在的行为最大,在它所在的列为最小。
#include
#define N 4
#define M 5
void main()
{
int i,j,k,a[N][M],max,maxj,flag;
printf("please input matrix:\n");
for(i=0;i
for(j=0;j
scanf("%d",&a[j]);
for(i=0;i
{
max=a[0];
maxj=0;
for(j=0;j
if(a[j]>max)
{
max=a[j];
maxj=j;
}
flag=1;
for(k=0;k
if(max>a[k][maxj])
{
flag=0;
continue;
}
if(flag)
{
printf("a[%d][%d]=%d\n",i,maxj,max);
break;
}
}
if(! flag)
printf("It is not exist!\n");
}
95.编写一个函数求给定字符串长度,主函数中输入一个字符串,调用该子函数,求出该字符串的长度,输出。
#include
void main()
{
int length(char*p);
int len;
char str[20];
printf("input string:");
scanf("%s",str);
len=length(str);
printf("The length of string is %d.\n",len);
}
int length(char*p)
{
int n;
n=0;
while(*p!='\0')
{
n++;
p++;
}
return(n);
}
96.编写一个函数将给定字符串复制到另一个字符串中去,主函数中输入一个字符串,调用该子函数,复制出另一字符串,将两个串输出。
#include
#include
void main()
{
void copystr(char*,char*,int);
int m;
char str1[20],str2[20];
printf("\ninput string:");
gets(str1);
printf("which character that begin to copy?");
scanf("%d",&m);
if(strlen(str1)
printf("input error!");
else
{
copystr(str1,str2,m);
printf("result:%s\n",str2);
}
}
void copystr(char*p1,char*p2,int m)
{
int n;
n=0;
while(n
{
n++;
p1++;
}
while(*p1!='\0')
{
*p2=*p1;
p1++;
p2++;
}
*p2='\0';
}
97.写函数求Cos(x)=1+X2/2!-X4/4!+X6/6!- …+(-1)nX2n/(2n)!。
#include
float fun(float,int);
float cos(int,float);
float term(int);
void main()
{
int n;
float x;
printf("请输入n,x值:\n");
scanf("%d",&n);
scanf("%f",&x);
printf("cos(%f)=%f",x,cos(n,x));
}
float cos(int n,float x)
{
int i;
float s=-1.0;
for(i=1;i<=n;i++)
s+=fun(-1.0,i-1)*fun(x,2*i)*term(2*i);
return s;
}
float fun(float x,int n)
{
int i;
float p=1.0;
for(i=0;i
p=p*x;
return p;
}
float term(int n)
{
int i;
float q=1.0;
for(i=1;i<=n;i++)
q/=i;
return q;
}
98.编写一个函数将给定字符串中的大写字母转换成小写字母,主函数中输入一个字符串,调用该子函数,进行转换,将原字符串及转换后的字符串输出。
#include
void main()
{
int i;
char a[11];
gets(a);
puts(a);
for(i=0;i<10;i++)
if(a>=65&&a<=90)
a=a+32;
puts(a);
}
99.编写一个函数将给定的两个字符串连接成一个字符串:
格式为:strcat(ch1,ch2);
功能:将ch2复制到ch1的后面;
主函数中输入两个字符串,调用该子函数,求出连接之后的字符串,将两个原字符串及连接之后的结果串输出。
#include
#include
void main()
{
char str1[20],str2[8];
gets(str1);
gets(str2);
strcat(str1,str2);
printf("%s\n",str1);
}
100.用40元钱买苹果、西瓜和梨共100个,且三种水果都有。已知苹果0.4元一个,西瓜4元一个,梨0.2元一个。问可以买多少个?编程输出所有购买方案。
#include
void main()
{int i=1,j,k;
double r;
printf("苹果 西瓜 梨\n");
while (i<=100)
{
j=1;
while(j<=(10-i))
{
k=100-i-j;
r=2*i/5+4*j+i/5;
if(r<=40)
printf("%d%7d%7d\n",i,j,k);
j++;
}
i++;
}
}
101.编程:建立一个3×3的二维整数数组,求两条对角线上元素值得和,并将结果输出。(用函数调用方式编程)
102.编程计算:1*2*3+3*4*5+……+99*100*101的值。
#include
void main()
{
int i,j,k,sum=0;
for(i=1,j=2,k=3;i<100,j<101,k<102;i+=2,j+=2,k+=2)
sum=sum+i*j*k;
printf("%d\n",sum);
}
103.有一个5×4的矩阵,编程实现:找出该矩阵中每行元素的最大值,并使该值成为该行的首列元素。
#include
void main ()
{
int a[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},b[5][4]={6,7,8,9,2,7,8,7,4,8,9,5,2,4,6,7,2,4,1,2},t,i,j,k,p;
int max[5]={6,2,4,2,2};
for(i=0;i<5;i++)
{for(j=1;j<4;j++)
if(a[j]>max)
{
max=a[j];
}
}
for(k=0;k<5;k++)
{for(p=1;p<4;p++)
if(max[k]!=b[k][p])
{b[k][p]=b[k][p];}
else
{ t=b[k][0];
b[k][0]=b[k][p];
b[k][p]=t;
}
}
for(k=0;k<5;k++)
for(p=0;p<4;p++)
printf("\nb[%d][%d]=%d",k,p,b[k][p]);
printf("\n");
}
104.编写一个程序,使输入的一个字符串按反序存放在一字符数组中,然后输出。要求:
(1)在主调函数中输入字符串;
(2)写函数完成由主调函数传递来的字符串按反序存放;
(3)在主调函数中输出结果。
#include
#include
void main()
{
void inverse(char str[]);
char str[100];
printf("输入字符串:\n");
gets(str);
inverse(str);
printf("%s\n",str);
}
void inverse(char str[])
{char t;
int i,j;
for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--)
{t=str;
str=str[j-1];
str[j-1]=t;
}
}
105.从键盘输入五个字符串,分别求出字符串中长度最长和最短的字符串,请编程。(要求:不要使用strlen(_)函数编程)
106.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请编程实现。
#include
#define N 10
void main()
{
int a[N],b[N],i,j,min,max,p,t;
printf("请输入数据\n");
for(i=0;i
scanf("%d",&a);
for(i=0,j=0;i
b[j]=a;
for(j=0;j
printf("%3d",b[j]);
printf("\n");
for(i=1;i
{
if(a[0]>a)
{a[0]=a;
min=a[0];}
}
for(i=0;i
{
if(a[N-1]
{a[N-1]=a;
max=a[N-1];}
}
for(j=0;j
{
if(min!=b[j])
{b[j]=b[j];}
else
{t=b[0];
b[0]=b[j];
b[j]=t;
}
}
for(j=0;j
{if(max!=b[j])
{b[j]=b[j];}
else
{p=b[N-1];
b[N-1]=b[j];
b[j]=p;
}
}
for(j=0;j
printf("%3d",b[j]);
printf("\n");
}
107.写一个判断素数的函数,在主函数中调用素数的判断函数,求出2到1000之间的素数的累加和,将结果输出,请编程。
#include
#include
int isprime(int);
void main()
{
int i,sum=0;
for (i=2;i<=1000;i++)
if (isprime(i))
sum=sum+i;
printf("%d\n",sum);
}
int isprime(int a)
{
int j;
for(j=2;j<=sqrt(a);j++)
if(a%j==0) return 0;
return 1;
}
108.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
#include
int letter,digit,space,others;
void main()
{
void count(char[]);
char text[80];
printf("输入字符串:\n");
gets(text);
printf("字符串是:");
puts(text);
letter=0;
digit=0;
space=0;
others=0;
count(text);
printf("letter:%d,digit:%d,space:%d,others:%d\n",letter,digit,space,others);
}
void count(char str[])
{int i;
for(i=0;str!='\0';i++)
if((str>='a'&&str<='z')||(str>='A'&&str<='Z'))
letter++;
else if(str>='0'&&str<='9')
digit++;
else if(str==32)
space++;
else
others++;
}
109.请编程实现:将两个字符串s1和s2比较,如果s1>s2,输出一个正数;s1
要求:不要用strcpy函数,两个串用gets函数读入,输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCⅡ码的差值。
#include
void main()
{
int i,resu;
char str1[100],str2[200];
printf("请输入str1:\n");
gets(str1);
printf("请输入str2:\n");
gets(str2);
i=0;
while((str1==str2)&&(str1!='\0')) i++;
if(str1=='\0'&&str2=='\0') resu=0;
else
resu=str1-str2;
printf("%d\n",resu);
}
110.编写一个函数,由实参传来一个字符串,把串中所有大写字母变成相应的小写字母;原串中所有的小写字母变成相应的大写字母,在主函数中输入原字符串和输出变换后的字符串,请编程。
#include
void strupr(char str[]);
void main()
{
char text[20];
printf("请输入字符串:\n");
gets(text);
printf("%s\n",text);
strupr(text);
printf("%s\n",text);
}
void strupr(char str[])
{
int i;
for(i=0;str!='\0';i++)
if(str>='a'&&str<='z')
str=str+'A'-'a';
else if(str>='A'&&str<='Z')
str=str-'A'+'a';
}
111.编程实现:由键盘输入的任意一组字符中统计出大写字母的个m和小写字母的个数n,并输出m、n中的较大者。
#include
int fmax(int x,int y);
void main()
{
char str[80];
int m=0,n=0,i=0,k=0,c;
printf("请输入一个字符串\n");
gets(str);
for(i=0;str!='\0';i++)
if('A'<=str&&str<='Z')
++m;
else if('a'<=str&&str<='z')
++n;
else
++k;
printf("有%d个大写字母,有%d个小写字母:\n",m,n);
c=fmax(m,n);
printf("max=%d\n",c);
}
int fmax(int x,int y)
{
int z;
z=x>y?x:y;
return z;
}
112.定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,请编程。
#include
void main()
{
int a[30] ,i,j=0,b[6][5],p,k;
int c[6];
for(i=0;i<30;i++)
a=2*(i+1);
for(i=0;i<30;i++)
{
printf("%3d",a);
j++;
if(j%5==0) printf("\n");}
for(p=0;p<5;p++)
for(k=0;k<6;k++)
b[k][p]=a[5*k+p];
for(k=0;k<6;k++)
c[k]=(b[k][0]+b[k][1]+b[k][2]+b[k][3]+b[k][4])/5;
for(k=0;k<6;k++)
{printf("%3d",c[k]);}
printf("\n");
}
113.输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一:
(1)能同时被3,5,7整除;
(2)能被其中两数(要指出哪两个数)整除;
(3)能被其中一个数(要指出哪个数)整除。
#include
void main()
{
int a;
printf("请输入一个整数\n");
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
printf("%d能同时被3,5,7整除\n",a);
else if(a%3!=0&&a%5==0&&a%7==0)
printf("%d能同时被5,7整除\n",a);
else if(a%3==0&&a%5!=0&&a%7==0)
printf("%d能同时被3,7整除\n",a);
else if(a%3==0&&a%5==0&&a%7!=0)
printf("%d能同时被3,5整除\n",a);
else if(a%3==0&&a%5!=0&&a%7!=0)
printf("%d能被3整除\n",&a);
else if(a%3!=0&&a%5==0&&a%7!=0)
printf("%d能被5整除\n",a);
else if(a%3!=0&&a%5!=0&&a%7==0)
printf("%d能被7整除\n",a);
else printf("%d不能被3,5,7整除\n",a);
}