2021计算导论第三次练习题目

1 实验2_6_幂计算 (100 分)

已知两个整数x和y(x为任意整数,y为非负整数),利用循环结构计算x的y次幂并输出。假设x,y及x的y次幂不会超过int型范围。

输入格式:

只有一行,为两个用空格分隔的整数,依次代表x与y的值。

输出格式:

也只有一行,为一个整数,即x的y次幂的计算结果(测试数据中保证没有0的0次幂)。例如输出2的4次幂结果,即16。

输入样例:

-7 5

输出样例:

-16807
#include<stdio.h>
#include<stdlib.h>
int main()
{ 
    int dishu,zhishu,i=1,result=1;
    scanf("%d %d",&dishu,&zhishu);
    while(i<=zhishu)
    {
        result=result*dishu;
        i=i+1;
    }
    printf("%d\n",result);
}

2 实验2_7_统计字符 (100 分)

给定一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

输入格式:

只有一行,为一个字符序列,字符序列长度小于100,以回车键结束。

输出格式:

只有一行,为4个用空格分隔的整数,依次代表输入字符序列中英文字符,空格,数字以及其他字符的数量。

输入样例:

Happy new year #100101 !

输出样例:

12 4 6 2
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int zifu=0,kongge=0,shuzi=0,qita=0;
    char now;
    while(now!='\n')
    {
        scanf("%c",&now);
        switch(now){
         case 32:
                kongge+=1;break;
            case 33 ... 47:
                qita+=1;break;
            case 48 ... 57:
                shuzi+=1;break;
            case 58 ... 64:
                qita+=1;break;
            case 65 ... 90:
                zifu+=1;break;
            case 91 ... 96:
                qita+=1;break;
            case 97 ... 122:
                zifu+=1;break;
            case 123 ... 126:
                qita+=1;break;
            default:
             qita+=1;
        }
    }
    printf("%d %d %d %d\n",zifu,kongge,shuzi,qita-1);
}

3 实验2_8_打印实心菱形 (100 分)

已知一个整数n,你要根据n打印出n阶的实心菱形。

输入格式:

只有一个整数n(0<n<40,代表要打印的菱形阶数)。测试用例保证合法。

输出格式:

n阶实心菱形(占2乘n-1行)。

输入样例:

5

输出样例:

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,line,num,star,i;
    scanf("%d",&n);
    for(line=1;line<=n;line+=1)
    {
        for(num=0;num<n-line;num++)
        {
            printf(" ");
        }
        for(star=0;star<(2*line-1);star++)
        {
            printf("*");
        }
        printf("\n");
    }
    for(star=2*n-1,line=n+1;line<=2*n-1;line+=1, star-=2)
    {
		 for(num=0;num<line-n;num++)
		    {
		        printf(" ");
		    }
	
		 for(i=0;i<star-2;i+=1)
		    {
		        printf("*");
		    }
		   
		    printf("\n");
	}
}
//20220112
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    //逐行执行上半个菱形
    for (int line = 1; line <= n; ++line) {
        //打印空格
        for (int blank = 0; blank < n-line; ++blank) {
            printf(" ");
        }
        //打印星星
        for (int stars = 0; stars < 2*line-1; ++stars) {
            printf("*");
        }
        printf("\n");
    }
    //逐行执行下半个菱形
    for (int line = n+1; line < 2*n; ++line) {
        //打印空格
        for (int blank = 0; blank < line-n; ++blank) {
            printf(" ");
        }
        //打印星星
        for (int stars = 0; stars < 4*n-2*line-1; ++stars) {
            printf("*");
        }
        printf("\n");
    }
}
//20220130字符数组做法
#include <stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    char array[2*n-1][2*n];
    for (int i = 0; i < 2*n-1; ++i) {
        for (int j = 0; j < 2*n-1; ++j) {
            array[i][j] = ' ';
        }
        array[i][2*n-1] = '\0';
    }
    for (int k = 0,i = 1,j = n-1; k < n; ++k,i+=2,j--) {
        for (int t = 0; t < i; ++t) {
            array[k][j+t] = '*';
        }
    }
    for (int k = n,t=1,j=2*n-3; k < 2*n; ++k,++t,j-=2) {
        for (int i=0; i < j; ++i) {
            array[k][t+i] = '*';
        }
    }
    for (int i = 0; i < 2*n-1; ++i) {
        printf("%s\n", array[i]);
    }

}

4 实验2_9_数列求和 (100 分)

已知正整数n与数列公式:

An = 1*2*3+2*3*4+3*4*5+…+(n-2)*(n-1)*n (n>=3)

An = 0 (n=1,2)

请根据n值计算该数列的前n项和的值,并输出。n的取值范围是(1<=n<=3000)。

注意:这里的An 只是一项,而我们要求的是计算该数列的前n项和。

提示:由于n值很大,建议使用long long型变量存储结果。

输入格式:

只有一个正整数n(1<=n<=3000)。

输出格式:

只有一个整数,为计算结果。

输入样例:

3000

输出样例:

12149993250000600
#include<stdio.h>
#include<stdlib.h>
int main()
{
    unsigned long long n,a,b,c,termnum,term=0,result=0;
    scanf("%llu",&n);
    if(n==1||n==2)
    {
        printf("0");
    }
    else 
    {
        for(termnum=3;termnum<=n;termnum++)
        {
            for(term=0,a=1,b=2,c=3;c<=termnum;a=a+1,b=b+1,c=c+1)
            {
                term=term+a*b*c;
            }
            result+=term;
        }
     printf("%llu\n",result);
    }

5 实验2_10_数字统计一 (100 分)

请你写一段程序,统计各类数字的占比。

提示:输出%时需要用%%才能输出。

输入格式:

只有一行,为用空格分隔的若干整数,最后一个整数为0。测试用例保证输入中只包含这一个0。

输出格式:

共三行,依次分别输出3、5、7的倍数的占比(如果某个数同时为多个数的倍数,如15,70等,则不参与统计,但要计到总数中)。占比采用百分数形式,且保留2位小数。这里的占比指的是这类数字的数量跟所有数字的总数(不包括最后的0)比。测试用例保证所有整数可以用int存储。

输入样例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0

输出样例:

25.00%
15.00%
10.00%
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int now;
    float sanper,wuper,qiper,num=0,san=0,wu=0,qi=0;
    scanf("%d",&now);
    while(now!=0)
    {
        if((now%3==0&&now%5==0)||(now%3==0&&now%7==0)||(now%5==0&&now%7==0))
        {}
        else
        {
            if(now%3==0)
                san++;
            if(now%5==0)
                wu++;
            if(now%7==0)
                qi++;
        }
        num++;
        scanf("%d",&now);
    }
    sanper=(san/num*100);
    wuper=(wu/num*100);
    qiper=(qi/num*100);
    printf("%.2f%%\n%.2f%%\n%.2f%%\n",sanper,wuper,qiper);
    return 0;
}

6 实验2_11__双11优惠 (100 分)

双十一快到了,网上的各个商家纷纷推出各种优惠活动,某商家的优惠方式为满100减30,满200减70,满300减110,满400减160。

请你写一段程序,根据给定条件,计算用户某单实际该付多少钱。

输入格式:

第一行为一个整数t代表测试数据组数。

后边是t行测试数据,每行均为若干个用空格分隔的整数,其中第一个整数为n,代表用户买的商品的个数,后边为n个正整数,分别代表这n件商品的价格。

输出格式:

为t行,每行依次对应输入的t行测试数据用户实际付钱的计算结果。测试用例保证所有整数(包括求和的结果)可以用int存储。

特别说明:虽然程序在本地实际运行时输入和输出是混合在一起显示的,但在OJ上输入和输出是完全分开的,互相不干扰。所以输入整数T后,只要输入一行测试数据,应该立刻输出一行优惠结果;然后是输入下一行测试数据,输出下一个优惠结果。

输入样例:

2
4 10 20 30 40
5 10 20 30 40 50

输出样例:

70
120
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int line,amount,price,sum=0,final,i,m;
    scanf("%d\n",&line);
    for(i=1;i<=line;i+=1)
    {
        scanf("%d",&amount);
        for(m=0;m<amount;m+=1)
        {
            scanf("%d",&price);
            sum+=price;
        }
        switch(sum){
        case 0 ... 99:
            final=sum;break;
        case 100 ... 199:
            final=sum-30;break;
        case 200 ... 299:
            final=sum-70;break;
        case 300 ... 399:
            final=sum-110;break;
        default:
            final=sum-160;break;
        }
        printf("%d\n",final);
        sum=0;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《算法导论》第三版答案PDF是一本非常有价值的资料,其中包含了本书提出的各种算法问题的详细解答。这本答案PDF的编写者经过了严格的选择和考核,他们大都是计算机科学领域的权威专家和学者,拥有丰富的经验和深入的知识。 这本答案PDF主要分为三个部分,第一部分是对于算法的分析和设计,第二部分是算法基础和数据结构,第三部分是高级主题和高级算法。每一章节都有详尽的解答,从基本的数据结构,例如栈、队列和堆,到高级算法,例如线性规划和哈希表,每个问题都有详尽的解答,便于读者深入理解算法背后的原理和技巧。 该答案PDF还提供了大量的例子和练习题,让读者能够在学习过程中实时测试自己的理解和掌握程度。此外,该答案PDF还提供了许多实用的技巧、经验和应用场景,使读者能够更好地应用所学知识来解决实际的问题。 总的来说,《算法导论》第三版答案PDF是一本非常有价值的资料,不仅能够帮助读者更加深入地理解算法的背后原理和技巧,还能够帮助读者应用所学知识来解决实际的问题。无论是计算机科学学生还是职业程序员,都可以从中受益匪浅。 ### 回答2: “算法导论第三版答案 pdf”指的是《算法导论》这本书的答案解析。这本书是计算机科学领域中一本非常重要的教材,其内容涵盖了算法设计、算法分析和算法实现三个方面。 由于《算法导论》中的题目非常经典,因此很多读者都希望可以得到书中题目的答案解析,以便更好地理解和应用其中的算法知识。 前,网络上可以找到一些《算法导论》答案解析的PDF文档。这些文档通常由一些对该书有深刻理解的计算机科学专家或者学术界人士撰写。这些答案解析包括书中大部分习题的解答和讨论,能够帮助读者更加深入地掌握其中的算法知识。 然而,需要注意的是,仅仅阅读答案解析是远远不够的。为了真正掌握《算法导论》中的算法知识,读者需要通过反复的练习和实践来加深理解,甚至可以自己设计算法并实现其代码。只有这样,才能真正掌握算法知识,提高自己的编程能力。 ### 回答3: 算法导论第三版答案 PDF是一本对算法导论第三版中的习题进行详细解答的参考书籍。该书可以帮助读者更好地理解和掌握算法导论这本指导性书籍中包含的众多算法和数据结构。 这本答案集涵盖了算法导论第三版中的全部习题,包括题目和答案。它涉及的主题包括渐进分析、排序和选择、数据结构(如堆、散列表、二叉搜索树等)、高级设计和分析技术(如贪心、动态规划、图算法和NP完备性)等。对于学习算法导论的人来说,这是一本非常有用的参考书。 此外,算法导论第三版答案PDF还提供了对习题解答的分析和讨论,这可以帮助读者更好地理解解题的过程和思路。通过阅读该书,读者可以加深对数据结构和算法的理解,提高自己解决问题的能力。因此,如果您正在学习算法导论或者需要更加深入地掌握里面的知识,这本答案集将是您的一个绝佳资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值