c语言程序设计第2部分三写程序.docx
《c语言程序设计第2部分三写程序.docx》由会员分享,可在线阅读,更多相关《c语言程序设计第2部分三写程序.docx(74页珍藏版)》请在冰点文库上搜索。
![c语言程序设计第2部分三写程序.docx](https://file1.bingdoc.com/fileroot1/2023-6/2/92ca3773-f44c-4929-89d5-23a196d16e7e/92ca3773-f44c-4929-89d5-23a196d16e7e1.gif)
c语言程序设计第2部分三写程序
三、编程题
考试做题要求:
1、按题目要求编写部分代码,不要改动已经有的代码。
2、在运行时如果遇到死循环,按Ctrl+Break键结束运行。
3、题目做完后必须要有运行结果,没有运行结果没有分。
1:
请编写函数fun,其功能是:
计算并输出下列多项式的值:
例如,在主函数中从键盘给n输入8后,输出为:
s=0.662872。
注意:
要求n的值大于1但不大于100。
部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
doublefun(intn)
{
}
main()
{intn;doubles;
printf("\nInputn:
");scanf("%d",&n);
s=fun(n);
printf("\ns=%f\n",s);
NONO();
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
FILE*rf,*wf;intn,i;doubles;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(rf,"%d",&n);
s=fun(n);
fprintf(wf,"%lf\n",s);
}
fclose(rf);fclose(wf);
}
2:
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:
函数返回指定学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
STRECfun(STREC*a,char*b)
{
}
main()
{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};
STRECh;
charm[10];
inti;FILE*out;
printf("Theoriginaldata:
\n");
for(i=0;i{if(i%4==0)printf("\n");
printf("%s%3d",s[i].num,s[i].s);
}
printf("\n\nEnterthenumber:
");gets(m);
h=fun(s,m);
printf("Thedata:
");
printf("\n%s%4d\n",h.num,h.s);
printf("\n");
out=fopen("c:
\\test\\out.dat","w");
h=fun(s,"GA013");
fprintf(out,"%s%4d\n",h.num,h.s);
fclose(out);
}
3:
已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。
请编写函数fun,函数的功能是:
找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。
已给出函数的首部,请完成该函数。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
#defineN10
typedefstructss
{charnum[10];ints;}STU;
fun(STUa[],STU*s)
{
}
main()
{STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m;
inti;
printf("*****Theoriginaldata*****\n");
for(i=0;ifun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:
%s,%d\n",m.num,m.s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*rf,*wf;
STUa[N],m;
inti;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++)fscanf(rf,"%s%d",a[i].num,&a[i].s);
fun(a,&m);
fprintf(wf,"Thetop:
%s,%d\n",m.num,m.s);
fclose(rf);
fclose(wf);
}
4:
请编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,若输入:
17,则应输出:
46891012141516。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(intm,int*k,intxx[])
{
}
main()
{
intm,n,zz[100];
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;nprintf("\n%4d",zz[n]);
NONO();
}
NONO()
{
/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
intm,n,zz[100];
FILE*rf,*wf;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
fscanf(rf,"%d",&n);
fun(n,&m,zz);
fprintf(wf,"%d\n%d\n",m,n);
for(n=0;nfprintf(wf,"%d\n",zz[n]);
fclose(rf);
fclose(wf);
}
5:
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
例如:
w值为5923,则函数返回923;w值为923则函数返回23。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
unsignedfun(unsignedw)
{
}
main()
{unsignedx;
printf("Enteraunsignedintegernumber:
");scanf("%u",&x);
printf("Theoriginaldatais:
%u\n",x);
if(x<10)printf("Dataerror!
");
elseprintf("Theresult:
%u\n",fun(x));
NONO();
}
NONO()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,
输出数据,关闭文件。
*/
unsignedx;
inti;
FILE*rf,*wf;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<20;i++){
fscanf(rf,"%u",&x);
fprintf(wf,"%u\n",fun(x));
}
fclose(rf);
fclose(wf);
}
6:
请编写一个函数fun,它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符串长度相同,则返回第一个字符串。
例如,输入beijingshanghai(为回车键),
函数将返回shanghai。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
char*fun(char*s,char*t)
{
}
main()
{chara[20],b[20];
printf("Input1thstring:
");
gets(a);
printf("Input2thstring:
");
gets(b);
printf("%s\n",fun(a,b));
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*fp,*wf;
inti;
chara[20],b[20];
fp=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%s%s",a,b);
fprintf(wf,"%s\n",fun(a,b));
}
fclose(fp);
fclose(wf);
}
7:
请编写函数fun,函数的功能是:
实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
例如,输入下面的矩阵:
其转置矩阵为:
123147
456258
789369
程序输出:
2610
61014
101418
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(inta[3][3],intb[3][3])
{
}
main()/*主程序*/
{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];
inti,j;
fun(a,t);
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
NONO();
}
NONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
inti,j,k,a[3][3],t[3][3];
FILE*rf,*wf;
rf=fopen("c:
\\test\\in.dat","r");
wf=fopen("c:
\\test\\out.dat","w");
for(k=0;k<5;k++){
for(i=0;i<3;i++)
fscanf(rf,"%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
fun(a,t);
for(i=0;i<3;i++){
for(j=0;j<3;j++)fprintf(wf,"%7d",t[i][j]);
fprintf(wf,"\n");
}
}
fclose(rf);
fclose(wf);
}
8:
假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了尾部的*号之外,将字符串中其它*号全部删除。
形参p已指向字符串中最后的一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
ABCDEFG*******。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a,char*p)
{
}
main()
{chars[81],*t;
printf("Enterastring:
\n");gets(s);
t=s;
while(*t)t++;
t--;
while(*t=='*')t--;
fun(s,t);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81],*t;
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
t=s;
while(*t)t++;
t--;
while(*t=='*')t--;
fun(s,t);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
9:
假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
例如,字符串中的内容为:
****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:
****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:
****A*BC*DEF*G*******。
n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a,intn)
{
}
main()
{chars[81];intn;
printf("Enterastring:
\n");gets(s);
printf("Entern:
");scanf("%d",&n);
fun(s,n);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti,n;chars[81];
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fscanf(in,"%d",&n);
fun(s,n);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
10:
假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
删除字符串中所有的*号。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
ABCDEFG。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(char*a)
{
}
main()
{chars[81];
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
FILE*in,*out;
inti;chars[81];
in=fopen("c:
\\test\\in.dat","r");
out=fopen("c:
\\test\\out.dat","w");
for(i=0;i<10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
11:
请编写函数fun,它的功能是:
求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:
部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
voidfun(int*a,int*n)
{
}
main()
{intaa[1000],n,k;
fun(aa,&n);
for(k=0;kif((k+1)%10==0)printf("\n");
elseprintf("%5d",aa[k]);
NONO();
}
NONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/
intaa[1000],n,k;
FILE*fp;
fp=fopen("c:
\\test\\out.dat","w");
fun(aa,&n);
for(k=0;kif((k+1)%10==0)fprintf(fp,"\n");
elsefprintf(fp,"%5d",aa[k]);
fclose(fp);
}
12:
函数fun的功能是:
将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为:
"ABCDEFG12345",其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其它依此类推。
最后t所指的数组中的内容应是:
"ACEG135"。
注意:
部分源程序存在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
voidfun(char*s,chart[])
{
}
main()
{
chars[100],t[100];
printf("\nPleaseenterstringS:
");scanf("%s",s);
fun(s,t);
printf("\nTheresultis:
%s\n",t);
NONO();
}
NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。
*/
chars[100],t[100];
FILE*rf,*wf;
inti;
rf=fopen("c:
\\test\\in.