C语言程序简单例子.docx
《C语言程序简单例子.docx》由会员分享,可在线阅读,更多相关《C语言程序简单例子.docx(27页珍藏版)》请在冰豆网上搜索。
![C语言程序简单例子.docx](https://file1.bdocx.com/fileroot1/2023-2/6/4de4fb87-507a-4397-b414-451437407490/4de4fb87-507a-4397-b414-4514374074901.gif)
C语言程序简单例子
实验二参考答案
1.输入两个整型数字,输出他们的和。
#include
main()
{
inta,b,sum;
scanf(“%d%d”,&a,&b);
sum=a+b;
printf(“a+b=%d”,sum);
}
2.输入两个实型数,输出他们的和与乘积。
#include
main()
{
floata,b,sum,product;
scanf(“%f%f”,&a,&b);
sum=a+b;
product=a*b;
printf(“a+b=%5.2f,a*b=%5.2f”,sum,product);
}
3.求方程
的根(设
)(其中a,b,c的值由键盘输入)。
#include
#include
main()
{
floata,b,c,dt,x1,x2;
scanf(“%f%f%f”,&a,&b,&c);
dt=sqrt(b*b-4*a*c);
x1=(-b+dt)/(2*a);
x2=(-b-dt)/(2*a);
printf(“x1=%5.2f,x2=%5.2f”,x1,x2);
}
4.鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只?
(h和f的值由键盘输入,输出鸡和兔的头数)
#include
main()
{
inth,f,x,y;
scanf(“%d%d”,&h,&f);
x=2*h-f/2;
y=f/2-h;
printf(“x=%d,y=%d”,x,y);
}
实验三参考答案
1.输入三个数a、b、c,要求按由小到大的顺序输出。
#include
main()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{
t=a;a=b;b=t;
}
if(a>c)
{
t=a;a=c;c=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
printf(“%f,%f,%f”,a,b,c);
}
2.编写程序,输入三角形三边a、b、c,判断a、b、c能否构成三角形,若不
能则输出相应的信息,若能则判断组成的是等腰、等边、直角还是一般三角形。
(1)
#include
main()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
if(a+b>c)
{
if(a==b||b==c)
{
if(a==c)printf(“等边三角型”);
elseif(c*c==a*a+b*b)printf(“等腰直角三角形”);
elseprintf(“一般等腰三角形”);
}
elseif(c*c==a*a+b*b)printf(“一般直角三角形”);
elseprintf(“一般三角形”);
}
elseprintf(“不构成三角形”);
}
(2)
#include
main()
{
floata,b,c,t;
scanf(“%f,%f,%f”,&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
if(a+b<=c)printf(“不构成三角形”);
elseif(a==b&&b==c&&a==c)printf(“等边三角型”);
elseif(a==b&&c*c==a*a+b*b)printf(“等腰直角三角形”);
elseif(a==b)printf(“一般等腰三角形”);
elseif(c*c==a*a+b*b)printf(“一般直角三角形”);
elseprintf(“一般三角形”);
}
3.编程实现下列函数
x(x<1)
y=2x-1(
)
|3x-11|(
)
#include
#include
main()
{
intx,y;
printf("inputx=:
");
scanf("%d",&x);
if(x<1)y=x;
elseif(x<10)y=2*x-1;
elsey=abs(3*x-11);
printf("x=%dy=%d\n",x,y);
}
4.编写程序,输入一百分制成绩,对应输出等级A、B、C、D、E,90分以上为A,80分—89分为B,70分—79分为C,60分—69分为D,60分以下为E。
方法一:
用if语句
#include
main()
{
floatscore;
chargrade;
scanf("%f",&score);
if(score>100||score<0)printf("\ninputerror!
");
else
{
if(score>=90)grade='A';
elseif(score>=80)grade='B';
elseif(score>=70)grade='C';
elseif(score>=60)grade='D';
elsegrade='E';
}
printf("thestudentgrade=%c\n",grade);
}
方法二:
用switch语句。
注意,case后的表达式必须是一个常量表达式,所以在以用switch语句之前,必须把0~100之间的成绩分别化成相关的常量。
所有A(除100以外),B,C,D类的成绩的共同特点是十位数相同,此外都是E类。
则由此可得把score除十取整,化为相应的常数。
#include
main()
{
floatscore,
ints;
chargrade;
scanf("%f",&score);
s=score/10;
if(s<0||s>10)printf("\ninputerror!
");
else
{
switch(s)
{
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
default:
grade='E';
}
printf("thestudentgrade=%c\n",ch);
}
}
实验四参考答案
1.编写程序,计算以下级数前n项之和。
#include
voidmain()
{
inti,n;
floats=1.0,sum=1.0,x;
scanf(“%d,%f”,&n,&x);
for(i=1;i<=n;i++)
{
s=s*x/i;
sum=sum+s;
}
printf(“sum=%5.2f”,sum);
}
2.编程打印如下图案(书后习题第3题):
**
****
******
********
**********
************
**************
#include
main()
{
inti,j,n;
for(i=1;i<=7;i++)
{
for(j=0;j<14-2*i;j++)printf("");
for(j=0;j<2*i;j++)printf("*");
printf("\n");
}
}
3.编写程序实现输入整数n,输出如下所示由数字组成的菱形。
(图中n=5)
1
121
12321
1234321
123454321
1234321
12321
121
1
#include
main()
{
inti,j,n;
scanf("%d",&n);
for(i=1;i{
for(j=1;j
for(j=i;j>0;j--)printf("%d",j);
printf("\n");
}
for(i=n;i>0;i--)
{
for(j=1;j
for(j=i;j>0;j--)printf("%d",j);
printf("\n");
}
}
4.输出Fibonacci数列第n项。
其数列通项公式为Fn=Fn-1+Fn-2,F1=1,F2=1。
方法一:
#include
main()
{
floatf,f1=1,f2=1;
inti,n;
scanf("%d",&n);
for(i=3;i<=n;i++)
{
f=f1+f2;
f1=f2;
f2=f;
}
printf("%10.0f\n",f);
}
方法二:
#include
#defineNUM20
voidmain()
{
inti;
floatf[NUM]={1,1};
for(i=2;if[i]=f[i-2]+f[i-1];
for(i=0;iprintf("%10.0f\n",f[i]);
}
实验五参考答案
1.编写程序,将1,2,3这三个数赋给数组a,将5,6,7赋给数组b,将两数组对应元素相加的和赋给数组c,输出数组c
#include
voidmain()
{
inta[3]={1,2,3},b[3]={4,5,6},c[3];
inti;
for(i=0;i<3;i++)
{
c[i]=a[i]+b[i];
printf("%d",c[i]);
}
}
2.输入任意10个数,按从大到小或从小到大的顺序输出(“冒泡”排序)
#include
#defineNUM10
voidmain()
{
inta[NUM],i,j,temp,flag;
printf("input%dnumbers:
\n",NUM);
for(i=0;iscanf("%d",&a[i]);
for(i=1;ifor(j=0;j{
flag=0;
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;
}
if(flag==0)break;
}
printf("thesortednumbers:
\n");
for(i=0;iprintf("%d",a[i]);
}
3.输入10个整数并存放在一维数组中,找出其中最大值和此元素的下标
#include
#defineNUM10
voidmain()
{inta[NUM];
inti,max,index;
for(i=0;iscanf("%d",&a[i]);
max=a[0];
for(i=0;i{
if(max{
max=a[i];
index=i;
}
}
printf("max=%d,index=%d",max,index);
}
4.将从键盘输入的字符串进行逆序输出,逆序后的字符串仍然保留在原来字符数组中。
(不得调用任何字符串处理函数包括strlen)
#include
#defineNUM80
voidmain()
{chara[NUM],temp;
inti,j,index;
for(i=0;i{
scanf("%c",&a[i]);
if(a[i]=='\n')break;
}
a[i]='\0';
index=i;
for(i=0,j=index-1;i<=index/2;i++,j--)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i{
if(a[i]=='\0')break;
printf("%c",a[i]);
}
printf("\n");
}
实验五参考答案
1.编写函数,求表达式
的值,x有由主函数输入。
(请同学们用有返回值和无返回值两种方式去做,练习简单的函定义、声明、及调用方法)
有返回值
#include
floatfun(floatx)
{
floatm ;
m=x*x-5*x+4;
returnm ;
}
voidmain()
{
floata,f;
scanf("%f",&a);
f=fun(a);
printf("%f\n",f);
}
无返回值
#include
voidfun(floatx)
{
floatm ;
m=x*x-5*x+4;
printf("%f\n",m);
}
voidmain()
{
floata;
scanf("%f",&a);
fun(a);
}
2.编写函数,按如下递归公式求函数值。
1(n=0)
fun(n)=
(n>0)
#include
intfun(intn)
{
intm;
if(n==0)m=1;
else
m=2*fun(n-1)+1;
returnm;
}
voidmain()
{
inta,f;
scanf("%d",&a);
f=fun(a);
printf("%d\n",m);
}
3.编写函数求数n所有质因子(所有为素数的因子)并输出,n由主函数输入。
#include
#include
intprime(intm)
{
intj;
if(m==1)return0;
elseif(m==2)return1;
elseif(m%2==0)return0;
else
for(j=3;j<=sqrt(m);j+=2)
if(m%j==0)return0;
return1;
}
voidmain()
{
inti,n,flag;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(n%i==0)flag=prime(i);
elseflag=0;
if(flag==1)printf("%d\n",i);
}
}
4.哥德巴赫猜想之一是,任何一个大于5的偶数都可以表示为两个素数之和。
编写程序验证这一论断。
#include
intprime(intm)
{
intj;
if(m==1)return0;
elseif(m==2)return1;
elseif(m%2==0)return0;
else
for(j=3;j<=sqrt(m);j+=2)
if(m%j==0)return0;
return1;
}
main()
{
inta,b,c,n;
scanf("%d",&n);
for(a=6;a<=n;a+=2)
for(b=3;b<=a/2;b+=2)
if(prime(b)==1)
{
c=a-b;
if(prime(c)==1)
{
printf("%d=%d+%d\n",a,b,c);
break;
}
}
}
5.二维数组score中存放5个学生的3门课成绩,由主函数输入一个数,将所有总成绩大于该数的学生输出。
#include
voidmax(floata[5][3],floatscore)
{
inti,j;
floats;
for(i=0;i<5;i++)
{
s=0;
for(j=0;j<3;j++)
s=s+a[i][j];
if(s>score)
printf("stu%d:
%.2f\n",i+1,s);
}
}
voidmain()
{
inti,j;
floata[5][3];
floatscore;
printf("pleaseinputnumber:
\n");
for(i=0;i<5;i++)
{
printf("stu%d:
",i+1);
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
printf("\n");
}
printf("pleaseinputscore:
");
scanf("%f",&score);
max(a,score);
}
实验七参考答案
1.用指针变量输出任意4*4矩阵各元素的值
(1)
#include"stdio.h"
voidmain()
{
inti,a[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
int*p=a;
for(i=0;i<4*4;i++)
{
printf("%3d",*(p+i));
if((i+1)%4==0)
printf("\n");
}
}
(2)
#include"stdio.h"
voidmain()
{
inta[4][4]={{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4}};
int(*p)[4]=a;
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
printf("%3d",*(*(p+i)+j));
printf("\n");
}
printf("\n");
}
2.有一个整型二维数组a[m][n],找出最大值所在的行和列,以及该最大值
#include"stdio.h"
voidmain()
{
inta[4][4]={{1,34,35,26},{7,12,92,24},{55,33,53,6},{7,41,34,64}};
int(*p)[4]=a;
inti,j,x,y,max;
max=a[0][0];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%3d",*(*(p+i)+j));
if(max<*(*(p+i)+j))
{
max=*(*(p+i)+j);
x=i;
y=j;
}
}
printf("\n");
}
printf("\nmax=%d\nx=%d\ny=%d\n",max,x,y);
}
3.从键盘输入一字符串,求此字符串的长度并输出
#include
intstr_len(char*p)
{
intn=0;
while(*p!
='\0')
{
n++;
p++;
}
returnn;
}
intmain()
{
chara[100];
intn;
printf("Inputastring:
\n");
gets(a);
n=str_len(a);
printf("Thelenth:
%d\n",n);
}
4.将字符串str中的小写字母全部改为大写字母,并输出该字符串
#include"stdio.h"
voidfun(char*p)
{
inti;
for(i=0;*(p+i)!
='\0';i++)
if(*(p+i)>='a'&&*(p+i)<='z')
*(p+i)=*(p+i)-32;
}
voidmain()
{
charstr[50];
char*p=NULL;
printf("Pleaseinputstring:
\n");
gets(str);
p=str;
fun(p);
puts(str);
}
实验八参考答案
1.编写程序:
定义一个职工结构体类型,定义职工结构体变量,从键盘输入一名职工信息,然后输出。
(假设职工信息包括:
姓名、身份证号、工龄、工资)
#include
structemployee
{
charname[20];
charid[20];
intgl;
intsalary;
};
intmain()
{
structemployeeem;
printf("Name:
\n");
scanf("%s",em.name);
printf("HM:
\n");
scanf("%s",em.id);
printf("GL:
\n");
scanf("%d",&em.gl);
printf("GZ:
\n");
scanf("%d",&em.salary);
prin