p=m*n;
r=m%n;
/***********SPACE***********/
while(r!
=0)
{
/***********SPACE***********/
m=n;n=r;r=m%n;
}
/***********SPACE***********/
gcd=n;
lcm=p/gcd;
/***********SPACE***********/
printf("gcd=%d,lcm=%d\n",gcd,lcm);
}
15:
以每行5个数来输出300以内能被7或17整除的偶数,并求出其和。
#include
#include
main()
{
inti,n,sum;
sum=0;
/***********SPACE***********/
n=0;
/***********SPACE***********/
for(i=1;i<=300;i++)
/***********SPACE***********/
if(i%7==0||i%17==0)
if(i%2==0)
{
sum=sum+i;
n++;
printf("%6d",i);
/***********SPACE***********/
if(n%5==0)
printf("\n");
}
printf("\ntotal=%d",sum);
}
16:
不用第三个变量,实现两个数的对调操作。
#include
main()
{
inta,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
/***********SPACE***********/
a=a+b;
/***********SPACE***********/
b=a-b;
/***********SPACE***********/
a=a-b;
printf("a=%d,b=%d\n",a,b);
}
17:
找出数组中最大值和此元素的下标,数组元素的值由键盘输入。
#include"stdio.h"
voidmain()
{
inta[10],*p,*s,i;
for(i=0;i<10;i++)
/***********SPACE***********/
scanf("%d",a+i);
/***********SPACE***********/
for(p=a,s=a;p-a<10;p++)
/***********SPACE***********/
if(*p>*s)s=p;
/***********SPACE***********/
printf("max=%d,index=%d\n",*s,s-a);
}
18:
输入学生成绩并显示。
#include
structstudent
{
charnumber[6];
charname[6];
intscore[3];
}stu[2];
voidoutput(structstudentstu[2]);
voidmain()
{
inti,j;
/***********SPACE***********/
for(i=0;i<2;i++)
{
printf("请输入学生%d的成绩:
\n",i+1);
printf("学号:
");
/***********SPACE***********/
scanf("%s",&stu[i].number);
printf("姓名:
");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("成绩%d.",j+1);
/***********SPACE***********/
scanf("%d",&stu[i].score[j]);
}
printf("\n");
}
output(stu);
}
voidoutput(structstudentstu[2])
{
inti,j;
printf("学号姓名成绩1成绩2成绩3\n");
for(i=0;i<2;i++)
{
/***********SPACE***********/
printf("%-6s%-6s",stu[i].number,stu[i].name);
for(j=0;j<3;j++)
printf("%-8d",stu[i].score[j]);
printf("\n");
}
}
19:
计算平均成绩并统计90分以上人数。
main()
{
intn,m;floatgrade,average;
/***********SPACE***********/
average=n=m=0;
while
(1)
{
/***********SPACE***********/
scanf("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
/***********SPACE***********/
if(grade<90)continue;
m++;
}
if(n)printf("%.2f%d\n",average/n,m);
}
20:
输入三个整数x,y,z,请把这三个数由小到大输出。
main()
{
intx,y,z,t;
scanf("%d%d%d",&x,&y,&z);
/***********SPACE***********/
if(x>y){t=x;x=y;y=t;}
/***********SPACE***********/
if(x>z){t=z;z=x;x=t;}
/***********SPACE***********/
if(y>z){t=y;y=z;z=t;}
printf("smalltobig:
%d%d%d\n",x,y,z);
}
21:
三角形的面积为:
area=sqrt(s*(s-a)*(s-b)*(s-c)).其中
,s=(a+b+c)/2,a、b、c为三角形三条边的长。
定义两个带
参数的宏,一个用来求s,另一个用来求area。
编写程序,
在程序中用带参数的宏求面积area。
#include"math.h"
/***********SPACE***********/
#defineS(x,y,z)(x+y+z)/2
#defineAREA(s,x,y,z)sqrt(s*(s-x)*(s-y)*(s-z))
main()
{
floata,b,c,s,area;
printf("a,b,c=");
/***********SPACE***********/
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&b+c>a&&c+a>b)
{
/***********SPACE***********/
s=S(a,b,c);
/***********SPACE***********/
area=AREA(s,a,b,c);
printf("area=%f\n",area);
}
}
24:
要求输出如下结果:
b=-1a=65535
a=65534
a=30b=6c=5
main()
{
/***********SPACE***********/
intb=-1,c;unsigneda;
/***********SPACE***********/
a=b;
printf("b=%da=%u\n",b,a);
/***********SPACE***********/
a+=b;
printf("a=%u\n",a);
/***********SPACE***********/
b=(a=30)/(c=5);
printf("a=%db=%dc=%d\n",a,b,c);
}
25:
用函数调用方式,实现字符串的复制。
voidstring_copy(char*str_from,char*str_to)
{
inti=0;
/***********SPACE***********/
for(;(*(str_to+i)=*(str_from+i))!
='\0';i++);
}
main()
{
staticchararray_str1[20]="Iamateacher.";
chararray_str2[20];
/***********SPACE***********/
string_copy(array_str1,array_str2);
/***********SPACE***********/
printf("array_str2=%s\n",array_str2);
}
26:
计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
#include
#include
#include
intfun(inthigh)
{
intsum=0,n=0,j,yes;
/***********SPACE***********/
while((high>=2)&&(n<10))
{
yes=1;
for(j=2;j<=high/2;j++)
/***********SPACE***********/
if(high%j==0)
{
yes=0;
break;
}
if(yes)
{
sum+=high;
n++;
}
high--;
}
/***********SPACE***********/
returnsum;
}
main()
{
clrscr();
printf("%d\n",fun(100));
}
27:
下面的程序是求1!
+3!
+5!
+……+n!
的和。
main()
{
longintf,s;
inti,j,n;
/***********SPACE***********/
s=0;
scanf("%d",&n);
/***********SPACE***********/
for(i=1;i<=n;i+=2)
{
f=1;
/***********SPACE***********/
for(j=1;j<=i;j++)
/***********SPACE***********/
f=f*j;
s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}
28:
打印以下图形。
*****
*****
*****
*****
*****
main()
{
chara[5][9]={""};
inti,j;
for(i=0;i<5;i++)
/***********SPACE***********/
for(j=i;j
a[i][j]='*';
/***********SPACE***********/
for(i=0;i<5;i++)
{
for(j=0;j<9;j++)
/***********SPACE***********/
printf("%c",a[i][j]);
/***********SPACE***********/
printf("\n");
}
}
29:
求一个二维数组中每行的最大值和每行的和。
#include"s