目录
前言
一、用函数的方式完成判别合数并求一个区间内的合数之和
二、实验8 函数(一)(实验报告见资源下载)
三、使用全局变量及函数求最大公约数和最小公倍数
四 、实验9 - 变量的作用域与生存期(实验报告见资源下载)
五、输出每个月的天数
六、猜猜有几块钱
七、使用函数求素数和
八、用函数求 Fibonacci 数
九、实验10 - 函数(二)(实验报告见资源下载)
总结
前言
1.本专栏基于谭浩强先生写的《C程序设计(第五版)》与《C程序设计(第五版)学习辅导》配套的相关试题和实验,给出常见C语言基础试题相应代码,方便大家参考学习
2.本专栏所有代码均在本地及Online Judge(OJ)平台测试通过,注意各大OJ平台的测试标准不同,可能存在出入,若很遗憾无法提交,则仅作为程序实现思想交流
3.本专栏仅收录个人C实验,仅仅实现程序功能,不涉及高性能算法,当然也欢迎算法师傅交流优化
4.部分代码参考网上代码后经个人修改优化,望周知
5.部分代码存在与题目描述不符的情况,望周知
6.创作不易,整理不易,若对您有帮助请评论/点赞/收藏/转发,尊重每个技术人!
一、用函数的方式完成判别合数并求一个区间内的合数之和
【问题描述】使用函数求合数和:输入两个正整数 m 和 n(1<=m<=n<=500),求 m 和 n 之间的合数和。合数指自然数中除能被1和本身整除外,还能被其他的数整除的数。1 既不是合数也不是素数,最小的合数是4 。要求定义并调用函数 composite(p)判 断 p 是否为合数,当 p 为合数时返回 1,否则返回 0。定义并调用函数 composite_sum(m, n),该函 数返回区间[m, n]内所有合数的和。
【输入形式】
【输出形式】
【样例输入】1 10
【样例输出】The sum of [1,10] = 37
#include<stdio.h>
#include<stdlib.h>
int composite(int p){
int i ;
for(i = 2 ; i < p ; i++){
if(p % i == 0 ){
return 1 ;
}
}
return 0 ;
}
int composite_sum(int m, int n){
int p,res=0 ;
for(p=m ; p <= n ; p++){
if (composite(p) == 1){
res += p ;
}
}
return res;
}
int main(){
int m,n,res;
scanf("%d %d",&m,&n);
res = composite_sum(m,n);
printf("The sum of [%d,%d] = %d",m,n,res);
system("pause");
return 0 ;
}
二、实验8 函数(一)(实验报告见资源下载)
实验8-函数(一)实验报告-C文档类资源-CSDN文库https://download.csdn.net/download/m0_66842854/87527995
三、使用全局变量及函数求最大公约数和最小公倍数
【问题描述】使用全局变量及函数求最大公约数和最小公倍数:输入两个正整数 m 和 n(1<=m<=n<=500),求 m 和 n 的最大公约数和最小公倍数。要求定义两个全局变量Hcf和Lcd分别代表最大公约数和最小公倍数。定义函数void hcf(m,n)求最大公约数,该函数无返回值,求出的最大公约数赋给全局变量Hcf。定义函数void lcd(m, n)求最小公倍数,该函数无返回值,求出的最小公倍数赋给全局变量Lcd。
【输入形式】
【输出形式】
【样例输入】24 16
【样例输出】H.C.F = 8
L.C.D = 48
#include<stdio.h>
#include<stdlib.h>
int Hcf=0;
int Lcd=0;
void hcf(int m , int n){
int j ,limit;
if(m>n){
limit=n;
}else{
limit=m;
}
for(j=1;j<=limit;j++){
if(m%j==0&&n%j==0){
Hcf = j ;
}
}
printf("H.C.F = %d\n",Hcf);
}
void lcd(int m , int n){
int i ;
if(m>n){
i=m;
}else{
i=n;
}
while(1==1){
if(i%m==0&&i%n==0){
Lcd = i ;
break;
}
i++;
}
printf("L.C.D = %d",Lcd);
}
int main(){
int m,n;
scanf("%d%d",&m,&n);
hcf(m,n);
lcd(m,n);
system("pause");
return 0 ;
}
四 、实验9 - 变量的作用域与生存期(实验报告见资源下载)
实验9-变量的作用域与生存期-C文档类资源-CSDN文库https://download.csdn.net/download/m0_66842854/87527997
五、输出每个月的天数
【问题描述】输出每个月的天数:输入年 year,输出该年 1~12 月每个月的天数。其中 1、3、5、7、8、 10、12 月有 31 天,4、6、9、11 月有 30 天,2 月平年有 28 天,闰年有 29 天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。要求定义并调用函数 month_days(year, month),该函数返回 year 年 month 月的天数。
【输入形式】
【输出形式】
【样例输入】2000
【样例输出】31 29 31 30 31 30 31 31 30 31 30 31
int m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12;
int year_(int y)
{
if((y%4==0&&y%100!=0)||(y%400==0)){
return 1;
}else{
return 0;
}
}
void month_days(int year)
{
if(year_(year)==1)
{
m1=31;m2=29;m3=31;m4=30;m5=31;m6=30;m7=31;m8=31;m9=30;m10=31;m11=30;m12=31;
}else{
m1=31;m2=28;m3=31;m4=30;m5=31;m6=30;m7=31;m8=31;m9=30;m10=31;m11=30;m12=31;
}
}
#include<stdio.h>
int main()
{
int year;
scanf("%d",&year);
month_days(year);
printf("%d %d %d %d %d %d %d %d %d %d %d %d",m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12);
return 0;
}
六、猜猜有几块钱
【问题描述】
有5个小朋友坐在一起,问第5个小朋友有几块钱?他说比第4个多2块。问第4个,他说比第3个多2块。问第3个,又说比第2个多2块。问第2个,说比第1个多2块。最后问第1个人,他说有10块钱,猜猜第5个小朋友有几块钱?
【输入形式】
输入一行3个整数,依次为m,n,k,m表示一共有几个人,n表示多的钱数,k表示第1个小朋友的钱数。
【输出形式】
输出第m个小朋友的钱数。
【样例输入】
6 2 2
【样例输出】
12
【说明】
要求使用函数递归的方式实现。
#include<stdio.h>
#include<stdlib.h>
int func(int m,int n,int k){
if(m==1){
return k ;
} else {
return func(m-1,n,k)+n;
}
}
int main(){
int m,n,k,res;
scanf("%d%d%d",&m,&n,&k);
res = func(m,n,k);
printf("%d",res);
system("pause");
return 0 ;
}
七、使用函数求素数和
【问题描述】使用函数求素数和:输入两个正整数 m 和 n(1<=m<=n<=500),求 m 和 n 之间的素数和。素 数就是只能被 1 和自身整除的正整数,1 不是素数,2 是素数。要求定义并调用函数 prime(p)判 断 p 是否为素数,当 p 为素数时返回 1,否则返回 0。定义并调用函数 prime_sum(m, n),该函 数返回区间[m, n]内所有素数的和。
【输入形式】
【输出形式】
【样例输入】1 10
【样例输出】Sum of (1,10)=17
#include<stdio.h>
#include<stdlib.h>
int prime(int x)
{
int i ;
for(i=2;i<x;i++){
if(x%i==0){
return 0;
}
}
if(x==1){
return 0;
}
return 1;
}
int prime_sum(int m, int n){
int j ,sum=0;
for(j=m;j<=n;j++){
if(prime(j)==1){
sum+=j;
}
}
return sum ;
}
int main(){
int m,n,sum;
scanf("%d%d",&m,&n);
sum = prime_sum(m,n);
printf("sum of(%d,%d) = %d\n",m,n,sum);
system("pause");
return 0 ;
}
八、用函数求 Fibonacci 数
【问题描述】使用函数求 Fibonacci 数:输入正整数 n(1 <=n<=46 ),输出斐波那契(Fibonacci)数 列的第 n 项。所谓 Fibonacci 数列就是满足任一项数字是前两项的和(最开始两项均定义为 1) 的数列,从第 1 项起为 1、1、2、3、5、8、13、21……。要求定义并调用函数 fib(n),它的功能是返回第 n 项Fibonacci 数。例如,fib(7)的返回值是13。
【输入形式】
【输出形式】
【样例输入】8
【样例输出】fib(8)=21
#include <stdio.h>
#include <stdlib.h>
int fibo(int n){
if(n==1||n==2){
return 1;
}else{
return fibo(n-1)+fibo(n-2);
}
}
int main()
{
int n,res ;
scanf("%d",&n);
res = fibo(n);
printf("fib(%d)=%d",n,res);
system("pause");
return 0 ;
}
总结
本专栏旨在帮助C语言初学者学习编程,仅供学习交流!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)