C语言基础练习题<一>

1.输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1³+5³+3³。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    
    
	printf("求出所有的水仙花数(3位数)\n");
	int hundred, ten, one, i;
	int count=0;
	int sum;
	for (i = 100; i < 1000; i++) {
    
    
		hundred = i / 100;
		ten = i % 100 / 10;
		one = i % 10;
		sum = hundred * hundred * hundred + ten * ten * ten + one * one * one;
			if (i == sum) {
    
    
				count++;
				printf("水仙花数有:%d\n", i);
		}
	}
	printf("所有的水仙花数有%d个",count);
	return 0;
}

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    
    
	char c;
	int digit=0, space=0, echar=0, other=0;
	printf("请输入一行字符:\n");
	while ((c=getchar())!='\n') {
    
    
		if (c >= 'a' && c<= 'z'||c >= 'A' && c<= 'Z') {
    
    
			echar++;
		}
		else if (c == ' ') {
    
    
			space++;
		}
		else if (c >= '0' && c<= '9') {
    
    
			digit++;
		}
		else {
    
    
			other++;
		}
	}
	printf("英文字母数:%d\n空格数:%d\n数字:%d\n其他字符:%d", echar, space, digit, other);
	return 0;
}

3.企业发放的奖金根据利润提成。利润I低于或等于100 000元时,奖金可提10%;利润高于100 000元,低于200 000时(100 000<I≤200 000),低于100 000元的部分按10%提成,高于100 000元的部分,可提成7.5%;200 000<I≤400 000时,低于200 000元的部分仍按上述办法提成(下同)。高于200 000元的部分按5%提成,400 000<I≤600 000时,高于400 000元的部分按3%提成;600 000<I≤1000 000时,高于600 000元的部分按1.5%提成;I>1000 000时,超过1000 000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    
    
	double i;
	double money;
	printf("请输出当月利润:\n");//double →%lf   float→%f
	scanf("%lf", &i);
	if (i <= 100000) {
    
    
		money = i * 0.1;
	}
	else if (100000 < i && i <= 200000) {
    
    
		money = 100000 * 0.1 + (i - 100000) * 0.075;
	}
	else if (200000 < i && i <= 400000) {
    
    
		money = 100000 * 0.1 + 100000 * 0.075 + (i - 200000) * 0.05;
	}
	else if (400000 < i && i <= 600000) {
    
    
		money = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (i - 400000) * 0.03;
	}
	else if (600000 < i && i <= 1000000) {
    
    
		money = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (i - 600000) * 0.015;
	}
	else {
    
    
		money = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (i - 1000000) * 0.01;
	}
	printf("应发奖金总数为:%lf\n", money);
	return 0;
}

4.给一个不多于5位的正整数,要求:
①分别输出每一位数字;
②按逆序输出各位数字,例如原数为321,应输出123;

//很多地方还需要优化,只是写出了大概思路
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    
    
	int num, one, two, three, four, five, number;
	printf("请输入一个0-99999的整数:\n");
	scanf("%d", &num);
	if (num>99999) {
    
    
		printf("您输入的整数有误,请重新输入!");
	}
	else {
    
    
		if (num<=9) {
    
    
			five = num / 1 % 10;//个位
			printf("这个整数是:%d;\n", num);
			printf("分别输出每一个数字为:%d;\n", five);
			printf("逆序输出分别为:%d;", five);
		}
		else if (num<=99) {
    
    
			five = num / 1 % 10;//个位
			four = num / 10 % 10;//十位
			printf("这个整数是:%d;\n", num);
			printf("分别输出每一个数字为:%d,%d;\n", four,five);
			printf("逆序输出分别为:%d,%d;\n", five,four);
			number = five * 10 + four;
			printf("逆序输出的整数为:%d;",number);
		}
		else if (num<=999) {
    
    
			three = num / 100 % 10;//百位
			four = num / 10 % 10;//十位
			five = num / 1 % 10;//个位
			printf("这个整数是:%d;\n", num);
			printf("分别输出每一个数字为:%d,%d,%d;\n",three, four, five);
			printf("逆序输出分别为:%d,%d,%d;\n", five, four, three);
			number = five * 100 + four * 10 + three;
			printf("逆序输出的整数为:%d;", number);
		}
		else if (num<=9999) {
    
    
			two = num / 1000 % 10;//千位
			three = num / 100 % 10;//百位
			four = num / 10 % 10;//十位
			five = num / 1 % 10;//个位
			printf("这个整数是:%d;\n", num);
			printf("分别输出每一个数字为:%d,%d,%d,%d;\n",two, three, four, five);
			printf("逆序输出分别为:%d,%d,%d,%d;\n", five, four, three, two);
			number = five * 1000 + four * 100 + three * 10 + two;
			printf("逆序输出的整数为:%d;", number);
		}
		else {
    
    
			one = num / 10000;//万位
			two = num / 1000 % 10;//千位
			three = num / 100 % 10;//百位
			four = num / 10 % 10;//十位
			five = num / 1 % 10;//个位
			printf("这个整数是:%d;\n", num);
			printf("分别输出每一个数字为:%d,%d,%d,%d,%d;\n", one,two,three,four,five);
			printf("逆序输出分别为:%d,%d,%d,%d,%d;\n", five,four,three,two,one);
			number = five * 10000 + four * 1000 + three * 100 + two * 10 + one;
			printf("逆序输出的整数为:%d;", number);
		}
	}
	return 0;
}

5.给出一百分制成绩,要求输出成绩等级“A”,“B”,“C”,“D”,“E”。90分以上为“A”,80-89分为"B",70-79分为“C”,60-69分为"D",60分以下为"E"。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    
    
	float score;
	char grade;

	do {
    
    
		printf("请输入学生成绩:\n");
		scanf("%f", &score);
	} while (score > 100 || score < 0);
	switch((int)(score/10)){
    
    
		case 10:
		case 9:
			grade = 'A';
			break;
		case 8:
			grade = 'B';
			break;
		case 7:
			grade = 'C';
			break;
		case 6:
			grade = 'D';
			break;
		default:
			grade = 'F';
	}
	printf("成绩是%4.1f,成绩等级是%c", score, grade);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43096786/article/details/119990833