7-1 判断成绩的等级
某课程规定,测试成绩s,若 90 ≤ s ≤ 100,则等级为A;若 80 ≤ s < 90,则等级为B;若 70 ≤ s < 80,则等级为C;若 60 ≤ s < 70,则等级为D;若 0 ≤ s < 60,则等级为E;其他成绩为 ERR。现输入一个表示成绩的实数,输出其对应的等级。
输入格式:
一个表示成绩的实数(最多可精确到小数点后面7位)。
输出格式:
输出该成绩对应的等级。
输入样例:
80
输出样例:
B
#include<stdio.h>
int main() {
int a;
scanf("%d", &a);
if (a >= 90 && 100 >= a) {
printf("A");
}
else if (a >= 80 && 90 > a) {
printf("B");
}
else if (a >= 70 && 80 > a) {
printf("C");
}
else if (a >= 60 && 70 > a) {
printf("D");
}
else if (a >= 0 && 60 > a) {
printf("E");
}
else {
printf("ERR");
}
}
7-2 字符类别判断
要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII码值小于32的为控制字符; '0'~'9' 的字符表示数字,'A'~'Z' 的字符为大写字母, 'a'~'z' 的字符为小写字母,其余则为其它字符。
输入格式:
一个字符。
输出格式:
输出该字符的ASCII码值和字符对应的类别,用空格隔开。类别如下:
控制字符,输出 "control";
数字字符,输出 "digital";
大写字母,输出 "upper case";
小写字符,输出 "lower case";
其它字符,输出 "others"
输入样例:
b
输出样例:
98 lower case
#include <stdio.h>
int main() {
char ch;
scanf("%c", &ch);
int ascii = (int) ch;
if (ascii < 32) {
printf("%d control\n", ascii);
} else if (ascii >= '0' && ascii <= '9') {
printf("%d digital\n", ascii);
} else if (ascii >= 'A' && ascii <= 'Z') {
printf("%d upper case\n", ascii);
} else if (ascii >= 'a' && ascii <= 'z') {
printf("%d lower case\n", ascii);
} else {
printf("%d others\n", ascii);
}
return 0;
}
7-3 判断闰年
输入两个合法的年份y1、y2,输出y1~y2(含y1、y2)之间的所有闰年,及闰年的数量。
提示:
闰年的判定规则为:能被 4 整除但不能被 100 整除的年份,或能被 400 整除的年份。
输入格式:
输入两个整数,表示两个合法的年份y1、y2。
输出格式:
输出2行。
第1行:输出y1~y2(含y1、y2)之间的所有闰年(按y1到y2的顺序依次输出),中间用空格隔开(注意:本行结束不加空格)。如果没有,则输出"0000"。
第2行:输出闰年的数量。
输入样例:
在这里给出一组输入。例如:
2019 2024
输出样例:
在这里给出相应的输出。例如:
2020 2024
2
#include<stdio.h>
int main() {
int a;
int b;
int count = 0;
scanf("%d %d", &a, &b);
int minn = 0;
int maxn = 0;
if (a > b) {
minn = b;
maxn = a;
}
else {
maxn = b;
minn = a;
}
for (int i = minn; i <= maxn; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
count++;
if (count != 1) {
printf(" %d", i);
}
else {
printf("%d", i);
}
}
}
if (count != 0) {
printf("\n%d", count);
}
else {
printf("0000\n");
printf("0");
}
}
7-4 判断质数
输入两个合法的正整数n、m(2≤n,m≤1e6),输出n~m(含n、m)之间的所有素数(质数)。
输入格式:
输入两个合法的正整数n、m(2≤n,m≤1e6)。
输出格式:
输出1行:n~m(含n、m)之间的所有素数(按n到m的顺序依次输出),中间用空格隔开(结束不加空格)。如果没有,则输出"NO"。
输入样例:
在这里给出一组输入。例如:
2 10
输出样例:
在这里给出相应的输出。例如:
2 3 5 7
#include <stdio.h>
#include <math.h>
int sushu(long n){
int i,sushu=1;
for(i=2;i<n;i++){
if(n%i==0){
sushu=0;
}
}
return sushu;
}
int main(){
long n,m,t=0;
scanf("%ld %ld",&n,&m);
int cnt=0;
if(n<=m){
for(n;n<=m;n++){
if(sushu(n)){
if(cnt!=0){
printf(" ");}
printf("%ld",n);
cnt++;
}
}
}
else{for(n;n>m;n--){
if(sushu(n)){
if(cnt!=0){
printf(" ");}
printf("%ld",n);
cnt++;
}
}
}
if(cnt==0){printf("NO");}
return 0;
}
7-5 统计符合条件的数字
输入一个数字d(2≤d≤9)、两个正整数n、m(2≤n≤m≤1e9),输出n~m(含n、m)之间能被d整除且至少有一位数字是d的所有整数的个数。
输入格式:
输入一个数字d(2≤d≤9)、两个正整数n、m(2≤n≤m≤1e9)。
输出格式:
输出n~m(含n、m)之间能被d整除且至少有一位数字是d的所有整数的个数。
输入样例:
在这里给出一组输入。例如:
2 8 20
输出样例:
在这里给出相应的输出。例如:
2
#include <stdio.h>
int main(){
int d,n,m,sum=0,c;
scanf("%d %d %d",&d,&n,&m);
for(n;n<=m;n++){
if(n%d==0){
for(int i=n;i>0;i/=10){
c=i%10;
if(c==d){
sum++;
break;
}
}
}
}
printf("%d",sum);
return 0;
}
7-6 回文数个数
一个正整数,正读和反读都相同的数为回文数。例如22,131,2442,37073,6,…所有1位数都是回文数。给出一个正整数n(1≤n≤1e6),求出1,2,…,n之中(包括1和n)的回文数的个数。
输入格式:
任意给定一个正整数n(1≤n≤1e6)。
输出格式:
一个正整数,表示[1,n]之间的回文数的个数。
输入样例:
在这里给出一组输入。例如:
20
输出样例:
在这里给出相应的输出。例如:
10
7-7 分解质因子
输入一个正整数n(1≤n≤1e15),编程将其分解成若干个质因子(素数因子)积的形式。
输入格式:
任意给定一个正整数n(1≤n≤1e15)。
输出格式:
将输入的正整数分解成若干个质因子积的形式,质因子的出现顺序按从小到大排列。如:40=2*2*2*5;如果整数本身为质数或素数,直接输出,如:13=13。
输入样例:
在这里给出一组输入。例如:
40
输出样例:
在这里给出相应的输出。例如:
40=2*2*2*5
#include <stdio.h>
#include<math.h>
int main(){
int n;
scanf("%d",&n);
int t =0;
int count=0;
int a[30];
for(int i=2;i<n;i++){
if(n%i==0){
count++;
break;
}
}
if(count==0){
printf("%d=%d",n,n);
}else{
int p=n;
for(int i=2;p>1;i++){
if(p%i==0){
a[t]=i;
p/=i;
t++;
i=1;
}
}
printf("%d=%d",n,a[0]);
for(int i =1;i<t;i++){
printf("*%d",a[i]);
}
printf("\n");
}
return 0;
}