第三章:
1、四门成绩:
#include<stdio.h>
#include<stdlib.h>
int main() {
double grade[4],sum=0,avg;
int i=0;
printf("请输入你的四门成绩:\n");
for(i=0;i<4;i++){
scanf("%lf",&grade[i]);
}
for(i=0;i<4;i++){
sum+=grade[i];
//printf("%f",sum);
}
avg=sum/4.0;
printf("你的总成绩为:%.2f\n你的平均成绩为:%.2f",sum,avg);
return;
}
2、五位数倒叙
#include<stdio.h>
#include<stdlib.h>
int main() {
int a=1;//用来判断输入是否为五位数的标志
int num;
printf("请输入一个五位数:");
scanf("%d",&num);
while(num>99999||num<10000) {
printf("错误,请重新输入一个5位数:\n");
scanf("%d",&num);
}
int i;
for(i=0; i<5; i++) {
printf("%d",num%10);
//a=num%10;
num/=10;
}
return;
}
3、圆的系列输出:
#include<stdio.h>
#include<stdlib.h>
#define pi 3.1415926
int main(){
double r,h;
printf("请输入圆半径:\n");
scanf("%lf",&r);
printf("请输入圆柱体高:\n");
scanf("%lf",&h);
printf("圆的周长:2*pi*%f=%.2f",r,2*pi*r);//这里输出两个公式作为示例
printf("\n圆的面积:pi*%f*%f=%.2f",r,r,pi*r*r);
printf("\n圆球表面积:%.2f",4*pi*r*r);
printf("\n圆球的体积:%.2f",4*pi*r*r*r/3.0);
printf("\n圆柱的表面积:%.2f",2*pi*r*h+2*pi*r*r);
printf("\n圆柱的体积:%.2f",pi*r*r*h);
return 0 ;
}
第四章
1、三个数找最大数
源代码:
#include<stdio.h>
#include<stdlib.h>
int main() {
int i;
int a[3]= {0};
printf("请输入你的三个数;\n");
for(i=0; i<3; i++) {
scanf("%d",&a[i]);
}
int max;
if(a[0]>a[1]&&a[0]>a[2])
printf("你输入的最大值为:%d",a[0]);
else if(a[1]>a[0]&&a[1]>a[2])
printf("你输入的最大值为:%d",a[1]);
else
printf("你输入的最大值为:%d",a[2]);
}
2、分段线性函数求解:
#include<stdio.h>
#include<stdlib.h>
int main(){
double x,y;
printf("请输入x坐标:\n");
scanf("%lf",&x);
if(x<=(-10))
printf("进入函数y=x中 y=%.2f",x);
else if (x>-10&&x<=0)
printf("进入函数y=2.0*x+3中 y=%.2f",2.0*x+3);
else if (x>0&&x<=10)
printf("进入函数y=3.0*x-11中 y=%.2f",3.0*x-11);
else
printf("进入函数y=x/10.0+1中 y=%.2f",x/10.0+1);
}
3、一元二次方程求解:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
int a,b,c,d;
double x1,x2;
printf("请依次输入a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
printf("当前a=%d,b=%d,c=%d\n",a,b,c);
d=b*b-4*a*c;
//printf("%d",d);
if(d<0) {
printf("该方程无解");
} else if(d>0) {
x1=(-b+sqrt(d))/2*a*1.0;//防止出现1/2=0的情况。
x2=(-b-sqrt(d))/2*a*1.0;
printf("有两个解:\nx1=%.2f,x2=%.2f",x1,x2);
} else if(d==0) {
printf("有一个解:\nx=%.2f",((-b)*1.0)/2*a*1.0);
}
}
一个根情况:
两个根情况:
无根情况:
第五章
1、输入若干成绩,负数结束。成绩排序求最值问题:
程序源代码:
#include<stdio.h>
#include<stdlib.h>
int main() {
int temp,i,j,len;
double grade[1000]= {0};
double min=0,max=0,avg=0,sum=0;
printf("请输入你的各科成绩,并以负数结束:\n");
for(i=0;;i++) {
scanf("%lf",&grade[i]);
if(grade[i]>=0)
sum+=grade[i];//输入时求总成绩方便求平均成绩
if(grade[i]<0) //负数结束
break; //跳出循环后当前i的数值就是数组长度
}
printf("您共输入了%d门成绩\n",i);
len=i;//长度传送给len
for(i=0; i<len-1; i++) { //冒泡,控制次数循环
for(j=0; j<len; j++) {//前后交换循环
if (grade[j]>grade[j+1]) {
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf("最高成绩为:%.2f\n",grade[len-1]);
printf("最低成绩为:%.2f\n",grade[0]);
printf("平均成绩:%.2f\n",sum*1.0/len);
}
2、整数转换为字符,再逆序输出
#include<stdio.h>
#include<stdlib.h>
int main() {
int i,temp,num,len=0;
char str[100];
printf("请输入一个整数:\n");
scanf("%d",&num);
temp=num;
while(temp!=0) {//求当前数字位数
temp/=10;
len++;
}
for(i=0; i<len; i++) {
str[i]=num%10+0x30;
//将数字加上0x30,就会转换为他的字符类型
num/=10;
}
for(i=0; i<len; i++) {
printf("%c",str[i]);
}
}
3、输出由*号组成的一个三角形
核心控制语句:
#include<stdio.h>
#include<stdlib.h>
int main() {
//共9行5列
int h=9,l=5,choice;
int i,j,tem=5;
for(i=1; i<=9; i++) {
if(i<=5)//控制前5行输出
choice=i;
if(i>5) {//控制后4行输出
j=9;
choice=j-tem;
tem++;
j--;
//printf("\n%d\n",choice);
if(choice==4)
printf("\n");
}
switch(choice) {
case 1:
for (j=1; j<5; j++)
printf(" ");//两个空格
printf("*\n");
continue;
case 2:
for (j=1; j<4; j++)
printf(" ");//两个空格
printf("* *\n");
continue;
case 3:
for (j=1; j<3; j++)
printf(" ");//两个空格
printf("* * *\n");
continue;
case 4:
printf(" ");//两个空格
printf("* * * *\n");
continue;
case 5:
printf("* * * * *");
continue;
}
}
}
与书上的答案做对比:
第六章
1、10个整数排序问题:
#include<stdio.h>
#include<stdlib.h>
int main() {
int temp,i,j;
int num[10]= {0};
printf("请输入10个整数\n");
for(i=0; i<10; i++) {
scanf("%d",&num[i]);
}
for(i=0; i<9; i++) { //冒泡,控制次数循环
for(j=0; j<9; j++) {//前后交换循环
if (num[j]<num[j+1]) {
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
printf("从大到小依次为:\n");
for(i=0; i<10; i++) {
printf("%d ",num[i]);
}
}
2、输入n,打印斐波那契数列:
#include<stdio.h>
#include<stdlib.h>
int main(){
/*Fibonacci数列需要用到迭代
采用数组来储存,第一步需要对前两
个数组元素初始化,后面的元素是他
前两个数组元素之和,例如3=1+2*/
int i,n;
printf("请输入n的数值:\n");
scanf("%d",&n) ;
int Fib[1000]={0} ;
Fib[0]=1;
Fib[1]=2;
for(i=2;i<n;i++){
Fib[i]=Fib[i-1]+Fib[i-2];
//迭代产生新的数据存入数组
}
for(i=0;i<n;i++){
printf("%d ",Fib[i]) ;
}
}
2、杨辉三角的前10行
#include<stdio.h>
#include<stdlib.h>
int main() {
int n,i,j,a[100];
n=10;//可以改为手动输入
printf("1");//直接输出第一行
a[1]=a[2]=1;//初始化前两行
printf("\n");//控制格式
for(i=3; i<=n; i++) {//因为迭代后数据会覆盖
a[1]=a[i]=1;//所以采用倒推法
for(j=i-1; j>1; j--)
a[j]=a[j]+a[j-1];
for(j=1; j<=i; j++)
printf("%d ",a[j]);
printf("\n");
}
}