c语言函数实验报告

时间:2024.4.21

实 验 报 告

课程名称 C语言程序设计 实验名称 姓 名 学 号 专业班级 实验日期

一、实验目的

1. 学习定义函数的方法。。

2. 练习形参与实参数据传递的方式。

3. 深刻理解全局变量与局部变量,动态变量与静态变量的区别;

二、实验内容

1. 判断素数。

2. 求平均成绩。

3. 字符串逆序连接输出。

三、实验环境

Gcc编译器。

四、实验步骤和结果

1.判断素数。

1)程序代码如下:

//判断素数

//Akets Yan

//2014-05-21

#include <stdio.h>

int panduan(long x)

{

int i;

for(i = 2; i < x; i++)

{

if(x % i == 0)break;

}

if(x == i)return 1;

else return 0;

}

int main()

{

long x;

printf("请输入一个正整数:

c语言函数实验报告

\n");

scanf("%ld",&x);

if(panduan(x) == 0)printf("%ld不是素数\n",x);

else printf("%ld是素数\n",x);

return 0; }

2) 运行程序,输入、输出结果如下:

2.调用函数法求平均成绩。

1)程序代码如下:

//求平均成绩

//Akets Yan

//2014-05-21

#include <stdio.h>

float average(float *score)

{

float a=0.0,x;

int i;

for(i = 0;i < 10; i++)

a += *(score++);

x = a / 10.0;

return x;

}

int main()

{

float score[10];

int i;

printf("请输入十个成绩:\n");

for(i = 0; i < 10; i++)

scanf("%f",&score[i]);

printf("10位同学此门课平均成绩为:%.2f\n",average(score)); return 0;

}

2

c语言函数实验报告

)运行程序,输入、输出结果如下:

3. 字符串逆序连接输出。

1)程序代码如下:

//字符串逆序连接输出

//Akets Yan

//2014-05-25

#include <stdio.h>

char lmp(char s[],char t[])

{

int i,j;

for(i = 0,j = 0;s[i] != '\0';)

{

t[j++] = s[i++];

}

for(;i > 0;)

{

t[j++] = s[--i];

}

t[j] = '\0';

}

int main()

{

int x;

printf("请输入你想输入的字符串的字符个数:\n"); scanf("%d",&x);

char s[x+1],t[2 * x + 1];

printf("请输入字符串:\n");

scanf("%s",s);

lmp(s,t);

printf("%s\n",t);

return 0;

}

2)运行程序,输入、输出结果如下:

c语言函数实验报告

五、实验分析和总结

1.程序一:

1)问题 编译出现warning: format '%ld' expects type 'long int *', but argument 2 has type 'long int'

2)解决 scanf函数中未使用“&”

3)思考 检查需细心

4)总结 时常复习以免遗忘

2.程序二:

1)问题 出现warning: 'a' may be used uninitialized in this function

且运行结果出错

2)解决 关键变量“a”未初始化

3)思考 未初始化变量可能导致不可预知的错误

4)总结 在不行程序运行的情况下,尽量将变量都初始化

3.程序三:

1)问题 无

2)解决

3)思考

4)总结

c语言函数实验报告


第二篇:C语言实验七 函数 实验报告


    

      C语言程序设计

         实

         验

         报

         告     

       

实验题目

  实验七  函数

实验目的

(1)掌握函数定义的方法;

(2)掌握函数实参与形参的对应关系,以及值传递的方式。

(3)掌握函数的嵌套调用和递归调用的方法;

(4)掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法;

(5)学习对多文件的程序的编译和运行。

实验内容和步骤

1、写一个判别素数的函数。在主函数输入一个整数,输出是否是素数的信息。

#include<stdio.h>

void main()

{int  prime(int);

 int m,flag=1;

 char c;

 while(flag)

  {printf("Enter the m:\n");

   scanf("%d",&m);

   if(prime(m))

       printf("%d 是素数!",m);

    else

         printf("%d 不是素数!",m);

  printf("\nContinue or not?(Y&N)\n");

  scanf(" %c",&c);

  if(c=='Y')

        flag=1;

  else

        flag=0;

  }

}

int prime(int m)

{int i,flag=1;

for(i=2;i<m && flag;i++)

   if(m%i==0)

          flag=0;

  return flag;

}

2、用一个函数来实现将一行字符串中最长的单词找出。此行字符串从主函数传递给该函数。

1)把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。#include<stdio.h>

#include<string.h>

void main()

{int word(char);

 int longest(char[]);

 int i;

 char string[80];

 printf("Enter a line:\n");

 gets(string);

 printf("The longest word is:\n");

 for(i=longest(string);word(string[i]);i++)

        putchar(string[i]);

 putchar('\n');

}

int word(char c)

{if(c>'a'&&c<'z' || c>'A'&&c<'z')

     return 1;

 else

         return 0;

}

int longest(char string[])

{int len=0,length=0,flag=1,place=0,point,i;

 for(i=0;i<=strlen(string);i++)

        if(word(string[i]))

               if(flag)

               {point=i;flag=0;}

               else len++;

        else

        {flag=1;

        if(len>length)

        {length=len;place=point;}

        len=0;

        }

 return place;

}

2)、把两个函数分别放在两个程序文件中,作为两个文件进行编译。

注:下图为文件内容(文件名分别为8__10.cfile2.c

 3、用递归法讲一个整数n转换成字符串。

#include<stdio.h>

void main()

{void convert(int);

 int m;

 printf("Enter int m:\n");

 scanf("%d",&m);

 convert(m);

 putchar('\n');

}

void convert(int m)

{int i;

if((i=m/10)!=0)

  convert(i);

printf("%c ",m%10+'0');

}

4、求两个整数的最大公约数和最小公倍数。

1)不用全局变量,分别用两个函数求最大公约数和最小公倍数。两整数在主函数中输入,传递给函数1,以求出最小公倍数,然后再与两个整数一起作为实参传给函数2,以求出最小公倍数,返回主函数输出最大公约数和最小公倍数。

#include<stdio.h>

void main()

{int great_commom(int x,int y);

int low_common(int m,int n,int a);

int a,b,m,n;                     //用m,n,a,b分别代表两个数及其最大公约数和最小公倍数

printf("Please enter two numbers:\n");

scanf("%d %d",&m,&n);

a=great_commom(m,n);

b=low_common(m,n,a);

printf("最大公约数为:%d;\n最小公倍数为:%d。\n",a,b);

}

int great_commom(int x,int y)

{int i,s;

for(i=1;i<=(x>y?y:x);i++)

   if(x%i==0 && y%i==0)

          s=i;

   return s;

}

int low_common(int m,int n,int a)

{

       return (m*n/a);

}

2)用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最小公倍数和最大公约数都设为全局变量,在主函数输出他们的值

#include<stdio.h>

int a=0,b=0;                                      //最大公约数和最小公倍数

void main()

{void great_commom(int x,int y);

void low_common(int m,int n,int a);

int m,n;                                             //用m,n分别代表两个数

printf("Please enter two numbers:\n");

scanf("%d %d",&m,&n);

great_commom(m,n);

low_common(m,n,a);

printf("最大公约数为:%d;\n最小公倍数为:%d。\n",a,b);

}

void great_commom(int x,int y)

{int i;

for(i=1;i<=(x>y?y:x);i++)

   if(x%i==0 && y%i==0)

          a=i;

}

void low_common(int m,int n,int a)

{

       b=(m*n)/a;

}

5、写一个函数,输入一个十六进制的数,输出相应的十进制数。

#include<stdio.h>

#include<string.h>

#include<math.h> 

int flag=1; 

void main() 

{int convert(char string[]);

 char string[100];

 int s,flag=1; 

 printf("Please enter a line:\n");

 gets(string);

 s=convert(string); 

 if(flag) printf("s(D)=%d.\n",s); 

 else printf("The number is not a ox.\n"); 

int convert(char string[])   

{int i=strlen(string)-1,sum=0; 

 for(;i>=0;i--) 

       if(string[i]<='9' && string[i]>='0')

              sum=sum+(string[i]-'0')*pow(16,(i)); 

       else if(string[i]>='A' && string[i]<='Z')

                  sum=sum+(string[i]-'A')*pow(16,(i)); 

               else  if(string[i]>='a' && string[i]<='z')

                           sum=sum+(string[i]-'a')*pow(16,(i));

                      else  flag=0;

 return sum;

实验分析

1、 在实验过程中,当使用数组名作为函数的参数时,忘记了不需要加[n],造成编译过程出错而又摸不着头脑,使用数组作为函数参数时,只需在调用函数时写数组名即可;

2、 实验的第一个内用(判断素数),由于采用了循环语句使两个scanf连续,这种情况往往会造成回车键被第二个scanf所接受,造成第二个scanf无效,程序错误;

3、 通过实验,更加了解C语言,也明白了C语言中格式符的严格控制;

4、 实验三中,采用convert函数(借鉴了答案)巧妙地将一个整数转化成了对应的字符,应该积累这种经验。

实验感想

1自己写的程序效率不高,对变量没有很好的做到全局统筹,关于C的注释和书写格式控制不是很好,这需要以后多多从他人的程序中慢慢领悟;

2以前除了做课后习题外,几乎没有其他行动,这一点我想在以后的学习中要注意改正,学习C语言首要的就是上机操作,一些书上的不懂的地方也可以通过上机操作来解决;

3、使用各个变量的时候记得一定要有预处理命令;

4每次做作业的时候感觉程序没有什么问题,但是由于C语言逻辑的紧密性,仅依靠理论是没有用的。当把自己写的程序拿到电脑上进行调试的时候,总是漏洞百出,经过这么几次的实验课,错误已经渐渐减少了,所以以后学习C语言只有在不断地实践中才能发现更多的问题,也会掌握的更加牢固;

5以后要注意分析中提到的典型问题,多积累经验。

更多相关推荐:
C语言:函数的应用实验报告

课程名称结构化程序设计与C语言开课实验室年月日一实验目的用C语言编写和调试函数的程序从而对函数的定义调用全局变量的灵活运用有比较深入的了解二内容及结果1程序一素数函数1程序要求写一个判断是否是素数的函数在主函数...

C语言函数实验报告

北京联合大学信息学院程序设计基础课程调研研究报告题目函数姓名学号专业计算机科学与技术编制时间20xx63版本指导教师北京联合大学信息学院编制函数实验程序设计报告20xx年6月3日班号姓名学号第一章实验情况概述本...

C语言实验报告(四)

C语言实验报告四一实验目的1掌握C语言中函数和模块2掌握怎样定义函数如何调用或使用函数如何声明函数3掌握函数的参数了解在函数调用时参数是如何传递的4在使用函数的过程中怎样确定函数的参数5如何使用局部变量和全局变...

C语言程序设计实验报告(函数)

C语言程序设计实验报告实验名称函数1实验目的1掌握函数的定义方法调用方法参数说明以及返回值2掌握实参与形参的对应关系以及参数之间的值传递的方式3掌握函数的嵌套调用及递归调用的用的设计方法4在编程过程中加深理解函...

C语言集中上机实验报告

重庆邮电大学移通学院C语言集中上机实验报告学生学号班级专业重庆邮电大学移通学院20xx年5月重庆邮电大学移通学院目录第一章循环311实验目的312实验要求313实验基本内容3131题目一3132题目二5第二章数...

C语言实验报告-函数

华北水院高级语言程序设计C语言实验报告五20xx20xx学年第二学期20xx级专业学号姓名一实验题目函数二实验目的略三实验内容1程序验证略2程序设计1编程实现求两个正整数的最大公约数要求计算最大公约数用函数fu...

C语言函数实验报告模版

第六次实验函数一实验要求1掌握函数定义和调用的方法2掌握函数嵌套调用和递归调用的方法3理解实参与形参的对应关系以及值传递调用函数的方法4理解变量作用域和存在期的概念掌握全局变量和局部变量动态变量和静态变量的定义...

C语言实验报告函数

高级语言程序设计实验报告实验序号6实验项目名称函数2includeltstdiohgtincludeltmathhgtdefinee1e5doublefunadoublenfloati1doublex10s0w...

C语言实验报告《函数》

C语言实验报告函数学号姓名班级日期指导教师成绩实验四函数一实验目的1掌握函数定义调用和声明的方法2掌握实参和形参之间的传递方式3函数的嵌套调用二实验内容1写一个函数将两个字符串连接习题862编写一个函数由实参传...

C语言程序设计实验报告-函数

C语言程序设计实验报告1实验目的掌握C函数的定义方法函数的调用方法参数说明以及返回值掌握实参与形参的对应关系以及参数之间的值传递的方式掌握函数的嵌套调用及递归调用的设计方法掌握全局变量和局部变量动态变量与静态变...

C语言实验报告之利用函数进行程序设计

一实验的目的1掌握定义函数的方法2掌握函数的实参与形参的对应关系以及值传递的方式3掌握函数的嵌套调用及其递过调用的方法4掌握全局变量与局部变量的使用二要求及内容本实验主要完成函数的的应用训练总共要求完成四个问题...

C语言实验四实验报告——函数

一实验项目名称函数二实验目的1掌握C函数的定义方法函数的调用方法参数说明以及返回值掌握实参与形参的对应关系以及参数之间的值传递的方式掌握函数的嵌套调用及递归调用的设计方法2掌握全局变量和局部变量动态变量与静态变...

c语言函数实验报告(47篇)