C语言复习题解析
填空题
表达式“40>50>60”的值是 ,“70<58 && 58<40”的值是。
程序设计题
输入10个实数,去掉一个最大数,去掉一个最小数,输出剩下8个数的平均数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include <stdio.h>
int main(){
float a,maxx,minn,sum; // a 用来接收输入,maxx minn用来记录当前最大最小数,sum用来求输入数和
scanf("%f",&a); // 输入第一个数
maxx=minn=sum=a; // 当前最大 最小 和都等于这个数
for(int i=1;i<10;i++){ //输入剩下9个
scanf("%f",&a); // 输入一个数
sum+=a; // 加上去
maxx = maxx>a?maxx:a; // 如果当前数大于之前最大的了,则把它给maxx
minn = minn<a?minn:a; // 如果当前数小于之前最小的了,则把它给minn
}
printf("%f",(sum-maxx-minn)/8); // 根据题目减去最大数 最小数 除8求平均
return 0;
}求的值。(答案:1.960785)
1
2
3
4
5
6
7
8
9
10
11#include <stdio.h>
// 根据计算式找规律,第n项分母就是1到n累加
int main(){
float S=0, mul=0; // S 记录总和,mul记录分母和
for(int i=1; i<=50;i++){
mul += i; // 每一项分母都是在前一项上+n
S = S+1.0/mul;
}
printf("%f",S);
return 0;
}打印200~400之间的素数,每行输出15个数,每个数占5列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#include <stdio.h>
// 首先要知道什么叫素数,除了1和本身都不能被整除的就是素数。
bool is_prime(int a){ // 判断a是否是素数, 如果是则返回true不是则是false
for(int i = 2; i*i <=a; i++){ //注意我这里的判别 i*i <a 即如果到了他的开方还不能被其他数整除,那么它本身也不会被整除
if(a%i==0) // 被除尽了说明不是素数 直接return false 子程序结束
return false;
}
return true; // for循环子程序都没结束说明都没除尽是素数
}
int main(){
for(int i=200; i<=400;i++){ //从200 遍历到400
if(is_prime(i)) // 如果是素数则打印
printf("%d ",i);
}
return 0;
}求179869和196037的最大公约数。(答案:2021)
1
2
3
4
5
6
7
8
9
10
11
12#include <stdio.h>
// 首先要知道什么叫最大公约数,几个数同时能被整除的最大质数,求最大公约数方法很多,这里采用辗转相除法。
int main(){
int a=196037,b=179869,c; // a,b为输入数
while(b!=0){
c=b;
b=a%b;
a =c;
}
printf("%d",a);
return 0;
}- 斐波那契(Fibonacci)数列的前两项是1、1,后面每一项是前两项的和。 求小于$10^7$的最大斐波那契数。(答案:9227465)
- 如果一个正整数数等于它各位数的立方之和,则称该数为水仙花数。 例如407= 43 +03 +73,407是一个水仙花数。打印100~999之间的所有水仙花数。 (答案:153, 370, 371, 407)
- 求解百钱买百鸡问题:鸡翁一,钱值五;鸡母一,钱值三;鸡雏三,钱值一。 欲百钱买百鸡,鸡翁、鸡母、鸡雏各几何(要求每个鸡种至少有一只)?
- 如果一个正整数n恰好等于它的1~n/2的因子之和,则称该数为完数。例如, 6 = 1 + 2 + 3,6是一个完数。打印1000以内的所有完数。(答案:6,28,496)
- 求分数序列$\frac{2}{1},\frac{3}{2},\frac{5}{3},\frac{8}{5},\frac{13}{8}$的前20项的和。(答案:32.660263)
- 求的近似值,计算到时的。精确到16位小数。(答案:2.7182818284590455)
以下程序都要求在主函数中输入输出。
- 输入一个整数k,用函数计算k以内最大的10个能被13或17整除的自然数之和。 (答案:若k = 500, 则函数值为4622。)
- 输入一个整数k,用函数计算k以内最大的10个素数之和。 (答案:若k = 100, 则输出732。)
- 已知数列a的前三项为0,0,1,后面各项都是其相邻的前三项之和。输入一个整数n,用函数计算该数列前n项的平方根之和。(答案:若n = 20,则sum = 529.781799)
- 入10个整数,用函数对其降序排序。
- 输入一个5×5矩阵A,用函数将A的主对角线以上的元全部置为0。
- 输入一个N×N矩阵A,N为符号常量,其值定义为5。用函数将A的第一行元素与倒数第一行元素对调,第二行与倒数第二行对调,……,其它依此类推。
- 输入一行字符(≤80个),用函数将其逆序存放。
- 输入一行字符,用函数实现将其中每个单词(以空格为界)的第一个字母改为大写。
- 输入一个字符串s,再输入一个字符c,用函数截取s中第1个与c相同的字符前面的字符串(不包括c)并返回,若s中不含c,则截取整个字符串。
- 输入一个字符串s,再输入一个字符c,用函数删除s中所有与c相同的字符,例如, 若s=”Do you see now?”,c=’o’,则返回”D yu see nw?”。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!