sdut oj实验4-for循环程序设计(已完结)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    cout<<setiosflags(ios::fixed)<<setprecision(5);
    double PI;
    int n;
    cin>>n;
    for (int i = 1 ; i <= n ; i++){
        PI=PI+1.0/(4*i-3)-1.0/(4*i-1);
    }
    PI=PI*4;
    cout<<PI;
    return 0;
}

**解锁新知识: c++中保留小数的方法(如上)

#include<iomanip>

cout<<setiosflags(ios::fixed)<<setprecision(5);

括号里的数字是几就保留几位小数

只要写一次,后面的数字都能用。

(还有两种方法,在我的 杂乱笔记 中)


#include<iostream>
using namespace std;
int main()
{
    int n,sum = 0;
    cin>>n;
    for(int i = 1; i <= 10000; i++ ){
        sum = sum + i * i;
        if(sum == n){
            cout<<i;
            break;
        }
        if(sum>n){
            cout<<i-1;
            break;
        }
    }
    return 0;
}

**本题中i<=10000很重要!!

还有当sum>n时输出i-1。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    cout<<fixed<<setprecision(6);
    int n,t,i;
    double sum=0,a=1,b=2;
    cin>>n;
    for(i = 1;i <= n; i++){
        sum=sum+b/a;
        t=b;
        b=b+a;
        a=t;
    }
    cout<<sum<<endl;
    return 0;
}

O - 期末考试之分等级

Description

期末考试结束了,老师想要根据学生们的成绩划分出等级。共有5个等级A,B,C,D和E。
划分方法如下,90分(含90)以上的为A,80~90(含80)间的为B,70~80(含70)间的为C,
60~70(含60)的为D,不及格的为E。
根据输入的成绩,编程输出各个级别段人数。
 

Input

输入第一行包含一个正整数N(N<= 100)代表学生的数目,接下来有N行数据每行一个整数(0~100)代表
一个学生的成绩。

Output

输出有五行格式如下:
A nA
B nB
C nC
D nD
E nE
其中A,B,C,D,E代表等级,nA,nB等代表个等级的人数,等级和人数之间有一个空格。

Sample

Input 

6 
66 
73
85
99
100
59

Output 

A 2
B 1
C 1
D 1
E 1
#include<iostream>
using namespace std;
int main()
{
    int n,m,nA=0,nB=0,nC=0,nD=0,nE=0;
    cin>>n;
    for( int i = 1; i <= n; i++){
        cin>>m;
        if(m>=90)
            nA++;
        else if(m>=80&&m<90)
            nB++;
        else if(m>=70&&m<80)
            nC++;
        else if(m>=60&&m<70)
            nD++;
        else
            nE++;
    }
    cout<<"A "<<nA<<endl;
    cout<<"B "<<nB<<endl;
    cout<<"C "<<nC<<endl;
    cout<<"D "<<nD<<endl;
    cout<<"E "<<nE<<endl;
    return 0;
}

 **对数组不熟悉,只能先这样写了

P - 平方数

Description

飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算 n 与 m 之间所有平方数之和吗?
提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。n 和 m 均可能为 0 至 100000000 内的任意整数,n、m不一定有序。

Input

 第一行 T 代表数据的组数。

接下来有 T 行,每行两个整数n,m (0 <= n, m <= 100000000)

Output

 输出一个整数,代表所求区间内平方数之和。

Sample

Input 

3
1 4
10 3
17 20

Output 

5
13
0
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int t,n,m,sum,K;
    cin >> t;
    while(t--){
        sum = 0;
        cin >> n >> m;
        if(n>m){
            K = n;
            n = m;
            m = K;
        }
        for(int i = n; i <= m; i++)
        {
            K = sqrt(i);
            if(K * K == i)
                sum += i;
        }
        cout<<sum<<endl;
    }
    return 0;
}

**在c++中cin>>后应该是不能有" " 和endl 的。。。。。

Q - C语言实验——打印菱形

Description

从键盘输入一个整数n(1≤n≤9),打印出指定的菱形。

Input

正整数n(1≤n≤9)。

Output

指定的菱形。
第一行前面有n-1个空格,第二行有n-2个空格,依此类推。

Sample

Input 

5

Output 

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

#include<iostream>
using namespace std;
int main()
{
    int n,i,j;
    cin>>n;
    for(i=0;i<n;i++){
        for(j=0;j<n-1-i;j++){
            cout<<" ";
        }
        for(j=0;j<2*i+1;j++){
            cout<<"*";
        }
        cout<<endl;
    }//分为上下两部分输出
    for(i=0;i<n-1;i++){
        for(j=0;j<i+1;j++){
            cout<<" ";
        }
        for(j=0;j<2*(n-1-i)-1;j++){
            cout<<"*";
        }
        cout<<endl;
    }
    return 0;
}

***我真的不懂不懂不懂啊啊啊啊

**好像懂了一、、

R - 水仙花数

Description

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,是这样定义的: 
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。
现在要求输出所有在m和n范围内的水仙花数。

Input

输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

Output

对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。

Sample

Input 

100 120
300 380

Output 

no
370 371

Hint

#include<stdio.h>
int main()
{
    int i,a,b,c,d,h;
    int m,n;
    int count;
    while(~scanf("%d %d",&m,&n))
    {
        h=0;
        count=0;
        for(i=m; i<=n; i++)
        {
            a=i/100;
            b=i/10%10;
            c=i%10;
            d=a*a*a+b*b*b+c*c*c;
            if(i==d)
            {
                if(h==0)
                {
                    printf("%d",i);
                }
                else
                {
                    printf(" %d",i);
                }
                count=1;
                h++;
            }
        }
        if(count==0)
            printf("no");
        printf("\n");
    }
    return 0;
}

**我是废物啊!!实在用c++写不出来呀。。。 

S - C语言实验——余弦

Description

输入n的值,计算cos(x)。
 

Input

输入数据有多行,每行两个数,包括x和n。第一数据为x,第二个数据为n。

Output

输出cos(x)的值,保留4位小数。

Sample

Input 

0.0 100
1.5 3

Output 

1.0000
0.0701
#include <stdio.h>
int main()
{
    double x, sum, t, item;
    int n, i;
    while (scanf("%lf %d", &x, &n)==2)//while (~scanf("%lf %d", &x, &n))
        t = x*x;
        item = 1.0;
        sum = 1.0;
        for (i=1; i<=n; i++)
        {
            item *= -t;
            item /= (i*2-1)*(i*2);
            sum += item;
        }
        printf("%.4lf\n", sum);
    }
    return 0;
}

 **scanf(...)==2什么意思??  在网查到了这个:

T - 完美的素数

Description

      素数又称质数。指一个大于1的自然数,除了1和此整数自身外,不能被其他自然数整除的数。我们定义:如果一个素数是完美的素数,当且仅当它的每一位数字之和也是一个素数。现在给你一个正整数,你需要写个程序判断一下这个数按照上面的定义是不是一个完美的素数。

Input

输入包含多组测试数据。
每组测试数据只包含一个正整数 n (1 < n <= 10^6)。

Output

对于每组测试数据,如果 n 是完美的素数,输出“YES”,否则输出“NO”(输出均不含引号)。

Sample

Input 

11
13

Output 

YES
NO
#include<stdio.h>
int main()
{
    int a,i,sum,a1,a2,a3,a4,a5,a6,j,temp;
    while(~scanf("%d",&a))
    {
        if(a==1)
            printf("NO\n");
            else{
        temp = 1;
        a1 = a % 10;
        a2 = a / 10 % 10;
        a3 = a / 100 % 10;
        a4 = a / 1000 % 10;
        a5 = a / 10000 % 10;
        a6 = a / 100000 % 10;
        sum = a1 + a2 + a3 + a4 + a5 + a6;
        for(i = 2; i < a; i++){

            if(a % i == 0)
                temp++;
 		}
        for(j = 2; j < sum; j++){
                if(sum%j == 0)
                    temp++;
        }
        if(temp == 1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    }
    return 0;
}

**好像懂了,又好像妹懂。。。

U - A+B for Input-Output Practice (IV)

Description

Your task is to Calculate the sum of some integers.

Input

Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.

Output

For each group of input integers you should output their sum in one line, and with one line of output for each line in input.

Sample

Input 

4 1 2 3 3
5 1 2 4 4 5
0

Output 

9
16
#include <stdio.h>
int main()
{
    int n, i,x,sum=0;
    while (~scanf("%d",&n))
    {

        if(n==0) break;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&x);
            sum+=x;
        }
        printf("%d\n",sum);
        sum=0;
    }
    return 0;
}

 **最后的sum=0有什么用?我不懂 o.o

答:sum重新赋值然后下一次循环是从0开始的

V - 小金掰呀掰不够玉米

Description

众所周知,C语言的学习是我们程序设计基础的重点和主要内容。
有一天,小金(a1s4z5)觉得好饿、好饿,于是去地里找玉米吃。他拿了一个很大的背包,可以装下很多很多玉米。
他掰玉米有一个习惯,第1次的时候掰1个,第2次的时候掰2个,第3次的时候掰3个...第n次的时候掰n个,他打算掰完第n次的时候就回家吃玉米。
在苞米地里,他越掰越高兴越掰越高兴,终于当他摩擦到要停不下来的时候,发现自己根本背不动他的背包了。于是他要将前m次掰的玉米全都扔掉才能回家开饭。但是小金的数学很不(li)好(hai),请你帮他算一算袋子里还有多少玉米。

Input

多组输入。
每组输入两个空格隔开的整数n和m,含义如题意描述。(0 < m < n < 10^4)

Output

输出小金的背包里最后剩下多少玉米。输入输出各占一行,保证数据合法。

Sample

Input 

5 2
6 3

Output 

12
15
#include<stdio.h>
int main()
{
    int n,m,sum1=0,sum2=0,sum=0;
    while(~scanf("%d %d",&n,&m)){
        for(int i=1; i<=n; i++){
            sum1 += i;
        }
        for(int j=1; j<=m; j++){
            sum2 += j;
        }
        sum=sum1-sum2;
        printf("%d\n",sum);
    }
    return 0;
}

 **为什么不对哦??

答: while里面没重新赋值,
        把上面的sum1 = sum2 = 0放到while里就行了。

贴个对的吧。。。

#include<stdio.h>
int main()
{
    int n,m,i,x=0,h;
    while(~scanf("%d %d",&n,&m))
    {
    for(i=1;i<=n;i++)
    {
        x+=i;
    }
    for(h=m;h>=0;h--)
    {
        x-=h;
    }
    printf("%d\n",x);
    x=0;
    }
    return 0;
}

W - C/C++练习7---求某个范围内的所有素数

Description

小于n的所有素数,按照每行10个显示出来。

Input

输入整数n(n<10000)。

Output

每行10个依次输出n以内(不包括n)的所有素数。如果一行有10个素数,每个素数后面都有一个空格,包括每行最后一个素数。

Sample

Input 

100

Output 

2 3 5 7 11 13 17 19 23 29 
31 37 41 43 47 53 59 61 67 71 
73 79 83 89 97 

Hint

请注意题目中求的是小于n的所有素数。

#include <stdio.h>
int main()
{
    int n,i,temp,a = 0;
    scanf("%d",&n);
    for(i = 2; i <= n; i++){
            if(i!=n){
        if(i == 2){
            printf("%d ",i);
            a++;
        }
        else {
            for(temp = 2; temp < i; temp++){
                if(i % temp == 0)
					break;//保证i是素数 
            }
            if(i == temp){
                printf("%d ",i);
                a++;
                if(a%10==0)//保证一行十个数 
                    printf("\n");
            }
        }
    }
    }
    printf("\n");
    return 0;
}

X - 九九乘法表

Description

      九九乘法表是数学学习的基础,今天我们就来看看乘法表的相关问题。《九九乘法歌诀》,又常称为“小九九”,如下图所示。你的任务是写一个程序,对于给定的一个正整数 n ,输出“九九乘法表”的前 n 行。例如,输入 n 为 9,你的程序的输出将为下图: 

Input

输入包含多组测试数据,以 EOF 结束。每组测试数据只包含一个正整数 n (0 < n < 10)。

Output

对于每组测试数据,输出上图所示“九九乘法表”的前 n 行。

Sample

Input 

2
3

Output 

1*1=1
1*2=2 2*2=4
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9

Hint

必须使用for循环,如果你的代码中出现例如

if(n == 1) printf(“1*1=1\\n”);

if(n == 2) printf(“1*1=1\\n1*2=2 2*2=4\\n”);

或其类似语句,本题不得分

#include<stdio.h>
int main()
{
	int n;
	while(~scanf("%d",&n)){
		for(int i = 1; i<=n; i++){
			for(int j=1; j<=i; j++){
				if(j==1){
					printf("%d*%d=%d",j,i,i*j);
				}
				else 
					printf(" %d*%d=%d",j,i,i*j);
			}
			printf("\n");
		}
	}
	return 0;
}

**有亿、、厉害!

Y - 区域内点的个数

Description

X晚上睡不着的时候不喜欢玩手机,也不喜欢打游戏,他喜欢数星星。

Input

 多组输入。

每组先输入一个整数N(N <= 10000),接着输入两个点代表矩形的左下点B(x,y)和右上点T(x,y),然后输入N个(X,Y)代表N颗星星。问有多少颗星星在窗子内部,在窗边上的不计。

Output

 输出一个整数,代表有多少颗星星在窗子内部。

Sample

Input 

3
0 1
3 4
1 1
2 2
3 3
2
1 1
5 5
4 4
0 6

Output 

1
1
#include<stdio.h>
int main()
{
	double x1,x2,y1,y2;
	int n;
	double x,y;
	int num = 0;
	while(~scanf("%d",&n)){
		num = 0;
		scanf("%lf %lf",&x1,&y1);
		scanf("%lf %lf",&x2,&y2);
		while(n--){
			scanf("%lf %lf",&x,&y);
			if(x > x1 && x < x2 &&y > y1 && y<y2)
				num++;
		}
		printf("%d\n",num);
	}
	return 0;
}

 **这个 有点意思哦!

实验四掌握得不好,而且还没写完,过两天应该会补充上的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值