Bootstrap

学习c语言的第二十四天

计算工资

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5年以下的为新职工。新职工的正常工资为30元/小时,老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。

输入:在一行中给出2个正整数,分别为某员工入职年数year 和周工作时间week,其间以空格分隔。

输出:输出该员工的周薪money,精确到小数点后2位。

优化目标:可能没有优化目标。

#include <stdio.h>
#include <stdlib.h>
int main(){
	int year,week;
	scanf("%d %d",&year,&week);
	double money;
	if(year>=5){
		if(week>40){
		    money=2000+(week-40)*75;
		}else money=week*50;
	}
	if(year<5){
		if(week>40){
		    money=1200+(week-40)*45;
		}else money=week*30;
	}
	printf("%.2f",money);
}

 

求单链表结点的阶乘和 

本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。

输入:单链表L的结点个数N,以及各个结点的值Data。

输出:单链表L的结点的阶乘和。

优化目标:可能没有优化目标。


#include <stdio.h>
#include <stdlib.h>

typedef struct Node *PtrToNode;
struct Node {
    int Data; /* 存储结点数据 */
    PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */

int FactorialSum( List L );

int main()
{
    int N, i;
    List L, p;

    scanf("%d", &N);
    L = NULL;
    for ( i=0; i<N; i++ ) {
        p = (List)malloc(sizeof(struct Node));
        scanf("%d", &p->Data);
        p->Next = L;  L = p;
    }
    printf("%d\n", FactorialSum(L));

    return 0;
}

int FactorialSum( List L ){
	int sum=0;
    int i;
	for(L;L!=NULL;L=L->Next){
		int fact=1;
		for(i=1;i<=L->Data;i++){
			fact=fact*i;
		}
		sum=sum+fact;
	}
	return sum;
}


 

统计某类完全平方数 

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。

输入:给定整数N

输出:若它是完全平方数,又至少有两位数字相同,如144、676等则返回1,否则返回0。

优化目标:可能没有优化目标。

#include <stdio.h>
#include <math.h>

int IsTheNumber ( const int N );

int main()
{
    int n1, n2, i, cnt;
    
    scanf("%d %d", &n1, &n2);
    cnt = 0;
    for ( i=n1; i<=n2; i++ ) {
        if ( IsTheNumber(i) )
            cnt++;
    }
    printf("cnt = %d\n", cnt);

    return 0;
}

int IsTheNumber ( const int N ){
    int i,j;
    int flag=0;
    int a[10]={0};
    int n=N;
    for(i=10;i<=n;i++){
        if(i*i==n){
            while(n>0){
                int num=n%10;
                a[num]++;
                n=n/10;
            }
            for(j=0;j<10;j++){
                if(a[j]>=2){
                    flag=1;
                    return 1;
                }
            }
        }
    }
    if(flag==0){
        return 0;
    }
}

 

统计个位数字 

本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。

输入:给定整数N某个位数D。

输出:N中D出现的次数。

优化目标:可能没有优化目标。

#include <stdio.h>

int Count_Digit ( const int N, const int D );

int main()
{
    int N, D;
    
    scanf("%d %d", &N, &D);
    printf("%d\n", Count_Digit(N, D));
    return 0;
}
int Count_Digit ( const int N, const int D ){
    int n=N;
    int d=D;
    if(n<0){
        n=0-n;
    }
    if(n==0){
        if(d==0){
            return 1;
        }else{
            return 0;
        }
    }
    int a[10]={0};
    while(n!=0){
         int num=n%10;
         a[num]++;
         n=n/10;
    }
    return a[d];
}

 

 念数字 

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。

输入:在一行中给出一个整数

输出:输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。

优化目标:可能没有优化目标。

#include<stdio.h>
#define maxsize 30
#include<string.h>
int main(){
    char a[maxsize];
    gets(a);
    int len=strlen(a);
    int n=len; 
    int i=0;
    for(i;i<n-1;i++){
    	switch(a[i]){
    		case '-' :printf("fu "); break;
    		case '1' :printf("yi "); break;
    		case '2' :printf("er "); break;
			case '3' :printf("san "); break;
			case '4' :printf("si "); break;
			case '5' :printf("wu "); break;
			case '6' :printf("liu ");break; 
			case '7' :printf("qi "); break;
			case '8' :printf("ba "); break;
			case '9' :printf("jiu "); break;
			case '0' :printf("ling "); break;
			default  :printf("no "); break;
		}
	}
    switch(a[i]){
    		case '-' :printf("fu"); break;
    		case '1' :printf("yi"); break;
    		case '2' :printf("er"); break;
			case '3' :printf("san"); break;
			case '4' :printf("si"); break;
			case '5' :printf("wu"); break;
			case '6' :printf("liu");break; 
			case '7' :printf("qi"); break;
			case '8' :printf("ba"); break;
			case '9' :printf("jiu"); break;
			case '0' :printf("ling"); break;
			default  :printf("no"); break;
		}
}

 今天学习了c语言的一些经典例题,明天也会继续学习这部分内容。

 

;