- 8
- 0
- 约3.72千字
- 约 9页
- 2021-04-03 发布于广东
- 举报
Newly compiled on November 23, 2020
Newly compiled on November 23, 2020
西安交大C 程序设计 作业
西安交通大学实验报告
课程__计算机程序设计__实验名称_____函数______第 1 页 共 18 页
系 别____ _______ 实 验 日 期 2014 年 3月 28日
专业班级__ __组别_____________ 实 验 报 告 日 期 2014 年 3 月 29日
姓 名___ _______学号_ _ 报 告 退 发 ( 订正 、 重做 )
同 组 人_________________________________ 教 师 审 批 签 字
一、实验目的
掌握函数的概念,使用函数的优越性,定义函数的方法以及调用函数的方法。
二、实验内容
(一)第一题:编写字符串反转函数mystrrev(),该函数的功能是将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。
1.源程序代码:
#includeiostream
#includecstring
using namespace std;
void mystrrev(char string[]);验结果:由于函数中有“for(int i=0;im/2;i++)”的语句,为避免该循环条件不准确,对奇数和偶数个的字符均进行了检测,并有对含空格和符号的字符串的检测:
(1)奇数:
(2)偶数:
(3)含空格字符串:
3.问题分析:
(1)起初没有用“.get”,不够全面;
(2)如果一直执行到i=m的话,就等于反转两次又回到了原来的字符串顺序,因而要考虑只执行一半,而由于字符串长度有奇偶的问题,所以容易错误;
(3)第一次编写时,没有写string[m]=\0;这使得输出结果混乱。
(二)第二题:编写一组求数组中最大元素和最小元素的函数。其函数原型为:
int imax(int array[],int count);
int imin(int array[],int count);
1.源程序代码:
#includeiostream
using namespace std;
int imax(int array[],int count);验结果:
3.问题分析:
(1)起初误将:
cout最大值为:imax(num,n)endl;
cout最小值为:imin(num,n)endl;
写成imin、imax,不能执行。
(2)误将:
if(array[i]m)
if(array[i]l)
写为:
if(array[i] array[i-1])
if(array[i] array[i-1])
导致输出不正确。
(3)虽然理论上应该加上判断输入的数字是否为整数的程序,但考虑到这个不是重点,只是徒劳的增加麻烦,因而就没有加。
(三)第三题:编写函数isprime(int a)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。
1.源程序代码:
#includeiostream
using namespace std;
int isprime(int a);
int main()
{
cout请输入要进行判断的数字的个数:;
int n;
cinn;
cout请输入要判断的各个数:\n;
int a[50];
int i;
for(i=0;in;i++)
{
cina[i];
}
cout其中的素数为:\n;
for(i=0;in;i++)
{
if(isprime(a[i])!=0)验结果:
3.问题分析:
(1)对于“if(isprime(a[i])!=0)”,起初写为“if(isprime(a[i])=1)”,没有认识到只有零和非零的区别,导致程序始终判断得到错误结果;
(2)对“int m=a-1,i”:原来写作“int m=a,i;”,这样的时候会将1也作为素数输出。为了避免如此,故将m的初始值设为a-1,这样的话,输入1时m=0,正好能够使1不经过循环而判断为合数,同时,输入2及以上的数字时,由于初始值m0,也不会被影响。
(四)第四题:(必做题)(注意必须用自定义函数,并和系统库函数asin()进行比较测试检验)
1.源程序代码:
验结果:
(1)特别检测了输入的自变量不符合范围要求的情况的鉴别:
(2)正常运行:
3.问题分析:
(1)题目中用到了三个自定义函数,分别的作用是:乘方、阶乘和求反正弦函数的自定义函数主体,前两个函数的出现主要是为了简化运算过程。由于不知道标准的
原创力文档

文档评论(0)