C语言上机 经典题目1.docx
《C语言上机 经典题目1.docx》由会员分享,可在线阅读,更多相关《C语言上机 经典题目1.docx(16页珍藏版)》请在冰豆网上搜索。
C语言上机经典题目1
《C程序设计2》实验内容
实验一:
循环控制
(一)
1、编程计算S=1*2+2*3+……+39*40
#include"stdio.h"
main()
{inta,b,S=0;
for(a=1;a<39;a++){b=a+a+1;S=S+b;}
printf("S=%d\n",S);
getch();
}
2、编程计算S=
=1!
+2!
+……+7!
#include"stdio.h"
main()
{
floatn,s=0,t=1;
for(n=1;n<=7;n++)
{
t*=n;
s+=t;
}
printf("1+2!
+3!
...+20!
=%.0f\n",s);
getch();
}
3、编写程序,计算如果每年按照年利率I(例如2%),投资S(例如5000),在第Y(例如10)年得到的总钱数M。
公式:
M=S*(1+I)Y
#include"stdio.h"
main()
{
floati,s,y,j,m,c=1;
printf("pleaseinputI,S,Y:
\n");
scanf("%f,%f,%f",&i,&s,&y);
m=s;
for(j=1;j<=y;i++)
{c=1+i;
m=m*c;}
printf("m=%f\n",m);
getch();
}
4、编程输出九九乘法表。
#include"stdio.h"
main()
{inti,j;
for(i=1;i<10;i++)
{for(j=1;j<=i;j++)
printf("%d*%d=%-5d",i,j,(i*j));
printf("\n");};
getch();
}
实验二:
循环控制
(二)
1、编写程序,输入一组字符(以#号结尾),对该组字符做一个统计,统计字母、数字和其它字符的个数,输出统计结果。
#include"stdio.h"
main()
{
inti=0,j=0,k=0;
charch;
for(;ch!
='#';)
{
scanf("%c",&ch);
if('0'<=ch&&ch<='9')
i=i+1;
elseif('a'<=ch&&'z'>=ch||'A'<=ch&&'Z'>=ch)
j=j+1;
elsek=k+1;
}
printf("shuzi=%d\tzimu=%d\tqita=%d\n",i,j,k);
getch();
}
2、编写程序,用循环语句输出下列图形:
*
***
*****
*******
*********
*******
*****
***
*
#include"stdio.h"
main()
{
inti,j,k;
for(i=0;i<=4;i++)
{
for(j=0;j<=3-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=3;i++)
{
for(j=0;j<=i;j++)
printf("");
for(k=0;k<=6-2*i;k++)
printf("*");
printf("\n");
}
getch();
}
3、请为“百鸡问题”编写程序。
百鸡问题:
“鸡翁一,值钱五;鸡母一,值钱三;鸡雏一,值钱一。
百元买百鸡,问鸡翁、母、雏各几只”
#include"stdio.h"
main()
{
inti,j,k;
for(i=0;i<20;i++)
for(j=0;j<=33;j++)
for(k=0;k<100;k++)
{
while((k+i+j==100)&&(5*i+3*j+k/3==100)&&(k%3==0))
{printf("chocks:
%d\thens:
%d\tchicks:
%d\tzongshu:
%d\n",i,j,k,i+j+k);
break;}
}
getch();
}
实验三:
数组
(一)
1、由键盘对10个数组元素初始化,求它们的平均值并输出。
#include"stdio.h"
main()
{
floata[10]={0};
inti;
floatt,m;
t=0;
printf("pleaseinputtennumbers:
\n");
for(i=0;i<9;i++)
{scanf("%f",&a[i]);
t=t+a[i];}
m=t/10;
printf("pinjunshu=%f",m);
getch();
}
2、输入一个十进制整数,输出与其相等的二进制形式。
将二进制保存在一个数组中,然后按相反的顺序输出。
#include
main()
{
intshi,n=99;
inti,a[100];
printf("pleaseinputanumber:
\n");
scanf("%d",&shi);
while(shi>0)
{
a[n--]=shi%2;
shi=shi/2;
}
printf("answeris:
");
for(i=99;i>n;i--)
printf("%d",a[i]);
getch();
}
3.编程对10个数组元素的排序。
#include"stdio.h"
main()
{
inta[10]={0};
inti,j,t;
printf("pleaseinputtennumbers:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=0;i<9;i++)
{if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;};
};
printf("theansweris:
");
for(i=0;i<10;i++)
printf("%d",a[i]);
getch();
}
实验四:
数组
(二)
1、由键盘对4×4的二维数组初始化,计算其两条对角线元素之和并输出。
#include"stdio.h"
main()
{
intm,n,j,k,b[4][4];
printf("pleaseinput16numbers:
\n");
for(m=0;m<4;m++)
for(n=0;n<4;n++)
scanf("%d",&b[m][n]);
j=b[0][0]+b[1][1]+b[2][2]+b[3][3];
k=b[3][0]+b[2][1]+b[1][2]+b[0][3];
printf("theanswersare:
%d%d",j,k);
getch();
}
2通过二维数组实现杨辉三角的前10行并输出。
杨辉三角形式请参考教材P153。
#include"stdio.h"
main()
{
staticintm,n,b[10][10];
b[0][1]=1;
for(m=1;m<11;m++)
{for(n=1;n<=m;n++)
{b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-8d",b[m][n]);}
printf("\n");}
getch();
}
3\将M×N的矩阵转置成N×M的矩阵并输出.
#include"stdio.h"
main()
{intm,n,i,j;
intb[4][3],a[3][4];
printf("pleaseinput12numbers:
\n");
for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
printf("shuzub[4][3]:
\n");
for(m=0;m<=3;m++)
{for(n=0;n<=2;n++)
{printf("%5d",b[m][n]);
a[n][m]=b[m][n];}
printf("\n");}
printf("\n");
printf("shuzua[3][4]:
\n");
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf("%d",a[i][j]);
printf("\n");}
getch();
}
实验五:
函数
(一)
1、定义函数返回两个数中的最大数,在主函数中通过调用该函数求三个数中较大的数并输出。
intmax(inta,intb)
{
intt;
t=a>b?
a:
b;
return(t);
}
voidmain()
{
intmax(intx,inty);
intm,x,y,z;
printf("pleaseinputthreenumbers:
\n");
scanf("%d,%d,%d",&x,&y,&z);
m=max(x,max(y,z));
printf("zuidazhiis:
%d",m);
getch();
}
2、编写一个判断一个整数是否为素数的函数,并求出在2000以内的所有素数。
#include"stdio.h"
#include"math.h"
intSU(intx)
{
inti,k;
k=sqrt(x);
for(i=0;i<=k;i++)
if(x%i==0)break;
if(i>k+1)return(x);
}
main()
{intm;
for(m=2;m<2000;m++)
printf("%d\t",SU(m));
getch();
}
3、求方程ax2+bx+c=0的根,用三个函数分别求b2-4ac大于0、等于0和小于0的根,并输出结果。
从主函数输入a、b、c的值。
#include"stdio.h"
floatyishigen(m,n,k)
floatm,n,k;
{
floatx1,x2;
x1=(-n+sqrt(k))/(2*m);
x2=(-n-sqrt(k))/(2*m);
printf("twoshigenisx1=%.3fandx2=%.3f\n",x1,x2);
}
floatdenggen(m,n)
floatm,n;
{
floatx;
x=-n/(2*m);
printf("denggenisx=%.3f\n",x);
}
floatxugen(m,n,k)
floatm,n,k;
{floatx,y;
x=-n/(2*m);
y=sqrt(-k)/(2*m);
printf("twoxugenisx1=%.3f+%.3fiandx2=%.3f-%.3fi\n",x,y,x,y);
}
main()
{floata,b.c.q;
printf("inputabcis");
scanf("%f,%f,%f",&a,&b,&c);
printf("\n");
q=b*b-4*a*c;
if(q>0)yishigen(a,b.q);
elseif(q==0)denggen(a,b);
elsexugen(a,b,q);
getch()
}
实验六:
函数
(二)
1、编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述统计结果。
voidtongji(str0,b)
charstr0[10];
intb[4];
{inti;
for(i=0;i<10;i++)
{if(str0[i]<='z'&&str0[i]>='a'||str0[i]<='Z'&&str0[i]>='A')b[0]++;
elseif(str0[i]<='9'&&str0[i]>='0')b[1]++;
elseif(str0[i]=='')b[2]++;
elseb[3]++;
}
}
#include"string.h"
voidmain()
{
charstr1[10];
inta[4]={0},i;
printf("pleaseinputastring:
\n");
for(i=0;i<10;i++)
scanf("%c",&str1[i]);
tongji(str1,a);
printf("zimunumbersis%-3d\n",a[0]);
printf("shuzinumbersis%-3d\n",a[1]);
printf("konggenumbersis%-3d\n",a[2]);
printf("qitanumbersis%-3d\n",a[3]);
getch();
}
2、定义一个函数replace(),其中包含三个形参:
两个是字符型,一个是字符串型。
该函数返回一个整数。
函数的功能是在字符串中查找第一个字符,如果找到,用第二个字符替换该字符,并将替换的次数作为返回值。
编写主函数调用该函数。
#include"stdio.h"
#include"string.h"
intreplace(chara,charb,charc[50])
{inti=0,t=0;
while(c[i]!
='\0')
{if(c[i]==a)
{c[i]=b;t++;}i++;}return(t);}
main()
{inta;
charstr[50];
chars1,s2;
printf("pleaseinputstr:
\n");
gets(str);
printf("\npleaseinputs1:
\n");
scanf("%c",&s1);getchar();
printf("\npleaseinputs2:
\n");
scanf("%c",&s2);getchar();
a=replace(s1,s2,str);
printf("thereplacedstris:
\n");
puts(str);
printf("\n%d",a);
getch();
}
实验七:
编译预处理
1、输入输入两整数,求它们相除的余数,用带参数的宏来实现。
#defineMOD(x,y)x%y
main()
{
inta,b,c;
printf("pleaseinputtwonumbers:
\n");
scanf("%d,%d",&a,&b);
printf("%d\n",MOD(a,b));
getch();
}
2、三角的面积为area=
,其中s=
。
a、b、c为三角形的三边。
定义两个带参数的宏,一个用来求s,另一个用来求area。
写程序,在主程序中用带实参的宏名来求面积area。
#include"math.h"
#defineSSS(m,n,k)(m+n+k)/2
#defineAQRT(m,n,k)sqrt(((m+n+k)/2)*((m+n+k)/2-m)*((m+n+k)/2-n)*((m+n+k)/2-k))
main()
{floata,b,c;
printf("pleaseinputthreenumbers:
\n");
scanf("%f,%f,%f",&a,&b,&c);
printf("s=%f;area=%f\n",SSS(a,b,c),AQRT(a,b,c));
getch();
}