第六次实验 函数
一、实验要求
1. 掌握函数定义和调用的方法
2. 掌握函数嵌套调用和递归调用的方法
3. 理解实参与形参的对应关系以及“值传递”调用函数的方法
4. 理解变量作用域和存在期的概念,掌握全局变量和局部变量、动态变量和静态变量的定义、说明和使用方法
二、实验内容(要求粘贴正确程序及测试结果)
1、完善所给的程序,通过定义一个max3函数实现求三个数中的最大值的功能。
#include <stdio.h>
int max3(int a, int b,int c); /*函数声明*/
void main ()
{
int a, b, c;
int max;
printf("Please input three numbers:");
scanf("%d%d%d", &a, &b, &c);
max = max3(a,b,c); /*调用max3函数,其中a,b,c作为其参数,max用于保存max3函数的返回值*/
printf("the maximum number of %d, %d, %d is %d\n", a, b, c, max);
}
/*可在此编写max3函数,实现求三个数中的最大值的功能*/
max3(int a ,int b,int c)
{
int m;
m=a>b?a:b;
m=m>c?m:c;
return m;
}
2、在循环结构程序设计实验的第6题求完数中,要求编写程序判断1~1000之内的哪些数是完数。现要求改写该程序,新的程序中需要定义一个int wanshu(int num)函数,该函数功能是判断函数参数num是否为完数,如果是则函数返回值为1,否则为0。完成wanshu函数定义后,在新的程序中调用wanshu函数,使得新的改写的程序能判断1~1000之内的哪些数是完数。
#include <stdio.h>
int wanshu(int num); /*函数声明*/
void main ()
{
int i;
for(i=1;i<=1000;i++)
{
if(wanshu(i)) /*调用wanshu函数,其中i作为其参数,若调用后返回值为1则说明是完数,否则不是*/
printf("%d是完数\n", i);
}
}
/*可在此编写wanshu函数,实现一个数n是否是完数*/
int wanshu(int num)
{
int s = 0,i;
for(i=1;i<num;i++)
{
if( num%i == 0) s += i;
}
if(s == num)
return 1;
else
return 0;
}
3、找出1~1000之内的所有素数并输出。要求首先定义一个int prime(int num)函数,该函数用于判断参数num是否为素数,如果是则函数返回值为1,否则为0;并循环调用该函数以判断1~1000之内的素数。
#include<stdio.h>
#include<math.h>
//判断一个整数是否为素数
int prime(int num)
{
int i;
if(num==1 || num==0)return 0;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0)
return 0;
}
return 1;
}
void main()
{
int i;
for(i=1;i<=1000;i++)
{
if(prime(i))
printf("%4d",i);
}
}
例如:若n=10,则A10=0.617977
三、实验小结
一、实验目的和要求
5. 掌握一维数组、二维数组的定义、使用及初始化
6. 字符型数组使用
7. 学习数组作为函数参数的用法
8. 掌握与数组有关的常用排序算法
二、实验内容(要求每题都复制程序并粘贴测试结果)
1、编程实现如下功能:输入以!作为结束的字符串,并统计该字符串中字母、数字、其他字符的个数。
注:一般可以使用gets函数gets(str)将输入字符串保存至str字符数组中,该函数以回车作为输入结束符;在本题中,需要使用!作为输入的结束符,可考虑:#include "stdlib.h"
#include "stdio.h"
int numOfLetter = 0, numOfNumber = 0, numOfElse = 0;//分别表示字母、数字、其他字符的个数
void test()
{
char c;
while(1)
{
scanf("%c", &c);
if(c == '!')
{
break;
}
if(c >='a' && c <='z' || c >= 'A' && c <= 'Z')
{
numOfLetter++;
}
else if(c>='0'&&c<='9' )
{
numOfNumber++;
}
else
{
numOfElse++;
}
}
}
void main()
{
test();
printf("D:%d\n", numOfNumber);
printf("A:%d\n", numOfLetter);
printf("O:%d\n", numOfElse);
}
方法一、参考P39第2题的形式,循环输入字符(直到!)并进行处理。
方法二、使用scanf(“%c”, &str[i])形式将字符串输入到str数组里,并依次判断str[i]是否为!符号,如果是则结束输入,否则继续输入。处理完成,如果想使用puts函数输出字符串str,必须在结束输入时,将str[i]中的’!’替换为’\0’才能使用。因为判断字符串数组结束的标志是’\0’。
2、编写一个程序,实现对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为“computer”和“compare”,则输出为-20。
#include <stdio.h>
void main ( )
{
char str1[100],str2[100];
int i,s;
printf("\n Input string 1:\n");
gets(str1);
printf("\n Input string 2:\n");
gets(str2);
for(i=0;;i++)
{
if(str1[i]==str2[i])
continue;
else
break;
}
s=str1[i]-str2[i];
printf("%d\n",s);
}
3、对于任意输入的字符串,编程求字符“a”首次出现的位置。
例如:输入字符串“Hello,boys and girls.”输出结果为 12
#include <stdio.h>
#include <string.h>
int main()
{
int j;
char s[1000000];
scanf("%s",&s);
for(j =0; j <1000000 ;j++)
if( s[j] == 'a')
{
printf("%d",j+1);
break;
}
else if (s[j] == '\0')
{
printf("NO!");
return 0;
}
return 0;
}
4、设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中按每行3个元素的形式输出。
例如:输入 6 5 4 5 6 7 8 4 3 2
输出 11 9 9
11 13 15
12 7 5
#include"stdio.h"
main()
{
int a[10],b[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
b[i]=a[i-1]+a[i];
for(i=1;i<10;i++)
{
printf("%5d",b[i]);
if(i%3==0)
printf("\n");
}
}
5、(选做题)编程实现如下功能:从键盘输入一个3*3的二维数组,输出此二维数组,并求此二维数组中的最大值,及其位置(位于第几行第几列)
#include <stdio.h>
void main()
{
int a[3][3],i,j,max,r=0,c=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
if(max<a[i][j])
{
max=a[i][j];
r=i;
c=j;
}
} printf("max=%d,\nr=%d,\nc=%d\n",max,r,c);
}
第二篇:C语言综合性实验报告模版
《大学计算机基础》综合性实验
实验报告
题目: 个人简历的制作
姓名:
班级:
学号:
指导教师:
完成时间: 20##年12月8日
实验报告内容书写模版:
一、 实验题目
个人简历的制作
二、 实验目的
培养学生综合运用WORD、EXCEL和POWERPOINT知识的能力。
三、 实验要求
1、以PPT为主线,适当使用超链接。
2、PPT文件中包含6张幻灯片,其中第一张为标题幻灯片,第二张为全部演示文稿的内容提要。
3、第二张幻灯片的主标题为“内容提要”, 在第二张幻灯片中设置超链接,当单击某标题时即切换到对应的幻灯片,对应的四个标题分别为:
基本情况介绍
求学经历及高考成绩
我的大学生活
联系方式
4、PPT文件通过某些文字分别超链接到WORD和EXCEL文件。
5、WORD文件的要求:
通过Internet搜索,将所在省份的地图和基本文字介绍组织在同一个WORD文件中,该WORD文件的标题是“××省简介”,使用系统默认的样式2并居中;页眉是“姓名、班级”并居中;页脚是系统的当前时间并右对齐。
6、EXCEL文件的表头如下:
其中“总计”列和“平均费用”行用函数计算。
并依据此表制作折线图,放在同一个工作表中。
7、幻灯片要有基本一致的外观风格。
8、除第一张幻灯片外,其余幻灯片要有固定位置的徽标或小图形。
9、第一张幻灯片背景要与其他幻灯片有异,且标题文字用艺术字。
10、每张幻灯片要有切换效果。
11、幻灯片中适当运用动画效果。
12、在后四张幻灯片中设置动作按钮,当单击按钮时能够返回到第二张幻灯片“内容提要”中。
13、在第二张幻灯片中设置动作按钮,当单击该按钮时能够结束放映。
四、 实验环境
五、 实验步骤
六、 实验结果
七、 实验体会