1、,&n);fun(&printf(nThe result is: %ldn,n);解题思路:第一处:t是通过取模的方式来得到*n的个位数字,所以应填:10。第二处:判断是否是奇数,所以应填:0。第三处:最后通形参n来返回新数x,所以应填:x。给定程序MODI1.C中函数 fun 的功能是:计算n!。例如,给n输入5,则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。不要改动main函数,不得增行或删行,也不得更改程序的结构!double fun ( int n ) double result = 1.0 ;if n = = 0 return 1.0 ;while( n 1
2、 & n long fun ( char *p) int i, len, t; /* len为串长,t为正负标识 */ long x=0;len=strlen(p);if(p0=-) t=-1; len-; p+;else t=1;/* 以下完成数字字符串转换为一个数字 */ return x*t;main() /* 主函数 */ char s6;long n;Enter a string:ngets(s);n = fun(s);%ldnNONO ( );NONO ( ) /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ;int i ;ch
3、ar s20 ;long n ;fp = fopen(c:testin.dat,rwf = fopen(testout.datwfor(i = 0 ; i 0 & si9sj=si;sj=0 char item80;nEnter a string :gets(item);nnThe string is : %s,item);fun(item);nnThe string of changing is :,item );第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中是使用变量j 来控制新字符串的位置,所以应改为:sj+=si;第二处: 置新字符串的结束符,所以应改为:sj=.
4、 请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的 顺序依次放到一个字符串中。例如, 二维数组中的数据为:W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSH。部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入 你编写的若干语句。#define M 3 #define N 4 void fun(char sN, char *b) int i,j,n=0;for(i=0; N;i+) /* 请填写相应语句完成其功能 */ bn= char a100,wMN=W,SH;i
5、nt i,j;The matrix: iM; for(j=0;jN; j+)printf(%3c,wij);fun(w,a);The A string:puts(a);NONO();本题是把二维数组中的字符数据按列存放到一个字符串中。1. 计算存放到一维数组中的位置。2. 取出二维数组中的字符存放到一维数组(已计算出的位置)中。for(j = 0 ; j M ; j+) bn = sji ;n = i * M + j + 1;第03套:程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所 指文件中
6、最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学 生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。#define N 5 typedef struct student long sno;char name10;float score3; STU;void fun(char *filename, STU n) FILE *fp;fp = fopen(_1_, rb+fseek(_2_, -1L*sizeof(STU), SEEK_END);fwrite(&n, sizeof(STU), 1, _3_); STU tN= 10001,MaCha
7、o, 91, 92, 77, 10002,CaoKai, 75, 60, 88, 10003,LiSi, 85, 70, 78, 10004,FangFang, 90, 82, 87, 10005,ZhangSan, 95, 80, 88;STU n=10006,ZhaoSi, 55, 70, 68, ssN; FILE *fp;student.datwbfwrite(t, sizeof(STU), N, fp);rbfread(ss, sizeof(STU), N, fp);nThe original data :for (j=0; jtypedef struct aa int data;s
8、truct aa *next; NODE;NODE *Creatlink(int n, int m) NODE *h=NULL, *p, *s;int i;p=(NODE )malloc(sizeof(NODE);h=p;p-next=NULL;for(i=1;=n; s=(NODE *)malloc(sizeof(NODE);s-data=rand()%m; s-next=p-next;next=s; p=p-return p;outlink(NODE *h) NODE *p;p=h-nnTHE LIST :nn HEAD while(p) -%d ,p-data);p=p- NODE *h
9、ead;head=Creatlink(8,22);outlink(head); 指向刚分配的结构指针,所以应改为:p=(NODE *)malloc(sizeof(NODE); 在动态分配内存的下一行语句是,使用临时结构指针变量h保存p指针的初始位置,最后返回不能使用p,是因为p的位置已经发生了变化,所以应改为返回h。统计一行字符串中单词的个数,作为函数值返 回。一行字符串在主函数中输入, 规定所有单词由小写字母组成,单词之间由若干 个空格隔开, 一行的开始没有空格。请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。#define N 80 int f
10、un( char *s) char lineN; int num=0;Enter a string : gets(line);num=fun( line );The number of word is : %dnn,num);本题是统计字符串中的单词数。1. 利用while循环语句和指针变量,当字符为空格时,则单词数k加1。2. 循环结束返回k。int k = 1 ;while(*s) if(*s = ) k+ ;s+ ;return k ;第04套:函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filenam
11、e所指的文件中,覆盖原来的文件内容。void fun(char *filename) int i, j;STU sN, t;fp = fopen(filename, _1_);fread(s, sizeof(STU), N, fp);N-1;for (j=i+1;if (si.sno _2_ sj.sno) t = si; si = sj; sj = t;fp = fopen(filename, _3_(s, sizeof(STU), N, fp); /* 二进制输出 */ STU tN= 10005, 95, 80, 88, 10003, 85, 70, 78, 10002, 75, 60, 88, 10004,10001, 91, 92, 77, ssN;fwrite(t, sizeof(STU), 5, fp);nnThe original data :,tj.sno, tj.name);, tj.scorei);nnThe data after sorting :fread(ss, sizeof(STU), 5, fp);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1