• 每日10题1


    1486: [蓝桥杯][算法提高VIP]一元一次方程

    题目描述

    • 输入一元一次方法的ax+b=0的解。且数据均在double类型以内,且一定有解(保留2位小数)

    输入

    • a b两个数

    输出

    • x的值

    样例输入

    • 2 6

    样例输出

    • -3.00
    #include <stdio.h>
    int main(){
        double a,b;
        double x=0;
    	scanf("%lf %lf",&a,&b);
    	x=(-b)/a;
    	printf("%.2lf",x); 
        return 0;
    }
    

    1487: [蓝桥杯][算法提高VIP]不同单词个数统计

    题目描述

    • 编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。
      说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都是小写字符;(4)句子长度不超过100个字符。

    输入

    • 输入只有一行,即一个英文句子。

    输出

    • 输出只有一行,是一个整数,表示句子中不同单词的个数。

    样例输入

    • one little two little three little boys

    样例输出

    • 5
    #include <stdio.h>
    int main(){
    	int i,j=0,m=0,n=0,con=0;
    	char a[100],b[100][100];
    	gets(a);
    	for(i=0;i<strlen(a);i++){
    		if(a[i]!=' '){
    			b[m][j]=a[i];
    			j++;
    		}else{
    			m++;
    			j=0;
    		}
    	}
    	for(i=0;i<=m;i++){
    		for(j=i+1;j<=m;j++){
    			if(strcmp(b[i],b[j])==0){
    				strcpy(b[j],"");
    			}
    		}
    	}
    	for(i=0;i<=m;i++){
    		if(strcmp(b[i],"")==0){
    			con++;
    		}
    	}
    	printf("%d",m-con+1);
    	return 0;
    } 
    // strlen 函数用来求字符串的长度(包含多少个字符)。
    // strcpy() 函数用于对字符串进行复制(拷贝)
    // strcmp() 函数用于对两个字符串进行比较(区分大小写)。
    

    1491: [蓝桥杯][算法提高VIP]交换Easy

    题目描述

    • 给定N个整数组成的序列,每次交换当前第x个与第y个整数,要求输出最终的序列。

    输入

    • 第一行为序列的大小N(1< =N< =1000)和操作个数M(1< =M< =1000)。
      第二行包含N个数字,表示初始序列。
      接下来M行,每行两个整数x,y (1< =x,y< =N),表示要交换的两个整数。在一次交换中,如果x和y相等,则不会改变序列的内容。

    输出

    • 输出N行,为交换后的序列中的数。

    样例输入

    5  2 
    1  2  3  4  5 
    1  2 
    3  4 
    

    样例输出

    2
    1
    4
    3
    5
    
    #include <stdio.h>
    int main(){
        int n,m,i,a[1000],x,y,t;
        scanf("%d %d",&n,&m);
        for(i=0;i<n;i++){
        	scanf("%d",&a[i]);
    	}
    	for(i=0;i<m;i++){
    		scanf("%d %d",&x,&y);
    		t=a[x-1];
    		a[x-1]=a[y-1];
    		a[y-1]=t;
    	}
    	for(i=0;i<n;i++){
    		printf("%d
    ",a[i]);
    	}
        return 0;
    }
    

    1494: [蓝桥杯][算法提高VIP]企业奖金发放

    题目描述

    • 企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元 时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万元到60万元 之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成。从键盘输入当月利润,求应发放奖金总数?(保留两位小数)利润的大小在double以内

    输入

    • 利润

    输出

    • 应发奖金总数,保留两位小数

    样例输入

    • 210000

    样例输出

    • 18000.00
    #include <stdio.h>
    int main(){
    	double n;
    	scanf("%lf",&n);
    	if(n<=100000){
    		printf("%.2lf",n*0.1);
    	}else if(n>100000 && n<200000){
    		printf("%.2lf",(n-100000)*0.075+100000*0.1);
    	}else if(n>=200000 && n<400000){
    		printf("%.2lf",(n-200000)*0.05+100000*0.075+100000*0.1);
    	}else if(n>=400000 && n<600000){
    		printf("%.2lf",(n-400000)*0.03+200000*0.05+100000*0.075+100000*0.1);
    	}else if(n>=600000 && n<1000000){
    		printf("%.2lf",(n-600000)*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1);
    	}else{
    		printf("%.2lf",(n-1000000)*0.01+400000*0.015+200000*0.03+200000*0.05+100000*0.075+100000*0.1);
    	}
    	return 0;
    } 
    

    1489: [蓝桥杯][算法提高VIP]乘法运算

    题目描述

    编制一个乘法运算的程序。
    从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出。

    样例输入

    16 8

    样例输出

    16 
    ×  8 
    ━━━ 
    128 
    8×16=128,则第四行128右侧对准个位输出。计算完成,不再输出。
    

    再例如

    输:

    87x76
    输出

       87
    ×76
    ━━━
     522
    609
    ━━━
    6612
    

    输入
    输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99)。
    输出
    输出为4行或7行,符合乘法的竖式运算格式。

    注意,乘号和下划线为特殊符号,可以从样例中复制黏贴。

    样例输入
    5 2
    样例输出
    5
    × 2
    ━━━
    10

    #include <stdio.h>
    int main(){
    	int a,b;
    	while(scanf("%d %d",&a,&b)!=EOF){
    		printf("%4d
    ",a);
    		printf("×%2d
    ",b);//×是中文符号,占了2个字符 
    		printf("━━━
    ");//中文的格式 
    		if(b<10){
    			printf("%4d
    ",a*b);
    		}else{
    			if(b%10==0){
    				printf("  00
    ");//24*20,这种情况第4行是显示“  00”的哦。
    			}else{
    				printf("%4d
    ",a*(b%10));
    			}
    			printf("%3d
    ",a*(b/10));
    			printf("━━━
    ");
    			printf("%4d
    ",a*b);
    		}
    	}
    	return 0;
    } 
    

    1490: [蓝桥杯][算法提高VIP]五次方数

    题目描述
    对一个数十进制表示时的每一位数字乘五次方再求和,会得到一个数的五次方数
    例如:1024的五次方数为1+0+32+1024=1057
    有这样一些神奇的数,它的五次方数就是它自己,而且这样的数竟然只有有限多个
    从小到大输出所有这样的数
    输入

    输出
    每个数独立一行输出
    样例输入

    样例输出

    #include <stdio.h>
    int main(){
    	int i, t, sum = 0;
    	for(i = 10; i < 354294; i++) {
        t = i;
        while (t != 0) {
            sum += (int)pow(t%10, 5);
            t = t / 10;
            if(sum > i) {
               break;
            }
        }
        if(sum == i) {
            printf("%d
    ", sum);
        }
        sum = 0;
    	}
    	return 0;
    } 
    

    1493: [蓝桥杯][算法提高VIP]任意年月日历输出

    题目描述
    已知2007年1月1日为星期一。
    设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印。
    为完成此函数,设计必要的辅助函数可能也是必要的。其中输入为年分和月份。

    注意:短线“-”个数要与题目中一致,否则系统会判为错误。

    输入
    年月和月份
    输出

    样例输入

    2010 9 
    

    样例输出

    ---------------------
     Su Mo Tu We Th Fr Sa
    ---------------------
               1  2  3  4
      5  6  7  8  9 10 11
     12 13 14 15 16 17 18
     19 20 21 22 23 24 25
     26 27 28 29 30
    ---------------------
    

    思路

    • 正常解题步骤
    • 自定义函数
    • 注意中文格式(坑点,提交了13次,格式错误17%
    #include <stdio.h>
    static int mon[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int run(int year) {//闰年判断函数
        if(((year%4 == 0) && (year%100 != 0)) || (year%4 == 0))
        	return 1;
        else
        	return 0;
    }
    int Xingqi(int year, int month) {//获取星期几的函数
        int week, sum = 0, i, j;
        for(i = 2007; i < year; i++) {
            if(1 == run(i))
            	sum += 366;
            else
            	sum += 365;
        }
        if((1 == run(year)) && (month > 2)) {//求出在year的month前的天数和
            mon[2]++;
        }
        for(j = 1; j < month; j++) {
            sum += mon[j];
        }
        week = (sum%7+1)%7;
        return week;
    }
    int main () {
        int nian, yue, ri, i, j;
        scanf("%d %d", &nian,&yue);
        ri = Xingqi(nian, yue); //获取星期几,返回的数值是0~6
        printf("---------------------
    ");
        printf(" Su Mo Tu We Th Fr Sa
    ");
        printf("---------------------
    ");
        for(i = 0; i < ri; i++) {
            printf("   ");//前置输出部分,每一个星期几对应3个空格
        }
        for(j = 1; j <= mon[yue]; j++) {
            printf("%3d", j);
            ri++;
            if((7 == ri)) {
                printf("
    ");
                ri = 0;
            }//星期六之后输出
    
        }
        if(ri == 0);//特殊情况:在最后一天为星期六时不输出
     ,如2015年2月
        else
            printf("
    ");
        printf("---------------------
    ");
        return 0;
    }
    

    1504: [蓝桥杯][算法提高VIP]勾股数

    题目描述
    勾股数是一组三个自然数,a < b < c,以这三个数为三角形的三条边能够形成一个直角三角形
    输出所有a + b + c < = 1000的勾股数
    a小的先输出;a相同的,b小的先输出。
    输入

    输出
    每行为一组勾股数,用空格隔开
    样例输入

    样例输出

    3 4 5 
    5 12 13 
    6 8 10 
    

    思路

    • 定义三个变量a,b,c,其中a,b作为直角边,c作为斜边;
    • 根据题中的信息,以及三角形的三边关系判断a,b的取值范围;
    • 求出a^2 +b^2的算术平方根的值,并判断是否为整数;
    • 是整数就赋值给c,并比较三个数是否小于等于1000;
    • a,b参考范围:3<=a<333、3<=b<500
    • 3<=a<333;因为三个数的平均值是333,而a的值最小,如果a大于了333,三个数之和也会大于1000;
    • 3<=b<500,因为b小于c,如果b大于了500,那么c也必须大于500,显然不满三个数小于1000;
    • sqrt函数功能: 一个非负实数的平方根
    #include <stdio.h>
    int main () {
        int a,b,c;
        for(a=3;a<300;a++){
        	for(b=a;b<500;b++){//如果b大于了500,那么c也必须大于500;显然不满足三个数<1000;
        		if(sqrt(a*a+b*b)==(int)sqrt(a*a+b*b)){
        			c=sqrt(a*a+b*b);
        			if(c<=1000-a-b){//判断是否满足题给的条件和三角形三边的关系
        				printf("%d %d %d
    ",a,b,c);
    				}
    			}
    		}
    	}
        return 0;
    }
    

    1505: [蓝桥杯][算法提高VIP]单词个数统计

    题目描述
    编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。例如:字符串“this is a book”当中包含有4个单词。

    输入

    • 输入一个字符串,由若干个单词组成,单词之间用一个空格隔开。

    输出

    • 输出一个整数,即单词的个数。

    样例输入

    this is a book
    

    样例输出

    4
    
    #include <stdio.h>
    int main () {
        char a[100];
        int i,count=1;
        gets(a);
        for(i=0;i<strlen(a);i++){//判断条件一定要全
        	if((a[i]==' ')&&(a[i+1]>='a'&&a[i+1]<='z'||a[i+1]>='A'&&a[i+1]<='Z')){
        		count++;
    		}
    	}
    	printf("%d",count);
        return 0;
    }
    

    1503: [蓝桥杯][算法提高VIP]前10名

    题目描述
    数据很多,但我们经常只取前几名,比如奥运只取前3名。现在我们有n个数据,请按从大到小的顺序,输出前10个名数据。

    数据规模和约定
    10< =n< =200,各个整数不超出整型范围

    输入
    两行。
    第一行一个整数n,表示要对多少个数据
    第二行有n个整数,中间用空格分隔。表示n个数据。
    输出
    一行,按从大到小排列的前10个数据,每个数据之间用一个空格隔开。
    样例输入

    26 
    54  27  87  16  63  40  40  22  61  6  57  70  0  42  11  50  13  5  56  7  8  86  56  91  68  59 
    

    样例输出

    91 87 86 70 68 63 61 59 57 56 
    

    自定义从大到小排序

    int cmp ( const void *a , const void *b ) 
    { 
      return *(int *)b - *(int *)a; 
    } 
    

    AC

    #include <stdio.h>
    int cmp ( const void *a , const void *b ) 
    { 
      return *(int *)b - *(int *)a; 
    } 
    int main () {
        int n,i,a[200];
        scanf("%d",&n);
        for(i=0;i<n;i++){
        	scanf("%d",&a[i]);
    	}
    	qsort(a,i,sizeof(a[0]),cmp);//调用排序函数
    	for(i=0;i<10;i++){//输出前十个
    		printf("%d ",a[i]);
    	}
        return 0;
    }
    
    欢迎查阅
  • 相关阅读:
    构造函数与其他类方法的区别
    将博客搬至51CTO
    易错点
    c++类构造函数详解
    将博客搬至CSDN
    实数,有理数,无理数,自然数,整数的概念分别是什么?
    code for qint function
    spline和Pchips的不同(matlab)
    Pseudocode MD5 CODE
    git基础介绍
  • 原文地址:https://www.cnblogs.com/gh110/p/12158138.html
Copyright © 2020-2023  润新知