好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[2017年整理]实验7 函数——参考程序.doc

11页
  • 卖家[上传人]:姜**
  • 文档编号:856056
  • 上传时间:2017-05-19
  • 文档格式:DOC
  • 文档大小:72KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验七 函数——参考程序一、程序调试方法实验1.找出并改正以下源程序中错误,得出正确的运行结果源程序如下:#include //函数声明 int add(int a, int b);void main(){int a,b;scanf("%d%d",&a,&b);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[], int n) //尾部加上分号void main(){float data[N];int i;for(i=0;i result)result = a[i];}return result;}3.找出并改正以下源程序中错误,得出正确的运行结果,其中 converse 函数的功能是逆序输出 n 个字符。

      解题思路:已知字符串的长度,逆序输出字符串如果只有 1 个字符,直接输出该字符后结束否则:输出后面的所有字符之后,再输出该字符源程序如下:#include void main() {int i=5; void converse(int n); printf("Input 5 characters:"); converse(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(ch >= 'a' && ch int reverse(int n){int rev=0,num;do{num=n %10;rev = rev*10 + num;n=n/10;}while(n);return rev;}void main(void){int num,revnum;printf("请输入一个整数: \n");scanf("%d",&num);revnum = reverse(num);printf("逆序后整数为: %d\n",revnum); }3、编写函数完成如下功能:将长整型数中数字为偶数的数依次取出,构成一个新数返回,例如,当s 中的数为 :87653142 时,则返回的数为:8642。

      提示:依次取出长整型数的每一位数字,如果是偶数,则放入新数中在 main 函数中输入一个长整型数,调用该函数得到新的数,并输出结果include "stdio.h"long func(long s);void main(){long a;printf("请输入一个整数:");scanf("%ld",&a);printf("%ld\n",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 * 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;ia[j]){temp = a[i];a[i] = a[j]; a[j] = temp;}}void main(void){float a[N];int i;printf("请输入%d 个数值: \n",N);for(i=0;ivoid max_value(int array[][4], int index[]) //没有返回值的函数,结果通过与 index 对应的数组带回{int i,j,max;max=array[0][0];for(i=0; i= 'A' && s[i] = 'a' && s[i] #include int substring(char s[], char sub[]) //查找 sub 在 s 中第一次出现的位置,若找到返回对应下标,否则返回-1{int end, i, j;end = strlen(s) - strlen(sub); /* 计算结束位置 */if ( end > 0 ) /* 子串 sub 小于字符串 s */{for ( i = 0; i ");gets(substr); /* 读取子字符串*/result = substring(string,substr); /* 定位子字符串*/if ( result > 0 )printf("子字符串 %s 位置在 %d\n",substr, result);else printf("没有找到子字符串 %s\n", substring);}8、请编一个函数 fun,其中 n 所指存储单元中存放了数组中元素的个数。

      函数的功能是:删除所有值为 y 的元素已在主函数中给数组元素赋值,y 的值由主函数通过键盘读入注意:部分源程序已给出,请勿改动主函数和其他函数中的内容,仅在函数 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(pos>len1) /*插入位置是字符串的尾部*/pos=len1;else if(pos=pos; j--, i--) /*将插入点后字符移至串 1 尾部*/s1[j]=s1[i];s1[k]='\0';for(i=pos, j=0; s2[j]; i++, j++) /*将字符串 2 插入到字符串 1 中*/s1[i]=s2[j];}void main(void){char s1[80], s2[20]; //假定输入时串 1 不超 60 字符,串 2 不超 20 字符int pos;printf("请输入字符串 1: \n");gets(s1);printf("请输入字符串 2: \n");gets(s2);printf("请输入将字符串 2 插入字符串 1 的位置: \n");scanf("%d", &pos);insert(s1, s2, pos-1);printf("插入字符串 2 后的字符串 1 为: %s\n", s1);}8、/*输出字符串中最长的单词 */#include #includevoid longword(char s1[], char s2[]){char word[100]={0}; /*初始化为空字符*/ int i=0,j=0,k=0,m=0,n=0; for(i=0; s1[i]; i++) { if(s1[i]!=' ') /*单词之间用空格隔开*/{ word[j]=s1[i]; /* word 记录当前考查的单词*/j++; /* j 记录当前考查单词的长度*/} if(s1[i]==' ') /*新单词*/ {if(j>n) /* word 记录的单词长度超过最长单词 */ { word[j]='\0';strcpy(s2,word); /*最长单词赋给 s2*/n=j; /*n 记录最长单词的长度 */} strcpy(word,""); /*middle 字符数组重新初始化为空串 */j=0; /* j 记录新单词的长度*/ } }if(j>n) /*与最后一个单词比较*/ {word[j]='\0';strcpy(s2,word);}} void main(void) { char setence[100],max[100]; /*max 记录最长单词*/ printf("请输入一串单词\n");gets(setence); longword(setence, max);printf("最长单词为:");puts(max);}9、/*逆序打印字符*/#include "stdio.h"void reverseprint(){char ch;ch = getchar();if(ch!='\n')reverseprint();putchar(ch);}void main(void){reverseprint();putchar('\n');}。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.