一、/*输入一批考试分数,用-1作为结束标志,若输入大于100,则提示重新输入,并计算最高分,最低分,平均分*/
#include<stdio.h>
int main()
{
int mark,n=0,sum=0,max=0,min=100;
float ave;
for(;;)
{
scanf("%d",&mark);
if(mark>100)
{
printf("Please reinput:\n");
continue;
}
if(mark==-1)
break;
n++;
sum+=mark;
if(mark>max)
max=mark;
if(mark<min)
min=mark;
}
ave=(float)sum/n;
printf("max=%d,min=%d,ave=%.2f",max,min,ave);
return 0;
}
二、阶乘函数
#include<stdio.h>
int func(int n)
{
if(n==0||n==1)
return 1;
else
return n*func(n-1);
}
int main()
{
int sum=0;
int i=1;
{
for(i=1;i<=10;i++)
sum+=func(i);
printf("%d\n",sum);
}
return 0;
}
三、 //逆序输出数组元素
#include<stdio.h>
#define N 100
void fun(int a[],int n)//函数参数,数组与数组的大小
{
int i,temp;//定义整型变量i表示循环次数,temp为存储变量
for(i=0;i<n/2;i++)//i从0开始,循环n次
{
temp=a[i];//将a[i]赋值给temp
a[i]=a[n-i-1];//逆序
a[n-i-1]=temp;//temp赋值给a[n-i-1]
}
}
int main()
{
int a[N],b[N],i,n;//定义一维数组为a[N],逆序存放以后的数组位b[N],输入数组的大小为n,循环次数i
printf("input n:");//提示输入
scanf("%d",&n);//输入
for(i=0;i<n;i++)//i从0开始,循环n次
{
scanf("%d",&a[i]);//输入
}
for(i=0;i<n;i++)
{
fun(a,n);//函数的调用
for(i=0;i<n;i++)//i从0开始,循环n次
{
b[i]=a[i];//将a[i]赋给b[i]
printf("%6d",b[i]);//输出
}
}
printf("\n");//换行
return 0;
}
四、 /*有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号*/
#include<stdio.h>
#define N 100
#define M 100
int main()
{
int a[N][M],n,m,i,j;//定义二维数组a[M][N]表示矩阵,n与m表示行与列,i与j表示循环次数
int max,x=0,y=0;//定义最大的元素为Max;x为行号初始化为0;y为列号初始化为0
printf("请输入矩阵的行数与列数:");//提示输入
scanf("%d%d",&n,&m);//输入行与列数
for(i=0;i<m;i++)//双重for循环输出矩阵,i从0开始,循环m次
{
for(j=0;j<n;j++)//j从0开始,循环n次
{
scanf("%d",&a[i][j]);//输入矩阵元素
}
}
max=a[0][0];//初始化max
for(i=0;i<m;i++)//双重for循环求出矩阵中最大的元素,i从0开始,循环m次
{
for(j=0;j<m;j++)//j从0开始,循环n次
{
if(a[i][j]>max)//如果a[i][j]大于Max时
{
max=a[i][j];//将a[i][j]赋值给Max
x=i;//将i赋值给x
y=j;//将j赋值给y
}
}
}
printf("请输入最大的元素为:%d,行号为:%d,列号为:%d\n",max,x,y);//输出
return 0;
}
五、 //输出50到80之间不能被5整除的整数,并每五个一行
#include<stdio.h>
int main()
{
int i;
for(i=50;i<=80;i++)
{
if(i%5==0)
{
printf("\n");
continue;
}
printf("%5d",i);
}
printf("\n");
return 0;
}
六、 /*打印下述图案
问题描述
使用循环结构打印下述图形,打印行数n由用户输入。打印空格时使用"%s"格式,向printf函数传递只包含一个或多个空格的字符串" ",下同。
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
#include<stdio.h>
int main()
{
int i,n,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j=n-1-i;j++);
printf(" ");
for(j=0;j=2*i+1;j++)
printf("*");
}
return 0;
}
七、 //完数:一个数恰好等于它的因子之和,找出1000以内的完数
#include<stdio.h>
int main()
{
int m,s,i;
for(m=2;m<1000;m++)
{
s=0;
for(i=1;i<m;i++)
if((m%i)==0)
s+=i;
if(s==m)
{
printf("%d,its factors are",m);
for(i=1;i<m;i++)
if(m%i==0)
printf("%d",i);
printf("\n");
}
}
return 0;
}
八、 /*用二分法求方程2x^3-4x^2+3x-6=0在给定区间的根。*/
#include<stdio.h>
#include<math.h>
int main()
{
float x0,x1,x2,fx0,fx1,fx2;
do{
printf("enter x1 & x2:");
scanf("%f%f",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do{
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if((fx0*fx1)<0)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}
while(fabs(fx0)>=1e-5);
printf("x=%6.2f\n",x0);
return 0;
}
九、 //判断素数
/*
#include<stdio.h>
int main()
{
int n,i;
printf("n=?\n");
scanf("%d",&n);
for(i=2;i<n-1;i++)
if(n%i==0)
break;
if(i<n)
printf("%d is not\n",n);
else
printf("%d is\n",n);
return 0;
}
*/
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,k;
printf("n=?\n");
scanf("%d",&n);
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)
break;
if(i<k)
printf("%d is not\n",n);
else
printf("%d is\n",n);
return 0;
}
十、 //求该数列前20项的和:2/1,3/2,5/3,8/5,13/8......
#include<stdio.h>
int main()
{
int i,n=20;
double s=0,a=2,b=1,t;
for(i=1;i<=n;i++)
{
s+=a/b;
t=a;
a+=b;
b=t;
}
printf("sum=%5.2f\n",s);
return 0;
}
网友评论