- 实验要求
输入一个摄氏温度,将其转换为华氏温度
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
float f,c; //定义变量f,c为单精度浮点型
c=24.5; //对变量f赋值
f=(9.0/5)*c+32; //利用公式计算c的值
printf("华氏温度为:%f\n",f); //输出f的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
已知x为int型变量,值为8,y为float型变量,值为5.5,z为double型变量,值为14.5,求s=22+‘B’+x*y-z/5的值
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
int x; //定义变量x为整型
float y; //定义变量y为单精度浮点型
double z,s; //定义变量z,s为双精度浮点型
char c; //定义变量c为字符型
x=8; //对变量x赋值
y=5.5; //对变量y赋值
z=14.5; //对变量z赋值
c='B'; //将字符‘B’的ASCⅡ代码放到c变量中
s=22+'B'+x*y-z/5; //计算s的值
printf("s=%f\n",s); //输出s的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
已知圆半径r=3.5,圆柱高h=2.5,求圆柱体积。要求用scanf输入数据,输出结果保留3位小数
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
float Pi=3.141,r,h,area,V; //定义变量Pi,r,h,area,V为浮点型
scanf("%f,%f",&r,&h); //从键盘输入r,h的值
area=(Pi)*r*r; //计算area的值
V=(area)*h; //计算V的值
printf("%.3f\n",V); //输出V的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
求解方程x2+3x+2=0的根
#include //编译预处理指令
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
float a,b,c,disc,x1,x2,p,q; //定义变量a,b,c,disc,x1,x2,p,q为浮点型
a=1.0; //对变量a赋值
b=3.0; //对变量b赋值
c=2.0; //对变量c赋值
disc=b*b-4*a*c; //计算判别式disc的值
p=-b/(2.0*a); //计算对称轴p的值
q=sqrt(disc)/(2.0*a); //计算q的值
x1=p+q; //计算x1的值
x2=p-q; //计算x2的值
printf("x1=%f\nx2=%f",x1,x2); //输出x1,x2的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
已知三角形的三边长a=4.58,b=6.45,c=4.28,求三角形面积area
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
float a,b,c,s,area; //定义变量a,b,c,s,area为浮点型
a=4.58; //对变量a赋值
b=6.45; //对变量b赋值
c=4.28; //对变量c赋值
s=(a+b+c)/2; //计算s的值
area=sqrt(s*(s-a)*(s-b)*(s-c)); //计算area的值
printf("area=%f\n",area); //输出area的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
存款利息的计算。有 1000 元,想存 5 年,可按以下 5 种办法存:
(1) 一次存 5 年期。
(2) 先存 2 年期,到期后将本息再存 3 年期。
(3) 先存3-年期,到期后将本息再存 2 年期。
(4) 存1 年期,到期后将本息再存 1 年期,连续存 5 次。
(5) 存活期存款。活期利息每一季度结算一次。
2017 年的银行存款利息如下:
1 年期定期存款利息为 1.5%;
······
《C程序设计(第五版)》p80
#include //编译预处理指令
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
float p,p1,p2,p3,p4,p5; //定义变量p,p1,p2,p3,p4,p5为单精度浮点型
float r0,r1,r2,r3,r4; //定义变量r0,r1,r2,r3,r4为单精度浮点型
p=1000; //对变量p赋值
r0=0.0035; //对变量r0赋值
r1=0.015; //对变量r1赋值
r2=0.021; //对变量r2赋值
r3=0.0275; //对变量r3赋值
r4=0.03; //对变量r4赋值
p1=p*(1+r4*5); //一次存5年
p2=p*(1+2*r2)*(1+3*r3); //先存2年期,到期后将本息再存3年
p3=p*(1+3*r3)*(1+2*r2); //先存3年期,到期后将本息再存2年
p4=p*pow(1+r1,5); //存1年期,到期后将本息再存1年,连续存5次
p5=p*pow(1+r0/4,4*5); //活期存款,活期利息每一季度结算一次
printf("p1=%f\n",p1); //输出方案1的本息和
printf("p2=%f\n",p2); //输出方案2的本息和
printf("p3=%f\n",p3); //输出方案3的本息和
printf("p4=%f\n",p4); //输出方案4的本息和
printf("p5=%f\n",p5); //输出方案5的本息和
return 0; //返回函数值0
} //主函数结束
- 实验要求
给定一个小写字母f,要求以ASCII码的形式输出其对应大写字母的值
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
char c1,c2; //定义变量c1,c2为字符类型
c1='f'; //将字符‘f’的ASCⅡ代码放到c1变量中
c2=c1-32; //得到相应字符的ASCⅡ代码,放到c2变量中
printf("输入的字母为:%c\n",c1);
printf("该字母对应大写字母ASCII码的值为:%d\n",c2); //输出c2的值为相应字符的ASCⅡ代码
return 0; //返回函数值0
} //主函数结束
- 实验要求
输入一个字符,判别该字符否为小写字母,若是,则将其转换成大写字母,否则不转换,并输出最后得到的字符
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
char ch; //定义ch为字符变量
scanf("%c",&ch); //从键盘输入相应字母
ch=(ch>='a'&&ch<='z')?(ch-32):ch; //判断输入的字符是否为大写字母
printf("%c\n",ch); //输出相应字母大写形式
return 0; //返回函数值0
} //主函数结束
- 实验要求
输入3个实数a,b,c,输出其中最大的数。(用条件表达式)
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
double a,b,c,t; //定义a,b,c,t双精度浮点型变量
scanf("%lf,%lf,%lf",&a,&b,&c); //从键盘输入a,b,c的值
t=(a>b)?a:(t=(b>c)?b:c); //判断 a,b,c的值的大小关系
printf("%lf",t); //输出最大实数的值
return 0; //返回函数值0
} //主函数结束
- 实验要求
输入一个年份,判断该年份是否是闰年,并输出结果
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
int year,leap; //定义year,leap为整型
printf("请输入年份:"); //输出字符
scanf("%d",&year); //输入年份
if(year%4==0) //判断年份是否能被4整除
{
if(year%100==0) //判断年份是否能被100整除
{
if(year%400==0) //判断年份是否能被400整除
leap=1; //闰年为真值
else
leap=0; //非闰年为假值
}
else
leap=1; //闰年为真值
}
else
leap=0; //非闰年为假值
if(leap)
printf("%d是",year); //输出是闰年
else
printf("%d不是",year); //输出不是闰年
printf("闰年\n");
return 0; //返回函数值0
}
- 实验要求
输入一个百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。90~100分为’A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,0~59为’E’。(用switch语句)
#include //编译预处理指令
int main() //定义主函数
{ //主函数开始
int score; //定义score为整型
printf("请输入你的分数:"); //输入提示
scanf("%d",&score); //从键盘输入相应分数
switch(score/10) //得到score/10的值,取整
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:printf("E级\n");break; //将得到的值与1,2,3,4,5比较
case 6:printf("D级\n");break; //将得到的值与6比较
case 7:printf("C级\n");break; //将得到的值与7比较
case 8:printf("B级\n");break; //将得到的值与8比较
case 9:
case 10:printf("A级\n");break; //将得到的值与9,10比较
default:printf("成绩输入错误!\n");//输入的字符与 1~10都不符合,执行 default后面语句
}
return 0; //返回函数值0
} //主函数结束(2)运行结果:
- 实验要求
用while语句求1+2+3+…+200的平均值
#include
int main()
{
float i=1.0,sum=0.0; //定义变量i的初值为1.0,sum的初值为0.0
while(i<=200.0) //当i>200,条件表达式i<=200的值为假,不执行循环体
{ //循环体开始
sum=sum+i; //第1次累加后,sum的值为1
i++; //加完后,i的值加1,为下次累加做准备
} //循环体结束
printf("sum=%f\n",sum/200); //输出(1+2+3…+200)/200的值
return 0;
}
- 实验要求
求1! + 2! + … + 10!(求1~10的阶乘)
#include
int main()
{
double i,sum=0,s=1.0; //义变量sum,s的初值分别为0,1.0,
for(i=1;i<=10;i++) //当i<=10时,执行一下循环体
{
s=s*i; //计算阶乘
sum=sum+s; //各阶乘相加
}
printf("sum=%lf\n",sum); //输出sum的值
return 0;
- 实验要求
输出100~250之间的能被5整除的数
#include
int main()
{ int n;
for (n=100;n<=250;n++) //当n在100至250之间执行以下循环体
{
if (n%5==0) //该数是否能被5整除
printf("%d ",n); //输出能被5整除的数
}
printf("\n"); //换行
return 0;
- 实验要求
判定2000-2500年中的每一年是否为闰年,将结果输出
#include
int main()
{ int year,leap;
for (year=2000;year<=2500;year++) //年份在2000至2500之间则执行以下循环体
{
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
printf("%d年是闰年 ",year);
else
continue; //计算每一年终止后再执行
}
return 0;
- 实验要求
对10个数组元素依次赋值为1,2,3,4,5,6,7,8,9,10,要求按逆序输出
#include
int main()
{
int i,a[10];
for(i=0; i<=9;i++) //对数组元素a[0]~a[9]赋值
a[i]=i+1; //相应值的下标
for(i=9;i>=0;i--) //输出a[9]~a[0]共10个数组元素
printf("%d ",a[i]);
printf("\n");
return 0;
}
- 实验要求
用数组求Fibonacci数列的前40个数
#include
int main()
{
int i;
int f[40]={1,1}; //对最前面两个元素f[0]和f[1]赋初值1
for(i=2;i<40;i++)
f[i]=f[i-2]+f[i-1]; //先后求出f[2]~f[39]的值
for(i=0;i<40;i++)
{
if(i%5==0) printf("\n"); //控制每输出5个数后换行
printf("%10d",f[i]); //输出一个数
}
printf("\n");
return 0;
}
- 实验要求
输入10个学生的成绩,计算出平均成绩,并将低于平均成绩的分数输出来
#include
int main()
{
int i;
float a[10],sum; //定义数组长度及类型
for(i=0;i<10;i++)
{
printf("请输入第%d个成绩:",i+1);
scanf("%f",&a[i]); //对数组元素a[0]~a[9]赋值(输入10个成绩)
sum=sum+a[i]; //10成绩的和
}
printf("平均成绩:%f\n",sum/10); //输出平均成绩
for(i=0;i<10;i++)
{
if(a[i]<(sum/10)) //判断低于平均成绩的值
{
printf("低于平均的成绩:%f\n",a[i]);
}
}
return 0;
}
- 实验要求
已知a[10]={21,12,34,23,54,67,65,13,87,98},从键盘输入一个数,然后在数组a中查找该数,如果找到,输出对应的数组下标,否则,输出“无此数”
#include
int main()
{
int a[10]={21,12,34,23,54,67,65,13,87,98},i,b,c=0; //定义变量及数组初始值
printf("请输一个你入需要查找的数:");
scanf("%d",&b); //从键盘输入一个数
for(i=0;i<=9;i++)
{
if(b==a[i]) //判断输入的数是否在数组元素a[0]~a[9]里
printf("该数的对应下标为:%d",i); //输出下标数组元素相应的下标
else c+=1;
}
if(c==10)
printf("无此数"); //没有查到则输出“无此数”
return 0;
}
- 实验要求
从键盘输入Keep on going never give up,统计其中有多少个单词
#include
int main()
{
char str[50];
int i,num=0,word=0;
char c;
printf("请输入一个语句,单词之间用空格!\n");
gets(str); //输入一个字符串给字符数组str
for(i=0;(c=str[i])!='\0';i++) //只要字符不是'\0'就循环
{
if(c==' ') //若是空格字符,使word置0
word=0;
else
if(word==0) //如果不是空格字符且word原值为0
{
word=1;
num++;
}
}
printf("单词个数为%d",num);
return 0;
}
- 实验要求
从键盘输入3个单词English,Japanese,Chinese,要求找出其中“最小”者
#include
#include
int main()
{
char str[3][20]; //定义二维字符数组
char string[20];
//定义字符数组,作为交临时字符数组
int i;
printf("请输入3个单词按enter键:\n");
for(i=0;i<3;i++)
gets(str[i]); //读入3个字符串,分别给str[0],str[1],str[2]
if(strcmp(str[0],str[1])<0)
strcpy(string,str[0]); //把str[0]的字符串赋给字符数组string
else
strcpy(string,str[1]); //把str[1]的字符串赋给字符数组string
if(strcmp(str[2],string)<0)
strcpy(string,str[2]); //把str[2]的字符串赋给字符数组string
printf("最小的单词:%s\n",string);
return 0;
}
- 实验要求
输入两个实数,要求输出其中值较小者。要求用函数来找到小数
#include
int main()
{ float min(int x,int y); //对min函数的声明
float a,b,c;
printf("请输入2个实数:"); //提示输入数据
scanf("%f,%f",&a,&b); //输入两个整数
c=min(a,b); //调用min函数
printf("较小的数为: %f\n",c); //输出大数c
return 0;
}
float min(int x,int y) //定义min函数
{
int z; //定义临时变量z
z=x<y?x:y; //把x和y中小者赋给z
return (z); //把z作为min函数的值带回main函数
}
- 实验要求
求方程ax2+bx+c=0的根,用3个函数分别求当:b2−4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b,c的值
#include
#include
//自定义函数
float x1,x2,disc,p,q;
void f1(float a,float b) //判别式大于0时的两个实数根
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
void f2(float a,float b) //判别式等于0时的两个根(相等)
{
x1=x2=(-b)/(2*a);
}
void f3(float a,float b) //判别式小于0时的两个虚数根
{
p=-b/(2*a);
q=sqrt(-disc)/(2*a);
}
//主函数
int main()
{
float a,b,c;
printf("请输入a,b,c的值: \n");
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
printf("此方程的根:");
if(disc>0)
{
f1(a,b); //函数调用
printf("x1=%f\nx2=%f\n",x1,x2);
}
else if(disc==0)
{
f2(a,b);
printf("x1=%f\nx2=%f\n",x1,x2);
}
else
{
f3(a,b);
printf("x1=%f+%fi\nx2=%f-%fi\n",p,q,p,q);
}
return 0;
}
- 实验要求
写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息
#include
int main()
{
int prime(int n); //函数声明
int x;
printf("输入需要判断的整数:");
scanf_s("%d", &x);
prime(x);
printf("\n");
return 0;
}
int prime(int n) //自定义计算素数的函数
{
int i;
int a = 0;
if(n<2)
printf("%d不是素数\n", n);
else
{
for (i = 2; i < n; i++) //素数只有两个(1及其本身)公因数
{
if (n % i == 0) //不止一个公因数
a++;
}
if (a == 0) //素数
printf("%d是素数\n", n);
else
printf("%d不是素数\n", n);
}
return 0;
}
- 实验要求
输入两个整数,分别用函数求它们的和、差、积、商
#include
#include
int main()
{
int a,b,s1,s2,s3,s4;
printf("请输入两个整数:");
scanf("%d,%d",&a,&b);
s1=add(a,b); //调用函数 add
s2=sub(a,b); //调用函数 sub
s3=mul(a,b); //调用函数 mul
s4=div(a,b); //调用函数 div
printf("和为:%d\n",s1);
printf("差为:%d\n",s2);
printf("积为:%d\n",s3);
printf("商为:%d\n",s4);
return 0;
}
int add(int x,int y) //定义add函数(求和),且参数为整形
{
int z;
z=x+y;
return(z);
}
int sub(int x,int y) //定义sub函数(求差,且参数为整形
{
int z;
z=x-y;
return(z);
}
int mul(int x,int y) //定义mul函数(作乘),且参数为整形
{
int z;
z=x*y;
return(z);
}
int div(int x,int y) //定义div函数(作除),且参数为整形
{
int z;
z=x/y;
return(z);
}
- 实验要求
输入3个整数,用函数的嵌套调用求出最大值与最小值之差
# include
int main()
{
int a,b,c,m1,m2,n;
int max(int a,int b); //函数声明
int min(int a,int b);
printf("请输入3个整数:");
scanf("%d,%d,%d",&a,&b,&c);
m1=max(max(a,b),c); //函数调用
m2=max(min(a,b),c);
n=(m1-m2);
printf("最大值与最小值之差:%d",n);
return 0;
}
int max(int a,int b) //求最大值
{
int z;
z=a>b?a:b;
return (z);
}
int min(int a,int b) //求最小值
{
int z;
z=a<b?a:b;
return (z);
}
# include
int main()
{
int faction(int n); //函数声明
printf("f(10)=%d",faction(10)); //函数嵌套调用
return 0;
}
int faction(int n)
{
int c;
if(n==1) c=10;
else c=faction(n-1)+4; //递归调用f函数
return c;
}
- 实验要求
用递归方法求Fibonacci数列的前20个数
#include
int main()
{
int i,n=0,b;
int fibnum(int n); //函数声明
for(i=1;i<=20;i++)
{
n++;
b=fibnum(n); //函数调用
printf("%6d",b);
if(i%5==0)
{
printf("\n");
}
}
return 0;
}
int fibnum(int n) //定义求Fibonacci数列的前20个数的函数 fibnum
{
int b;
if(n==1||n==2) //Fibonacci数列前两个值
{
b=1;
}
else
b=fibnum(n-1)+fibnum(n-2); //函数的递归调用
return b;
}
- 实验要求
输入10个数,要求输出其中值最小的元素和该数是第几个数
#include
int main()
{
int min(int x,int y); //函数声明
int a[10],i,j,k;
printf("请输入10个数字!\n");
for(i=0;i<10;i++) //循环键入10个数
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=1,j=a[0],k=0;i<10;i++) //找出最小值
{
if(min(j,a[i])<j)
{
j=min(j,a[i]);
k=i; //最小值的序数
}
}
printf("最小的数为:%d\n该数所在位置为:%d",j,k+1);
return 0;
}
int min(int x,int y) //定义获得最小值的函数
{
return (x<y?x:y);
}
- 实验要求
给出年、月、日,计算该日是该年的第几天
#include
int main()
{
int m[13],year,month,day,i,d,leap;
for(i=1;i<=12;i++) //给月份赋值
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) //确定31天的月份
m[i]=31;
else if(i!=2) //2月单独
m[i]=30; //普通月份
else
m[i]=0;
}
scanf("%d",&year,printf("请输入年份:")); //输入年月日
scanf("%d",&month,printf("请输入月份:"));
scanf("%d",&day,printf("请输入天数:"));
if(year%4==0) //判断年份是否为闰年(判断2月的天数)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap)
m[2]=29; //闰年的2月
else
m[2]=28; //平年2月
for(i=1,d=0;i<month;i++)
d+=m[i];
d+=day;
printf("这是%d年的第%d天!\n",year,d);
return 0;
}
- 实验要求
用选择法对数组中15个整数按由大到小排序
#include
int main()
{
void sort(int array[],int n);
int a[15],i;
printf("输入15个整数(用空格隔开):\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
sort(a,15);
printf("排序后:");
for(i=0;i<15;i++)
printf("%5d",a[i]);
return 0;
}
void sort(int array[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])
k=j;
t=array[k];array[k]=array[i];array[i]=t;
}
}
- 实验要求
有一个4×5的矩阵,求所有元素中的最大值和最小值
#include
int main()
{
int i,j,max,min;
int num[4][5]={{4,5,6,8,11},
{45,88,47,62,23},
{86,23,4,5,8},
{44,32,12,10,25}}; // 4*5的矩阵
for(i=0;i<4;i++)
for(j = 0; j < 5; j++)
max=num[0][0];
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
if(max<num[i][j])
max=num[i][j];
} //设置矩阵第一个元素为max初始值,遍历矩阵并比较,得到max
min=num[0][0];
for(i=0;i<4;i++)
for(j=0;j<5;j++)
{
if(min>num[i][j])
min=num[i][j];
} //设置矩阵第一个元素为min初始值,遍历矩阵并比较,得到min
printf("max value is %d\n",max);
printf("The min is:%d\n",min);
return 0;
}
- 实验要求
写一个函数,使给定的一个4×4的二维整型数组转置,即行列互换
#include
void transpo(int x[4][4]); //定义转置函数
int main()
{
int a[4][4]={34,58,55,56,12,67,23,45,78,99,12,58,85,56,56,88};
transpo(a); //调用转置函数
return 0;
}
//转置函数
void transpo(int x[4][4])
{
int i,j,k,m[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
m[j][i]=x[i][j];
for(i=0;i<4;i++)
for(j=0,k=1;j<4;j++,k++)
{
printf("%d ",m[i][j]);
if(k%4==0)
printf("\n");
}
}