《实验7 函数——参考程序》由会员分享,可在线阅读,更多相关《实验7 函数——参考程序(11页珍藏版)》请在金锄头文库上搜索。
1、实验七 函数参考程序一、程序调试方法实验1.找出并改正以下源程序中错误,得出正确的运行结果。源程序如下:#include /函数声明 int add(int a, int b);void main()int a,b;scanf(%d%d,printf(a+b=%d,add(a,b);void add(int a,b) /改为 int add(int a, int b)return a+b;2.找出并改正以下源程序中错误,得出正确的运行结果,其中 max 函数的功能是得到数组中最大元素的值。源程序如下:#include #define N 10; /去掉尾部分号float max(float a
2、, int n) /尾部加上分号void main()float dataN;int i;for(i=0;i result)result = ai;return result;3.找出并改正以下源程序中错误,得出正确的运行结果,其中 converse 函数的功能是逆序输出 n 个字符。解题思路:已知字符串的长度,逆序输出字符串如果只有 1 个字符,直接输出该字符后结束否则:输出后面的所有字符之后,再输出该字符源程序如下:#include void main() int i=5; void converse(int n); printf(Input 5 characters:); convers
3、e(i); printf(n); void converse(n); /改为 void converse(int n) 并去掉分号char next; if(n=1) /改为 if(n= =1) next=getchar(); putchar(next); else next=getchar(); converse(n-1); putchar(next); 四、编写程序1、编写一个函数,其功能是判断形式参数是否为小写字母,若是,返回其对应的大写字母,否则返回原字符。然后在 main 函数中输入一个字符,调用该函数得到其大写字母并输出#include char isLow(char ch) if
4、(ch = a & ch int reverse(int n)int rev=0,num;donum=n %10;rev = rev*10 + num;n=n/10;while(n);return rev;void main(void)int num,revnum;printf(请输入一个整数: n);scanf(%d,revnum = reverse(num);printf(逆序后整数为: %dn,revnum); 3、编写函数完成如下功能:将长整型数中数字为偶数的数依次取出,构成一个新数返回,例如,当s 中的数为 :87653142 时,则返回的数为:8642。提示:依次取出长整型数的每一
5、位数字,如果是偶数,则放入新数中。在 main 函数中输入一个长整型数,调用该函数得到新的数,并输出结果。#include stdio.hlong func(long s);void main()long a;printf(请输入一个整数:);scanf(%ld,printf(%ldn,func(a);long func(long n) long result=0;int num, weight=1 ; / weight 表示数位的权值(即个、十、百, 。 。 。 。 )while ( n != 0 )num = n%10; /得到最低位if (num % 2=0) result= num *
6、 weight + result; /重新组织成新的数 weight=weight * 10;n/=10; /去掉最低位return (result);4、编写一个函数 sort,实现数组元素的升序(或降序)排列。在 main 函数中输入数组元素,调用该函数进行排序,最后输出排序后的结果。#include #define N 10void sort(float a, int n) /无返回值,在原数组上排序并带回int i,j;float temp;for(i=0;iaj)temp = ai;ai = aj; aj = temp;void main(void)float aN;int i;pr
7、intf(请输入%d 个数值: n,N);for(i=0;ivoid max_value(int array4, int index) /没有返回值的函数,结果通过与 index 对应的数组带回int i,j,max;max=array00;for(i=0; i= A & si = a & si #include int substring(char s, char sub) /查找 sub 在 s 中第一次出现的位置,若找到返回对应下标,否则返回-1int end, i, j;end = strlen(s) - strlen(sub); /* 计算结束位置 */if ( end 0 ) /*
8、 子串 sub 小于字符串 s */for ( i = 0; i );gets(substr); /* 读取子字符串*/result = substring(string,substr); /* 定位子字符串*/if ( result 0 )printf(子字符串 %s 位置在 %dn,substr, result);else printf(没有找到子字符串 %sn, substring);8、请编一个函数 fun,其中 n 所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为 y 的元素。已在主函数中给数组元素赋值,y 的值由主函数通过键盘读入。注意:部分源程序已给出,请勿改动主
9、函数和其他函数中的内容,仅在函数 fun 的指定的部位填入你编写的若干语句。源程序如下:#include #define M 20int fun(int bb,int n, int y)int i,j;for(i=0;i#include void insert(char s1, char s2, int pos)int len1, len2, i, j, k;len1=strlen(s1); /*计算字符串 1 的长度*/len2=strlen(s2); /*计算字符串 2 的长度*/if(poslen1) /*插入位置是字符串的尾部*/pos=len1;else if(pos=pos; j-
10、, i-) /*将插入点后字符移至串 1 尾部*/s1j=s1i;s1k=0;for(i=pos, j=0; s2j; i+, j+) /*将字符串 2 插入到字符串 1 中*/s1i=s2j;void main(void)char s180, s220; /假定输入时串 1 不超 60 字符,串 2 不超 20 字符int pos;printf(请输入字符串 1: n);gets(s1);printf(请输入字符串 2: n);gets(s2);printf(请输入将字符串 2 插入字符串 1 的位置: n);scanf(%d, insert(s1, s2, pos-1);printf(插入
11、字符串 2 后的字符串 1 为: %sn, s1);8、/*输出字符串中最长的单词 */#include #includevoid longword(char s1, char s2)char word100=0; /*初始化为空字符*/ int i=0,j=0,k=0,m=0,n=0; for(i=0; s1i; i+) if(s1i!= ) /*单词之间用空格隔开*/ wordj=s1i; /* word 记录当前考查的单词*/j+; /* j 记录当前考查单词的长度*/ if(s1i= ) /*新单词*/ if(jn) /* word 记录的单词长度超过最长单词 */ wordj=0;s
12、trcpy(s2,word); /*最长单词赋给 s2*/n=j; /*n 记录最长单词的长度 */ strcpy(word,); /*middle 字符数组重新初始化为空串 */j=0; /* j 记录新单词的长度*/ if(jn) /*与最后一个单词比较*/ wordj=0;strcpy(s2,word); void main(void) char setence100,max100; /*max 记录最长单词*/ printf(请输入一串单词n);gets(setence); longword(setence, max);printf(最长单词为:);puts(max);9、/*逆序打印字符*/#include stdio.hvoid reverseprint()char ch;ch = getchar();if(ch!=n)reverseprint();putchar(ch);void main(void)reverseprint();putchar(n);