C语言_练习(三)
21、输出最小值
输入一个整数n(n <= 10000)。随后输入n个整数。输出这n个整数中的最小值。
#include<stdio.h>
int main()
{
int x,i,n,min;
scanf("%d",&n);
scanf("%d",&x);
min=x;
for(i=1;i<n;i++)
{
scanf("%d",&x);
if(x<min)
min=x;
}
printf("%d\n",min);
return 0;
}
22、求最值
输入一个长度为n(1 <= n <= 100000)数组,输出他的最大值和最小值。
数组中的元素ai满足(-2147483648 <= ai <= 2147483647)。
#include<stdio.h>
int main()
{
int x,i,n,min,max;
scanf("%d",&n);
scanf("%d",&x);
min=x;
max=x;
for(i=1;i<n;i++)
{
scanf("%d",&x);
if(x<min)
min=x;
if(x>max)
max=x;
}
printf("%d %d\n",min,max);
return 0;
}
23、前缀和
输入一个长度为n(1 <= n <= 100000)数组ai(0<=ai<=1000),输出他的前缀和。
前缀和中的第i项,表示原数组中的前i项的和。
#include <stdio.h>
int main(void) {
// your code goes here
int n,i,sum=0;
int ai[100005];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
scanf("%d\n",&ai[i]);
}
printf("%d\n",n);
for(i=0;i<n;i++)
{
sum+=ai[i];
printf("%d\n",sum);
}
}
24、斐波那契数(上台阶)
现在小瓜想通过台阶走上平台,最底层(小瓜所在的层)编号为1,最顶层编号为n。由于小瓜的腿比较短,他一次只能向上走1级或者2级台阶。小瓜想知道他有多少种方法走上平台,你能帮帮他吗?
#include <stdio.h>
int find(int n)
{ if(n==0) return 0;
if(n==1) return 1;
if(n==2) return 2;
if(n>2) return find(n-1)+find(n-2);
}
int main(void) {
int n,step;
scanf("%d",&n);
step=find(n-1);
printf("%d\n",step);
return 0;
}
25、倒序输出
给出两个整数a和b,倒序输出a到b之间(包括a和b)的所有整数。
#include<stdio.h>
int main()
{
int a,b,i,c;
scanf("%d%d",&a,&b);
c=b;
for(i=0;i<c-a+1;i++){
printf("%d\n",b);
--b;
}
return 0;
}
26、求和
给出n(n <= 100000)个整数,请你输出这n个整数的和。保证每个整数<=1000。
#include<stdio.h>
int main()
{
int n,m,sum=0,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&m);
sum +=m;
}
printf("%d\n",sum);
return 0;
}
27、 数列计算
有一列数是:4/7,7/11,11/18,18/29,29/47,47/76……请找出这个数列的规律,编写程序计算并输出这个数列的第 N 项(要求是分数形式),并计算这个数列的前 N 项和(结果四舍五入保留两位小数)。
#include<stdio.h>
int main()
{
int n;
float i,m=0,x,y,z=0;
x=4;
y=7;
scanf("%d",&n);
m+=x/y;
for(i=2;i<=n;i++){
z=x;
x=y;
y=z+x;
m+=x/y;
}
printf("%.0f/%.0f\n%.2f\n",x,y,m);
return 0;
}
28、阶乘
给定一个整数n,求它的阶乘,1≤n≤10。
#include<stdio.h>
int main()
{
int n,m=1,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
m=m*i;
}
printf("%d\n",m);
return 0;
}
29、非负数和
通过键盘不断输入整数,不断读取,直到输入的数字为负数,跳出循环,输出其中(读到负数前)所有的非负数的和。
#include<stdio.h>
int main()
{
int n,m,i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&m);
if(m<0)
break;
sum +=m;
}
printf("%d\n",sum);
return 0;
}
30、分数求和
计算1/1+1/2+1/3+…+1/N的和(N为读入值)
#include<stdio.h>
int main()
{
int n;
float i,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum+=1/i;
}
printf("%f\n",sum);
return 0;
}
未完待续