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