TASK 1
1 #include <stdio.h> 2 3 char score_to_grade(int score); 4 5 int main() { 6 int score; 7 char grade; 8 9 while(scanf("%d", &score) != EOF) { 10 grade = score_to_grade(score); 11 printf("分数: %d, 等级: %c\n\n", score, grade); 12 } 13 14 return 0; 15 } 16 17 18 char score_to_grade(int score) { 19 char ans; 20 21 switch(score/10) { 22 case 10: 23 case 9: ans = 'A'; break; 24 case 8: ans = 'B'; break; 25 case 7: ans = 'C'; break; 26 case 6: ans = 'D'; break; 27 default: ans = 'E'; 28 } 29 30 return ans; 31 }
问题1:通过对score除以10划分成绩为90+、80+、70+等等的不同层次;形参是整形,返回值是字符
问题2:有问题;删去break后,程序无法在完成score-〉grade后终止,可能导致串线(直接跳转到default);A、B、C、D是字符而不是字符串,应该改用单引号,可能导致报错无法运行
TASK 2
1 #include <stdio.h> 2 3 int sum_digits(int n); 4 5 int main() { 6 int n; 7 int ans; 8 9 while(printf("Enter n: "), scanf("%d", &n) != EOF) { 10 ans = sum_digits(n); 11 printf("n = %d, ans = %d\n\n", n, ans); 12 } 13 14 return 0; 15 } 16 17 18 int sum_digits(int n) { 19 int ans = 0; 20 21 while(n != 0) { 22 ans += n % 10; 23 n /= 10; 24 } 25 26 return ans; 27 }
问题1:计算输入数字(两位数)各位之和
问题2:能实现同等效果;上述方法是通过整除先后获得十位和个位(方法相同),另一个方法是先整除得到十位,再取模得到个位(方法不同)
TASK 3
1 #include <stdio.h> 2 3 int power(int x, int n); 4 5 int main() { 6 int x, n; 7 int ans; 8 9 while(printf("Enter x and n: "), scanf("%d%d", &x, &n) != EOF) { 10 ans = power(x, n); 11 printf("n = %d, ans = %d\n\n", n, ans); 12 } 13 14 return 0; 15 } 16 17 18 int power(int x, int n) { 19 int t; 20 21 if(n == 0) 22 return 1; 23 else if(n % 2) 24 return x * power(x, n-1); 25 else { 26 t = power(x, n/2); 27 return t*t; 28 } 29 }
问题1:计算x的n次方
问题2:是递归函数;递归模式:a)当指数为0时答案为1输出,b)当指数为偶数时答案为x与x的(n-1)次幂的乘积输出,c)当指数为奇数时答案为(x的二分之n)平方输出
TASK 4
1 #include<stdio.h> 2 3 int n = 100,i = 2; 4 int ans,sum = 0; 5 6 int is_prime(int n,int i); 7 8 int main() 9 { 10 printf("100以内的孪生素数:\n"); 11 12 ans = is_prime(n,i); 13 14 printf("%d",ans); 15 printf("100以内的孪生素数共有%d个",sum); 16 17 18 } 19 20 21 int is_prime(int n,int i) 22 { 23 for(;i <= n/2;++i) 24 { 25 if(n % i || (n+2)% i)
return 0;
26 continue; 27 else 28 return 1;
printf("%d",n); 29 sum += 1; 30 31 } 32 }
标签:10,return,int,ans,score,实验,printf From: https://www.cnblogs.com/Florence11/p/18497746