C语言程序设计实验报告

类型实验报告
课程名C语言程序设计
内容函数练习
学生姓名kk_阿白
专业班级电信2101班
学 号01
指导教师常老师
实验日期2021年11月05日

一、实验目的
熟悉并掌握函数的语法规则,掌握函数定义、声明和调用的基本语法格式。理解基于函数的模块化程序设计思想,能根据问题合理设计函数,分步骤化简问题、解决问题。


二、实验内容
Contest1725 - 电信通信21级实验作业3
请登录acm.zzuli.edu.cn完成http://acm.zzuli.edu.cn/contest.php?cid=1725中的在线题目,用函数来解决每个问题(A和C题可不用函数)。
A n个数求和(多实例测试)
B 敲7(多实例测试)
C 数值统计(多实例测试)
D 素数表(函数专题)
E 复合函数求值(函数专题)
F 统计元音(函数专题)
G 逆序数字(函数专题)
H 回文数(函数专题)
I 反转a+b [选做]


三、题目的分析和思考
【在这里描述下你在解题过程中对题目进行的思考,以及解题的思路。】
A n个数求和(多实例测试)
解题思路:
使用2个while循环,同时用sum进行累加,得到每组n个数的和,每次输出后初始化sum

B 敲7(多实例测试)
解题思路:
利用函数判断数字是否符合,while分离数字进行判断,主函数使用1个while循环,内嵌入for循环,遍历n的同时进行判断(至于oj上会超限是因为数据在一定范围内,可不采用分离数字,直接判断即可)

C 数值统计(多实例测试)
解题思路:使用2个while循环,并用3个变量进行统计,每次输出后初始化

D 素数表(函数专题)
解题思路:利用prime函数判断是否为素数,判断范围为(2,√n),使用一个for循环,从m到n进行遍历

E 复合函数求值(函数专题)
解题思路:公式中含绝对值的分类进行讨论

F 统计元音(函数专题)
解题思路:利用vowel函数判断是否为对应元音字母即可

G 逆序数字(函数专题)
解题思路:利用inverse函数进行转换,其中使用while进行逆置,首先倒序数字m先乘10后加余数,之后原先数字n进行除10

H 回文数(函数专题)
解题思路:使用函数进行判断是否为回文数,得到逆序数字后判断即可,主函数使用for循环,从m到n进行遍历


四、解题程序代码(必须有详细注释)
【在该部分列出解题代码,关键语句必须有注释。】
A n个数求和(多实例测试)
程序如下:

#include<stdio.h>
int main()
{
    int t,n,sum,m;
    scanf("%d",&t);
    /*代表t组数据*/
    while(t--)
    {
    /*初始化sum*/
       sum=0;
      scanf("%d",&n);
      /*每组数据n个数*/
      while(n--)
    {
      scanf("%d",&m);
      sum+=m;
    }
      printf("%d\n",sum);
    }
    return 0;
}

B 敲7(多实例测试)
程序如下:

#include<stdio.h>
int seven(int m);
int main()
{
    int i,t,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=1; i<=n; i++)
        {
            if(seven(i))
                printf("%d ",i);
        }
        printf("\n");
    }
    return 0;
}
int seven(int m)
{
    if(m%7==0)
        return 1;
    while(m>0)
    {
        if(m%10==7)
            return 1;
        m/=10;
    }
}

C 数值统计(多实例测试)
程序如下:

#include<stdio.h>
  
int main()
{
    int n;
    int a,b, c,i;
    double num;
    /*输入n组数据,n为0时结束*/
    while(scanf("%d", &n),n!=0)
    {
   /*初始化3个变量*/
    a = 0,b = 0,c = 0;
    for(i=1;i<=n;i++)
    {
        scanf("%lf", &num);
        if(num==0)
         a++;
        else if(num>0)
         b++;
        else
         c++;
    }    
    printf("%d %d %d\n",c, a,b);
    }
    return 0;
}

D 素数表(函数专题)
程序如下:

#include<stdio.h>
#include<math.h>
 
int prime(int m);
 
int main(void)
{
    int i,a,b;
    scanf("%d%d",&a,&b);
    for(i=a;i<=b;i++)
    {
    /*判断i是否为素数*/
        if(prime(i))
        printf("%d ",i);
    }
    return 0;
}
/*返回1代表为素数,否则不是素数*/
int prime(int m)
{
    int i;
    /*如果m为1则直接返回0*/
    if(m==1)
    return 0;
    for(i=2;i<=sqrt(m);i++)
    {
        if(m%i==0)
        return 0;
    }
    return 1;
}

E 复合函数求值(函数专题)
程序如下:

double funF(double x)
{
    double F;
    /*因为公式含绝对值,需分三种情况进行讨论*/
    if(x<=-1)
    F=2-2*x;
    else if(-1<=x&&x<=3)
    F=4;
    else
    F=2*x-2;
    return F;
}
double funG(double x)
{
    double G;
    G=x*x-3*x;
    return G;
}

F 统计元音(函数专题)
程序如下:

int vowel(char ch)
{
/*字母有大小写,故判断需注意*/
if(ch=='a'||ch=='i'||ch=='e'||ch=='o'||ch=='u'||ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U')
    return 1;
    return 0;
}

G 逆序数字(函数专题)
程序如下:

int inverse(int n)
{
    int a=0;
    while(n>0)
    {
        /*乘10,然后加余数*/
        a*=10;
        a+=n%10;
        n/=10;
    }
    return a;
}

H 回文数(函数专题)
程序如下:

#include<stdio.h>
int inverse(int n);
int main()
{
    int i,s,t;
    scanf("%d%d",&s,&t);
    for(i=s; i<=t; i++)
    {
    /*判断是否为回文数*/
        if(inverse(i)==i)
            printf("%d ",i);
    }
    return 0;
}
int inverse(int n)
{
    int a=0;
    while(n>0)
    {
        /*乘10,然后加余数*/
        a*=10;
        a+=n%10;
        n/=10;
    }
    return a;
}

五、收获与思考
【在此描述下你从中获得的知识点或经验技巧】

知识点:
1.多实例分析
2.素数判定
3.得到逆数字
4.函数返回值与判断语句结合

经验技巧:
1.使用while比for更加简洁明了
2.每组数据结束后注意初始化,防止出错
3.先思考题干定义,制定对应函数,最后再写主函数,使得思路清晰

评分标准:①是否按时出勤实验课,实验任务是否全部完成,占50%;② 实验代码及报告的格式是否规范,代码是否注释,是否美观,是否详尽,是否真实,占40%;③ 实验作业及报告是否按时提交,占10%


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kk_阿白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值