- hellohebin 的博客
《计算机程序设计基础》试题册 01,02-题解
- 2025-3-4 22:20:46 @
A 你好,AI
#include<stdio.h>
int main(){
printf("Hello AI.");
return 0;
}
B 吃西瓜
【分析】判断大于2的偶数即可。
#include<stdio.h>
int main(){
int n; scanf("%d", &n);
if(n%2 == 0 && n>2) {
printf("YES");
}else{
printf("NO");
}
return 0;
}
C 数字个数
【分析】掌握如何删除个位和获取个位的方法。
#include<stdio.h>
int main(){
int l,r,cnt=0; scanf("%d%d", &l, &r);
for(int i=l; i<=r; i++){
// i = 100
// /10 删除个位
// %10 取得个位
int t = i/100 + i/10%10 + i%10;
if(i%2==0 && t%4==0){
cnt ++;
}
}
printf("%d\n", cnt);
return 0;
}
D 假数据
【分析】可以使用函数,封装一个素数判断,这样代码书写较为简单。
#include<stdio.h>
// 素数判断
int isprime(int n){
for(int i=2; i<n; i++)
if(n%i==0) return 0;
return n > 1;
}
int main(){
int n,m,x;
scanf("%d%d", &n, &m);
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
scanf("%d", &x);
if(x<0 && isprime(-x)) {
x = 3*x*x+2*x+1;
}
printf("%d ", x);
}
printf("\n");
}
return 0;
}
E 你好,MOOC
#include<stdio.h>
int main(){
printf("Hello MOOC.");
return 0;
}
F 等级
【分析】可以使用 if 或者 switch 完成
#include<stdio.h>
int main(){
int score; scanf("%d", &score);
char c;
if( score >= 90) {
c = 'A';
}
if( score >= 80 && score <90) {
c = 'B';
}
if( score >= 70 && score <80) {
c = 'C';
}
if( score >= 60 && score <70) {
c = 'D';
}
if( score < 60) {
c = 'E';
}
printf("%c", c);
return 0;
}
G 糖果
【分析】统计奇数的个数、最小的奇数以及所有元素的和。当奇数的个数为奇数的时候,用元素和减去最小的奇数;否则不用减。
#include<stdio.h>
int main(){
int n,x, cnt=0, mn=101, sum=0;
// cnt 表示 奇数的个数
// mn 表示 奇数的最小值
scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d", &x);
if(x%2 != 0) {
cnt ++; // 奇数的个数
if(mn > x) { // 更新最小的奇数
mn = x;
}
}
sum += x;
}
if(cnt %2 != 0) sum -= mn;
printf("%d\n", sum);
return 0;
}
H 真素数
【分析】可以实现两个函数 (1)素数判断;(2)对数据的每一位求和。
#include<stdio.h>
#define N 105
int path[N],cnt;
// 素数判断
int isprime(int n){
for(int i=2; i<n; i++)
if(n%i==0) return 0;
return n > 1;
}
// 对 数据的每一位求和
int sum(int n){
// /10 -- 删除个位
// %10 -- 取得个位
int t = n, s = 0; // t=123
while(t){
s += t%10;
t/=10;
}
return s;
}
int main(){
int n, x; scanf("%d", &n);
for(int i=1; i<=n; i++){
scanf("%d", &x);
if(isprime(x) & isprime(sum(x))){
path[ ++ cnt] = x;
}
}
printf("%d\n", cnt);
for(int i=1; i<=cnt; i++){
printf("%d ", path[i]);
}
return 0;
}