C语言第五章部分上机作业解读.docx
《C语言第五章部分上机作业解读.docx》由会员分享,可在线阅读,更多相关《C语言第五章部分上机作业解读.docx(32页珍藏版)》请在冰豆网上搜索。
![C语言第五章部分上机作业解读.docx](https://file1.bdocx.com/fileroot1/2023-7/23/bcc0e135-696e-46b4-9a20-b3b193cf09a0/bcc0e135-696e-46b4-9a20-b3b193cf09a01.gif)
C语言第五章部分上机作业解读
1/*编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,
该函数返回所求出的素数的个数。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#defineMAX100
intfun(intlim,intaa[MAX])
{
/**********Begin**********/
/**********End**********/
}
intmain()
{
FILE*wf;
intlimit,i,sum;
intaa[MAX];
printf("输入一个整数");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;i{
if(i%10==0&&i!
=0)/*每行输出10个数*/
printf("\n");
printf("%5d",aa[i]);
}
/******************************/
wf=fopen("debug\\2.out","w");
sum=fun(15,aa);
for(i=0;ifprintf(wf,"%d\n",aa[i]);
fclose(wf);
/*****************************/
return0;
}
2/*请编写函数fun,函数的功能是:
求出二维数组周边元素之和,作为函数值返回。
二维数组中的值在主函数中赋予。
例如,若二维数组中的值为
13579
29994
69998
13570
则函数值为61。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#defineM4
#defineN5
intfun(inta[M][N])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,10}};
inti,j,y;
printf("Theoriginaldatais:
\n");
for(i=0;i{for(j=0;jprintf("%6d",aa[i][j]);
printf("\n");
}
y=fun(aa);
printf("\nThesun:
%d\n",y);
printf("\n");
/******************************/
wf=fopen("debug\\out10.dat","w");
fprintf(wf,"%d",y);
fclose(wf);
/*****************************/
}
/*编写一个函数,从传入的num个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#include
voidfun(chara[][81],intnum,charmax[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
charss[10][81],ps[81];
chars[3][81]={"abcd","deg","diegns"},p[81];
inti=0,n;
printf("输入若干个字符串:
");
gets(ss[i]);
puts(ss[i]);
while(!
strcmp(ss[i],"****")==0)/*用4个星号作为结束输入的标志*/
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n=i;
fun(ss,n,ps);
printf("\nmax=%s\n",ps);
/******************************/
wf=fopen("debug\\out15.dat","w");
fun(s,3,p);
fprintf(wf,"%s",p);
fclose(wf);
/*****************************/
}
/*请编写一个函数fun,它的功能是:
求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
711142122283335424449
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
#defineM100
intfun(intm,inta[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intaa[M],n,k;
n=fun(50,aa);
for(k=0;kif((k+1)%20==0)/*每行输出20个数*/
{printf("%4d",aa[k]);
printf("\n");
}
else
printf("%4d",aa[k]);
printf("\n");
/******************************/
wf=fopen("debug\\out4.dat","w");
for(k=0;kfprintf(wf,"%d\n",aa[k]);
fclose(wf);
/*****************************/
}
/*请编写一个函数fun,它的功能是:
将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转为整数的函数)。
例如,若输入字符串"-1234",则函数把它转换为整数值-1234。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
longfun(charp[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
chars[6];
longn;
printf("Enterastring:
\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
/******************************/
wf=fopen("debug\\out13.dat","w");
fprintf(wf,"%ld",fun("-1234"));
fclose(wf);
/*****************************/
}
/*请编写一个函数voidfun(charss[]),其功能是:
将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入abc4EFg,则应输出aBc4EFg。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(charss[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
chartt[100];
FILE*out,*in;
printf("Pleaseenterancharacterstringwithin50characters:
\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n%s",tt);
fun(tt);
printf("\nbecomes\n%s",tt);
/******************************/
in=fopen("in14.dat","r");
out=fopen("debug\\out14.dat","w");
fgets(tt,16,in);
strcat(tt,"Afterchangingthestring");
fun(tt);
fprintf(out,"%s",tt);
fclose(in);
fclose(out);
/******************************/
}
/*编写一个函数fun,它的功能是:
实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString
SecondString
则程序输出:
FirstStringSecondString
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(charp1[],charp2[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf,*in;
chars1[80],s2[40];
charp1[80]="FirstString",p2[40]="SecondString";
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
/******************************/
in=fopen("in16.dat","r");
wf=fopen("debug\\out16.dat","w");
fscanf(in,"%s%s",p1,p2);
fun(p1,p2);
fprintf(wf,"%s",p1);
fclose(in);
fclose(wf);
/*****************************/
}
/*请编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
例如,输入17,则应输出46891012141516。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
intfun(intm,intxx[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
intm,n,zz[100];
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
m=fun(n,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;nprintf("\n%4d",zz[n]);
/******************************/
wf=fopen("debug\\out7.dat","w");
m=fun(30,zz);
for(n=0;nfprintf(wf,"%d\n",zz[n]);
fclose(wf);
/*****************************/
}
/*请编写一个函数voidfun(chartt[],intpp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,
并依次放在pp所指数组中。
例如,当输入字符串abcdefghabcdeabc后,
程序的输出结果应该是:
333221110000000000000000000
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
*/
#include
#include
voidfun(chartt[],intpp[])
{
/***************Begin************/
/***************End************/
}
voidmain()
{
FILE*wf;
charaa[1000];
intbb[26],k;
printf("\nPleaseenteracharstring:
");
scanf("%s",aa);
fun(aa,bb);
for(k=0;k<26;k++)
printf("%d\n",bb[k]);
/******************************/
wf=fopen("debug\\out02.dat","w");
fun("abcdefgabcdeabc",bb);
for(k=0;k<26;k++)
fprintf(wf,"%d\n",bb[k]);
fclose(wf);
/*****************************/
}
程序填空
/*请补充函数fun,该函数的功能是:
求一维数组x[N]的平均值,并对所得结果进行四舍五入(保留两位小数)。
例如,当x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0},结果为:
avg=15.030000。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
*/
#include
#include
doublefun(doublex[10])
{
inti;
longt;
doubleavg=0.0;
doublesum=0.0;
for(i=0;i<10;i++)
/**********FILL**********/
[1];
avg=sum/10;
/**********FILL**********/
avg=[2];
/**********FILL**********/
t=[3];
avg=(double)t/100;
returnavg;
}
voidmain()
{
doubleavg,x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,10.0,16.0};
inti;
printf("\nTheoriginaldatais:
\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
/*请补充函数fun,该函数的功能是:
整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。
例如当x=20时,依次输出:
201042。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
*/
#include
voidfun(intk,intbb[])
{
inti;
intj=0;
/**********FILL**********/
for([1];i<=k;i++)
{
/**********FILL**********/
if([2])
bb[j++]=i;
}
printf("\n\n");
/**********FILL**********/
for(i=[3];i>=0;i--)
printf("%d",bb[i]);
}
intmain()
{
intk=1;
intbb[100];
printf("\nPleaseinputX=");
scanf("%d",&k);
fun(k,bb);
return0;
}
/*请补充函数fun,该函数的功能是:
整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。
例如当x=20时,依次输出:
201042。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
*/
#include
#include
voidfun(intk,intbb[])
{
inti;
intj=0;
/**********FILL**********/
for([1];i<=k;i++)
{
/**********FILL**********/
if([2])
bb[j++]=i;
}
printf("\n\n");
/**********FILL**********/
for(i=[3];i>=0;i--)
printf("%d",bb[i]);
}
voidmain()
{
intk=1;
intbb[100];
printf("\nPleaseinputX=");
scanf("%d",&k);
fun(k,bb);
}
/*请补充main函数,该函数的功能是:
从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。
结果仍然保存在原串中。
例如,输入"abcdef",指定字符为"e",则输出"abcd"。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
*/
#include
#include
#defineN80
intmain()
{
inti=0;
charstr[N];
charch;
printf("\nInputastring:
\n");
gets(str);
printf("\nInputacharator;\n");
scanf("%c",&ch);
while(str[i]!
='\0')
{
if(str[i]==ch)
/**********FILL**********/
/**********FILL**********/
;
}
/**********FILL**********/
str[i]=;
printf("\n***displaystring***\n");
puts(str);
return0;
}
/*请补充函数fun,该函数的功能是:
把一个整数转换成字符串,并倒序保存在字符数组str中。
例如,当n=13572468时,str="86427531"。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
试题程序:
*/
#include
#include
#defineN80
charstr[N];
voidfun(longintn)
{
inti=0;
/**********FILL**********/
while([1])
{
/**********FILL**********/
str[i]=[2];
n/=10;
i++;
}
/**********FILL**********/
[3];
}
voidmain()
{
longintn=13572468;
printf("***theorigialdata***\n");
printf("n=%ld",n);
fun(n);
printf("\n%s",str);
}
/*请补充main