实验3
任务一
点击查看代码
#include<stdio.h>
char score_to_grade(int score);
int main(){
int score;
char grade;
while(scanf("%d",&score)!=EOF){
grade=score_to_grade(score);
printf("分数:%d,等级:%c\n\n",score,grade);
}
return 0;
}
char score_to_grade(int score){
char ans;
switch(score/10){
case 10:
case 9: ans='A';break;
case 8: ans='B';break;
case 7: ans='C';break;
case 6: ans='D';break;
default: ans='E';
}
return ans;
}
实验截图

问题1:将分数转化为成绩;形参类型是int,返回值是char
问题2:无break会执行所有选项
任务二
点击查看代码
#include<stdio.h>
int sum_digits(int n);
int main() {
int n;
int ans;
while(printf("Enter n:"),scanf("%d",&n)!=EOF){
ans=sum_digits(n);
printf("n=%d,ans=%d\n\n",n,ans);
}
return 0;
}
int sum_digits(int n){
int ans=0;
while(n!=0){
ans+=n%10;
n/=10;
}
return ans;
}
实验截图

问题1:求各位数字之和
问题2:可以
任务三
点击查看代码
#include<stdio.h>
int power(int x, int n);
int main() {
int x,n;
int ans;
while(printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF){
ans=power(x,n);
printf("n=%d,ans=%d\n\n",n,ans);
}
return 0;
}
int power(int x,int n){
int t;
if(n==0)
return 1;
else if(n%2)
return x*power(x,n-1);
else{
t=power(x,n/2);
return t*t;
}
}
实验截图

问题1:求x的n次方
问题2:是,

任务四
点击查看代码
#include<stdio.h>
int is_prime(int n);
int main(){
int cnt=0;
printf("100以内的孪生素数:\n");
for(int n=2;n<=98;n++){
if (is_prime(n)&&is_prime(n+2)){
printf("%d %d\n",n,n+2);
cnt++;
}
}
printf("100以内的孪生素数共有%d个.\n",cnt);
return 0;
}
int is_prime(int n){
if(n<2)
return 0;
for(int i=2;i<n;i++){
if(n%i==0)
return 0;
}
return 1;
}

任务五
方式1
点击查看代码
#include<stdio.h>
int main(){
while(1){
int s1=1,s2=1,s3=1,n,m,ans;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
s1*=i;
for(int j=1;j<=m;j++)
s2*=j;
for(int k=1;k<=(n-m);k++)
s3*=k;
ans=s1/s2/s3;
printf("n=%d,m=%d,ans=%d\n",n,m,ans);
}
return 0;
}
方式2
点击查看代码
#include<stdio.h>
int func(int x,int y);
int main(){
int n,m;
int ans;
while(scanf("%d%d",&n,&m)!=EOF){
ans=func(n,m);
printf("n=%d,m=%d,ans=%d\n\n",n,m,ans);
}
return 0;
}
int func(int x,int y){
if(x<y)
return 0;
if (y==0||x==y)
return 1;
return func((x-1),y)+func((x-1),(y-1));
}

任务六
点击查看代码
#include<stdio.h>
int gcd(int n,int m,int k);
int main(){
int a,b,c;
int ans;
while(scanf("%d%d%d",&a,&b,&c)!=EOF){
ans=gcd(a,b,c);
printf("最大公约数:%d\n\n",ans);
}
return 0;
}
int gcd(int n,int m,int k){
int i;
if(n<m&&n<k) i=n;
if(m<n&&m<k) i=m;
if(k<n&&k<m) i=k;
while(1){
if(n%i==0&&m%i==0&&k%i==0){
return i;
break;
}
i--;
}
}

任务七
#include <stdio.h>
#include <stdlib.h>
void print_charman(int n);
int main() {
int n;
printf("Enter n: ");
scanf("%d", &n);
print_charman(n);
return 0;
}
void print_charman(int n) {
for(int i=0;i<n;i++){
for(int k=0;k<i;k++)
printf("\t");
for(int j=0;j<2*n-2*i-1;j++){
printf(" o \t");
}
printf("\n");
for(int k=0;k<i;k++)
printf("\t");
for(int j=0;j<2*n-2*i-1;j++){
printf("<H>\t");
}
printf("\n");
for(int k=0;k<i;k++)
printf("\t");
for(int j=0;j<2*n-2*i-1;j++){
printf("I I\t");
}
printf("\n");
}
}




浙公网安备 33010602011771号