程序设计基础I-实验4 循环结构之for语句

7-1 sdut-C语言实验-A+B for Input-Output Practice (Ⅳ)

Your task is to Calculate a + b.

输入格式:

Your task is to Calculate a + b.

输出格式:

For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.

输入样例:

在这里给出一组输入。例如:

2
1 5
10 20

输出样例:

在这里给出相应的输出。例如:

6
30
#include<stdio.h>
int main()
{
    int a,b,c,i;
    scanf("%d",&c);
    for(i=1;i<=c;i++)
    {
        scanf("%d %d",&a,&b);
        printf("%d\n",a+b);
    }
    return 0;
}

 7-2 sdut-C语言实验—两个数比较

求2个数中较大者。

输入格式:

第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数。

输出格式:

输出N行,每一行的值为每组数中较大的整数。

输入样例:

2
1 2
15 10

输出样例:

在这里给出相应的输出。例如:

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

 7-3 sdut- C语言实验-计算1到n的和(循环结构)

从键盘上输入任意一个整数n,计算1到n的和。

输入格式:

从键盘输入任意整数n。

输出格式:

输出1到n的和。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

6
#include<stdio.h>
int main()
{
    int n,i,sum;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum=sum+i;
    }
    printf("%d",sum);
    return 0;
}

 7-4 sdut-C语言实验-求阶乘(循环结构)

从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。
提示: 0!是 1 。

输入格式:

输入任意一个大于等于0的整数n。

输出格式:

输出n!

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

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

7-5 sdut-C语言实验- 做乘法

请用C语言编写一个程序。此程序接收一个正整数N,然后打印输出“N次N*(1->N)格式”的数据。例如:此程序接收正整数5,那会输出以下格式的数据:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25

输入格式:

只有一个正整数N(N<=100)。

输出格式:

输出共N行数据,如上面的例子所示。

输入样例:

在这里给出一组输入。例如:

5

输出样例:

在这里给出相应的输出。例如:

5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
#include<stdio.h>
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("%d*%d=%d\n",n,i,n*i);
    }
    return 0;
}

7-6 sdut-C语言实验-数列求和

数列求和是一类常见的问题,本题有一定的代表性:
求s=a+aa+aaa+aaaa+……+aa…aa(n位)
其中,a的值由键盘输入,位数n也由键盘输入。

输入格式:

第一行输入a的值;
第二行输入位数n。

输出格式:

输出对n个数完成求和运算后的结果。
比如a=3,n=6时,s=3+33+333+3333+33333+333333

输入样例:

3
6

输出样例:

在这里给出相应的输出。例如:

370368
#include<stdio.h>
int main()
{
    int a,n,s=0,i,m,sum=0;
    scanf("%d\n%d",&a,&n);
    for(i=1;i<=n;i++)
    {
        s=s+a;
        a=a*10;
        sum=sum+s;
    }
    printf("%d",sum);
    return 0;
}

7-7 求Fibonacci(斐波那契)数列的n项和

已知斐波那契数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13,……。本题要求编写程序,计算该数列的前n项和。

输入格式:

键盘输入n(2≤n≤40)。

输出格式:

sum=S,S为斐波那契数列的前n项和。

输入样例:

10

输出样例:

sum=143
#include<stdio.h>
int main()
{
    int n1=1,n2=1,i,m,sum=0,n;
    scanf("%d",&n);
    for(i=3;i<=n;i++)
    {
        m=n1+n2;
        sum=sum+m;
        n1=n2;
        n2=m;
    }
    printf("sum=%d",sum+2);
    return 0;
}

7-8 sdut-C语言实验- 简单计算

接受从键盘输入的N个整数,输出其中的最大值、最小值和平均值(平均值为整除的商)。

输入格式:

第一行一个正整数N(N<=100);
第二行有N个用空格隔开的整数Ti (1 <= i <= N, 0 <= Ti <= 10000000)

输出格式:

三个有空格隔开的整数分别为最大值、最小值和平均值,其中平均值为整除的商。

输入样例:

在这里给出一组输入。例如:

5
1 2 3 5 4

输出样例:

在这里给出相应的输出。例如:

5 1 3
#include<stdio.h>
int main()
{
    int m,i,n,sum=0,aver;
    int max=-0x3f3f3f;
    int min=0x3f3f3f;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d\n",&m);
        if(m>max)
        {
            max=m;
        }
        if(m<min)
        {
            min=m;
        }
        sum=sum+m;
    }
    aver=sum/n;
     printf("%d %d %d",max,min,aver);
    return 0;
}

7-9 sdut- C语言实验-判断素数(循环结构)

从键盘上输入任意一个正整数,然后判断该数是否为素数。
如果是素数则输出"This is a prime."
否则输出“This is not a prime.”

输入格式:

输入任意一个正整数n(1 <= n <= 1000000)。

输出格式:

判断n是否为素数,并输出判断结果:
如果n是素数则输出"This is a prime."
否则输出“This is not a prime.”

特别提醒:请注意对1的判定,1不是素数。

输入样例:

3

输出样例:

在这里给出相应的输出。例如:

This is a prime.
#include<stdio.h>
int main()
{
    int n,i,flag=0;
    scanf("%d",&n);
    for(i=2;i<=n-1;i++)
    {
        if(n%i==0)
        {
            flag++;
            break;
        }
        else
        {
            flag=0;
        }
    }
    if(n==1)
        flag=1;
    if(flag==0)
        printf("This is a prime.");
    else 
        printf("This is not a prime.");
    return 0;
}

7-10 sdut-C语言实验- 求绝对值最大值

求n个整数中的绝对值最大的数(要求n个数的绝对值不相等)。

输入格式:

输入数据有2行,第一行为n,第二行是n个整数。

输出格式:

输出n个整数中绝对值最大的数。

输入样例:

在这里给出一组输入。例如:

5
-1 2 3 4 -5

输出样例:

在这里给出相应的输出。例如:

-5
#include<stdio.h>
int main()
{
    int max=-0x3f3f3f;
    int n,i,m,a;
    scanf("%d\n",&n);
    for(i=1;i<=5;i++)
    {
        scanf("%d",&m);
        if(m<=0)
            a=-m;
        else
            a=m;
        if(a>=max)
            max=a;
    }
            if(m<=0)
            printf("-%d\n",max);
        else
            printf("%d\n",max);
    return 0;
}

7-11 sdut- C语言实验—分数序列

有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。

输入格式:

输入只有一个正整数n,1≤n≤10。

输出格式:

请在这里描述输出格式。例如:对每一组输入,在一行中输出A+B的值。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

5.166667
#include<stdio.h>
int main()
{
    int n,i;
    double a=1,b=2,m,t;
    double sum;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        m=b/a;
        sum=sum+m;
        t=a;
        a=b;
        b=b+t;
    }
    printf("%.6f",sum);
    return 0;
}

 7-12 sdut-C语言实验- 平方数

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

输入格式:

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

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

输出格式:

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

输入样例:

3
1 4
10 3
17 20

输出样例:

在这里给出相应的输出。例如:

5
13
0
#include<stdio.h>
#include<math.h>
int main()
{
    int a,m,n,i,t,j,b,sum=0;
    scanf("%d",&a);
    for(i=1;i<=a;i++)
    {
        scanf("%d %d\n",&m,&n);
        if(m>=n)
        {
            t=m;
            m=n;
            n=t;
        }
        for(j=m;j<=n;j++)
        {
            b=sqrt(j);
            if(b*b==j)
            {
                sum=sum+j;
            }
        }
           printf("%d\n",sum);
        sum=0;
    }
    return 0;
}

 7-13 sdut - C语言实验—圆周率

输入n值,并利用下列格里高里公式计算并输出圆周率:

1193.jpg

输入格式:

输入公式中的n值。

输出格式:

输出圆周率,保留5位小数。

输入样例:

在这里给出一组输入。例如:

1

输出样例:

在这里给出相应的输出。例如:

2.66667
#include<stdio.h>
int main()
{
    double sum,m,i,n;
    scanf("%lf",&n);
    for(i=1;i<=n;i++)
    {
        m=1/(4*i-3)-1/(4*i-1);
            sum=sum+m;
    }
    printf("%.5f",sum*4);
    return 0;
}

7-14 sdut-C语言实验-虎子的虎年理财计划

传说西塔发明了国际象棋而使国王十分高兴,他决定要重赏西塔,西塔说:“我不要你的重赏,陛下,只要你在我的棋盘上赏一些麦子就行了。在棋盘的第1个格子里放1粒,在第2个格子里放2粒,在第3个格子里放4粒,在第4个格子里放8粒,依此类推,以后每一个格子里放的麦粒数都是前一个格子里放的麦粒数的2倍,直到放满第64个格子就行了”。国王觉得很容易就可以满足他的要求,于是就同意了。但很快国王就发现,即使将国库所有的粮食都给他,也不够百分之一。

虎子深受启发,他开始了自己伟大的理财梦想:如果按照上面的复利计算,从这个虎年开始,第一年存1元钱,第二年存2元钱,第三年存4元钱,以此类推。你帮他算算,如果存n年(1<=n<=18),到下一个虎年虎子会存多少钱?

输入格式:

输入一个n,表示存n年。

输出格式:

输出虎子n年后的存款数额。

输入样例:

12

输出样例:

在这里给出相应的输出。例如:

4095
#include<stdio.h>
int main()
{
    int n,i,m=1,sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum=sum+m;
        m=m*2;
    }
    printf("%d",sum);
    return 0;
}

7-15 sdut-C语言实验-完美的素数

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

输入格式:

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

输出格式:

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

输入样例:

在这里给出一组输入。例如:

11
13

输出样例:

在这里给出相应的输出。例如:

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

7-16 sdut-C语言实验-余弦

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

截图20220915151932.png

输入格式:

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

输出格式:

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

输入样例:

在这里给出一组输入。例如:

0.0 100
1.5 3

输出样例:

在这里给出相应的输出。例如:

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

7-17 sdut-C语言实验-求某个范围内的所有素数

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

输入格式:

输入整数n(n<10000)。

输出格式:

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

输入样例:

100

输出样例:

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 
#include<stdio.h>
int main()
{
    int n,i,a=0,g;
    scanf("%d",&n);
    for(i=2;i<=n;i++)
    {
        if(i==2)
        {
            printf("%d ",i);
            a++;
        }
        else
        {
            for(g=2;g<=i-1;g++)
            {
                if(i%g==0)
                {
                    break;
                }
            }
        if(i==g)
        {
            printf("%d ",i);
        a++;
        if(a%10==0)
            printf("\n");
        }
        }
    }
    return 0;
}

 7-18 水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153
370
371
407
#include<stdio.h>
int main()
{
    int n,x=1,y=1;
    scanf("%d",&n);
    for(int i=1;i<n;i++){
        x=x*10;
        y=y*10;
    }
    y=y*10;
    for(int j=x;j<y;j++){
        int m=j;
        int sum=0;
        while(m!=0){
            int a,b=1;
            a=m%10;
            int p=n;
            while(p--){
            b=b*a;
            }
            sum=sum+b;
            m=m/10;
        }
        if(sum==j){
            printf("%d\n",sum);
        }
    }
    return 0;
}

7-19 计算阶乘和

对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

输入格式:

输入在一行中给出一个不超过10的正整数N。

输出格式:

在一行中输出S的值。

输入样例:

3

输出样例:

9
#include<stdio.h>
int main()
{
    int n,i,k=1,sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        k=k*i;
        sum=sum+k;
    }
    printf("%d",sum);
}

7-20 输出整数各位数字

本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。

输入格式:

输入在一行中给出一个长整型范围内的非负整数。

输出格式:

从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

输入样例:

123456

输出样例:

1 2 3 4 5 6 
#include<stdio.h>
int main()
{
    int n,k=1,t;
    scanf("%d",&n);
    t=n;
    while(t>9)
    {
        t=t/10;
        k=k*10;
    }
    while(k>0)
    {
        printf("%d ",n/k);
        n=n%k;
        k=k/10;
    }
    return 0;
}

7-21 打印九九口诀表

下面是一个完整的下三角九九口诀表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

本题要求对任意给定的一位正整数N,输出从1*1N*N的部分口诀表。

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。

输入样例:

4

输出样例:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
#include<stdio.h>
int main()
{
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("%d*%d=%-4d",j,i,i*j);
        }
        printf("\n");
    }
    return 0;
}

7-22 找完数

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:

输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。

输出格式:

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

输入样例:

2 30

输出样例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
#include<stdio.h>
#include<math.h>
int main(void)
{
    int m,n,i,j,k,flag=0;
    scanf("%d %d",&m,&n);
    for(i=m;i<=n;i++)
    {
        int sum=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                sum=sum+j;
            }
        }
            if(sum==i)
            {
                flag=1;
                printf("%d = ",sum);
                for(k=1;k<sum;k++)
                {
                    if(sum%k==0)
                    {
                        if(k==sum/2)
                            printf("%d",k);
                        else 
                            printf("%d + ",k);
                    }
                }
            printf("\n");
            }
        }
        if(flag==0)
            printf("None");
    return 0;
}

7-23 编程打印空心字符菱形

本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。

输入格式:

输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。

输出格式:

输出空心字符菱形。

输入样例:


B 5

输出样例:

  B
 C C
D   D
 C C
  B
#include<stdio.h>
int main()
{
    int n;
    char a;
    scanf("%c %d",&a,&n);
    for(int i=0;i<=n/2;i++)
    {
        for(int j=0;j<n/2-i;j++)
            printf(" ");
        for(int k=0;k<2*i+1;k++)
        {
            if(k==0 || k==2*i)
                printf("%c",a);
            else
                printf(" ");
        }
        printf("\n");
        a++;
    }
    a--;
    for(int m=0;m<n/2;m++)
    {
        a--;
        for(int o=0;o<m+1;o++)
            printf(" ");
        for(int p=0;p<n-2*m-2;p++)
        {
            if(p==0 || p==n-2*m-2-1)
                printf("%c",a);
            else
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

7-24 求数列前n项之和

已知数列1,1/3,1/5,1/7,…,求出其前n项之和,其中的实型变量用double类型。

输入格式:

输入n的值,一个正整数。

输出格式:

以保留两位小数的形式输出数列前n项的和并换行。

输入样例:

3

输出样例:

1.53
#include<stdio.h>
int main()
{
    int m,n,i;
    double sum=0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        m=2*i-1;
        sum=sum+(1.0)/m;
    }
    printf("%.2f",sum);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值