【C语言程序设计】实验 4
目录
1. 偶数之和
2. 整数的各位数字之和
3. 最大最小数(循环)
4. 今天是今年第几天(条件 数组)
5. 成绩转换
6. 字母转换
1. 偶数之和
【问题描述】输入n(>=1)个整数,计算其中的偶数之和。
【输入形式】第一个数为n,接下来有n个数,空格分开。
【输出形式】一个整数,它是这n个整数中的偶数之和。
【样例输入】6 6 8 9 2 6 13
【样例输出】22
【样例说明】前面的6表示有6个数,后面6个数分别为6,8,9,2,6,13,其中的偶数之和为22。
#include<stdio.h>
int main(){
int n,s=0,t;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&t);
if(t%2==0){
s=s+t;
}
}
printf("%d",s);
return 0;
}
2. 整数的各位数字之和
【问题描述】求一个整数的各位数字之和及位数。注意,0是1位数,如果是负数,则求它的绝对值的各位数字之和及位数。
【输入形式】一个整数
【输出形式】这个整数的各位数字之和及位数,空格分开。
【样例1输入】369852
【样例1输出】33 6
【样例说明】369852各位数字之和为33,是6位数.
【样例2输入】-23
【样例2输出】5 2
【样例3输入】0
【样例3输出】0 1
#include<stdio.h>
int main(){
int n,num=0,sum=0;
scanf("%d",&n);
if(n==0){
printf("0 1");
return 0;
}
if(n<0) n=-n;
while(n>0){
sum+=n%10;
n=n/10;
num++;
}
printf("%d %d",sum,num);
return 0;
}
3. 最大最小数(循环)
【问题描述】输入10个整数,输出其中的最小数和最大数。
【输入形式】10个数为整数,空格分开
【输出形式】先后输出最小数和最大数,空格分开
【样例输入】12 36 98 74 10 25 86 57 49 36
【样例输出】10 98
#include<stdio.h>
int main(){
int i,min,max,x;
scanf("%d",&min);
max=min;
for(i=0;i<9;i++){
scanf("%d",&x);
if(min>x) min=x;
if(max<x) max=x;
}
printf("%d %d",min,max);
return 0;
}
4. 今天是今年第几天(条件 数组)
【问题描述】输入任一年月日表示的有效日期(年的范围为1~3000),显示该天是当年的第几天和星期几,已知公元首日(0001/01/01)为星期1。提示:如果当年的第几天today已得知,则从公元首日到现在的天数可用 d=today+(year-1)*365+((year-1)/4-(year-1)/100+(year-1)/400)计算。
【输入形式】输入任一年月日,整数形式,空格分开。
【输出形式】二个整数,空格分开。星期用0,1~6表示,星期一用1,星期日用0.
【样例1输入】2019 3 13
【样例1输出】72 3
【样例1说明】2019年3月13号是这年的第72天,星期三。
【样例2输入】2020 10 7
【样例2输出】281 3
【样例2说明】2020年10月7号是这年的第281天,星期三。
#include<stdio.h>
int main(){
int year,month,day;
int a[12];
scanf("%d %d %d",&year,&month,&day);
if(year%400==0||(year%100!=0&&year%4==0)){
a[1]=29;
}else{
a[1]=28;
}
a[0]=31;
a[2]=31;
a[3]=30;
a[4]=31;
a[5]=30;
a[6]=a[7]=31;
a[8]=30;
a[9]=31;
a[10]=30;
a[11]=31;
int s=0;
for(int i=0;i<month-1;i++){
s+=a[i];
}
s+=day;
int d,w;
d=s+(year-1)*365+((year-1)/4-(year-1)/4-(year-1)/100+(year-1)/400);
w=d%7;
printf("%d %d",s,w);
}
5. 成绩转换
【问题描述】由键盘输入某个同学的考试成绩,将其转换成“Excellent”、“Good”、“Pass”或“Fail”的形式输出。如果不是0~100之间的正整数,打印“error”。
【输入形式】一个整数。
【输出形式】成绩在0~59分时,输出“Fail”,成绩在60~69分时,输出“Pass”,成绩在70~89分时,输出“Good”、成绩在90~100分时,输出“Excellent”。如果不是0~100之间的整数,输出“error”。
【样例1输入】67
【样例1输出】Pass
【样例2输入】109
【样例2输出】error
#include<stdio.h>
int main(){
int score;
scanf("%d",&score);
if(score>100||score<0){
printf("error");
return 0;
}
if(score>=90){
printf("Excellent");
}else if(score>=70){
printf("Good");
}else if(score>=60){
printf("Pass");
}else{
printf("Fail");
}
return 0;
}
6. 字母转换
【问题描述】由键盘输入一个英文字母,如果是元音字母(a,e,i,o,u),则输出它的大写,如果是其它字母,则输出该字母的小写。
【输入形式】一个英文字母,可以是大写,也可以是小写。
【输出形式】如果是元音字母(a,e,i,o,u或它们的大写),则输出它的大写,否则输出该字母的小写。
【样例1输入】a
【样例1输出】A
【样例2输入】B
【样例2输出】b
【样例3输入】E
【样例3输出】E
【样例4输入】c
【样例4输出】c
#include<stdio.h>
int main(){
char c;
scanf("%c",&c);
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u'){
printf("%c",c-32);
}else if(c=='A'||c=='E'||c=='I'||c=='O'||c=='U'){
printf("%c",c);
}else if(c>='a'&&c<='z'){
printf("%c",c);
}else{
printf("%c",c+32);
}
return 0;
}