实验三
1 #include<stdio.h> 2 char score_to_grade(int score); 3 int main(){ 4 int score; 5 char grade; 6 while(scanf("%d",&score)!=EOF){ 7 grade=score_to_grade(score); 8 printf("分数:%d,等级:%c\n\n",score,grade); 9 } 10 return 0; 11 } 12 13 char score_to_grade(int score){ 14 char ans; 15 16 switch(score/10){ 17 case 10: 18 case 9: ans='A'; break; 19 case 8: ans='B'; break; 20 case 7: ans='C'; break; 21 case 6: ans='D'; break; 22 default: ans='E'; 23 24 } 25 return ans; 26 }

问题1:功能:将整数分数转换为对应的等级数字
问题2:1.双引号赋值字符变量,类型错误;2.无break,无法实现分层目的
1 #include<stdio.h> 2 int sum_digits(int n); 3 int main(){ 4 int n; 5 int ans; 6 while(printf("Enter n:"),scanf("%d",&n)!=EOF){ 7 ans=sum_digits(n); 8 printf("n=%d,ans=%d\n\n",n,ans); 9 } 10 return 0; 11 } 12 int sum_digits(int n){ 13 int ans=0; 14 while(n!=0){ 15 ans+=n%10; 16 n/=10; 17 } 18 return ans; 19 }

问题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");
}
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:是递归函数,递归
问题2:是

#include<stdio.h>
int func(int n,int m);
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 n,int m){
if(m<0||m>n)
return 0;
if(m==0||m==n)
return 0;
return func(n-1,m)+func(n-1,m-1);
}
#include<stdio.h>
int func(int n,int m);
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 n,int m){
if(m<0||m>n)
return 0;
if(m==0||m==n)
return 1;
if(m>n-m)
m=n-m;
long long res=1;
for(int i=1;i<=m;i++){
res=res*(n-m+i)/i;
}
return(int)res;
}

#include<stdio.h>
int gcd_two(int x,int y);
int gcd(int a,int b,int c);
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_two(int x,int y){
while(y!=0){
int temp=x%y;
x=y;
y=temp;
}
return x;
}
int gcd(int x,int y,int z){
int temp=gcd_two(x,y);
return gcd_two(temp,z);
}

#include <stdio.h>
void printHead(int i, int n) {
int thisN = i*2-1;
int spaceN = n-i;
for(int j=1; j<=spaceN; j++) printf(" ");
for(int j=1; j<=thisN; j++) {
printf(" O ");
printf(" ");
}
for(int j=1; j<=spaceN; j++) printf(" ");
printf("\n");
}
void printBody(int i, int n) {
int thisN = i*2-1;
int spaceN = n-i;
for(int j=1; j<=spaceN; j++) printf(" ");
for(int j=1; j<=thisN; j++) {
printf("<H>");
printf(" ");
}
for(int j=1; j<=spaceN; j++) printf(" ");
printf("\n");
}
void printFoot(int i, int n) {
int thisN = i*2-1;
int spaceN = n-i;
for(int j=1; j<=spaceN; j++) printf(" ");
for(int j=1; j<=thisN; j++) {
printf("I I");
printf(" ");
}
for(int j=1; j<=spaceN; j++) printf(" ");
printf("\n");
}
void printCharman(int n) {
for(int i=n; i>0; i--) {
printHead(i,n);
printBody(i,n);
printFoot(i,n);
printf("\n");
}
}
int main() {
int n;
printf("Enter n:");
scanf("%d", &n);
printCharman(n);
return 0;
}

浙公网安备 33010602011771号