程序题.docx
《程序题.docx》由会员分享,可在线阅读,更多相关《程序题.docx(42页珍藏版)》请在冰豆网上搜索。
![程序题.docx](https://file1.bdocx.com/fileroot1/2023-6/15/17e5206d-5b52-4dc4-bc7e-fa09763e9546/17e5206d-5b52-4dc4-bc7e-fa09763e95461.gif)
程序题
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
输入n个数,并求出小于平均值的数的个数。
------------------------------------------------*/
#include"stdio.h"
intaverage_num(inta[],intn)
{
/*********Begin**********/
/**********End**********/
}
main()
{
intn,a[100],i,num;
voidTestFunc();
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
num=average_num(a,n);
printf("thenumis:
%d\n",num);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intn;
inti[10];
into;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%d",&i[n]);
}
o=average_num(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
}
【参考代码】
inti,sum=0,k=0;
doubleaverage;
for(i=0;isum=sum+a[i];
average=sum*1.0/n;
for(i=0;iif(average>a[i])k++;
return(k);
===============
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
从字符串中删除指定的字符。
同一字母的大、小写
按不同字符处理。
例如:
若程序执行时输入字符串为:
turbocandborlandc++
从键盘上输入字符:
n,则输出后变为:
turbocadbo
rladc++,如果输入的字符在字符串中不存在,则字
符串照原样输出。
------------------------------------------------*/
#include"stdio.h"
voidfun(chars[],charc)
{
/*********Begin**********/
/**********End**********/
}
voidTestFunc()
{
FILE*IN,*OUT;
chari[200];
/*charo[200];*/
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
fscanf(IN,"%s",i);
fun(i,'n');
fprintf(OUT,"%s",i);
fclose(IN);
fclose(OUT);
}
main()
{
staticcharstr[]="turbocandborlandc++";
charch;
printf("原始字符串:
%s\n",str);
printf("输入一个字符:
");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);
TestFunc();
}
【参考代码】
char*q=s;
for(;*q;q++)
if(*q!
=c)*(s++)=*q;
*s=0;
===============
/*--------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
例如:
输入ab12c3d,则输出123。
注意:
不得增行或删行,也不得更改程序的结构!
------------------------------------------------------*/
#include"stdio.h"
/**********ERROR**********/
voidfun(chars)
{
inti,j;
for(i=0,j=0;s[i]!
='\0';i++)
if(s[i]>='0'&&s[i]<='9')
/**********ERROR**********/
s[j]=s[i];
/**********ERROR**********/
s[j]="\0";
}
main()
{
charitem[80];
printf("\nEnterastring:
");
gets(item);
printf("\n\nThestringis:
\"%s\"\n",item);
fun(item);
printf("\n\nThestringofchangingis:
\"%s\"\n",item);
}
【参考答案】
voidfun(char*s)
voidfun(chars[])
voidfun(chars[80])
【参考答案】
s[j++]=s[i];
{s[j]=s[i];j++;}
【参考答案】
s[j]='\0';
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
读入一个整数m(5≤m≤20),函数rnd获得m个随机整数,
函数sortpb将这m个随机整数从小到大排序。
例如:
若输入整数7,则应输出:
3101728323647。
------------------------------------------------------*/
#include"conio.h"
#include"stdio.h"
sortpb(intn,inta[])
{
/**********ERROR**********/
inti,j,p;
for(j=0;j{
p=j;
for(i=j+1;i/**********ERROR**********/
if(a[p]>a[j])p=i;
/**********ERROR**********/
if(p==j)
{
t=a[j];
a[j]=a[p];
a[p]=t;
}
}
}
doublernd()
{
statict=29,c=217,m=1024,r=0;
r=(r*t+c)%m;return((double)r/m);
}
getarr(intn,int*x)
{
inti;
for(i=1;i<=n;i++,x++)*x=(int)(50*rnd());
}
putarr(intn,int*z)
{
inti;
for(i=1;i<=n;i++,z++)
{
printf("%4d",*z);
if(!
(i%10))printf("\n");
}
printf("\n");
}
main()
{
intaa[20],n;
printf("\nPleaseenteranintegernumberbetween5and20:
");
scanf("%d",&n);
getarr(n,aa);
printf("\n\nBeforesorting%dnumbers:
\n",n);putarr(n,aa);
sortpb(n,aa);
printf("\nAftersorting%dnumbers:
\n",n);putarr(n,aa);
}
【参考答案】
inti,j,p,t;
【参考答案】
if(a[p]>a[i])p=i;
【参考答案】
if(p!
=j)
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算矩阵a的下三角(包含主对角线)元素之积,矩阵的
行、列数和元素值均由键盘输入。
-------------------------------------------------------*/
#defineM10
#include"stdio.h"
intmain()
{
inti,j,n,a[M][M];
longs=1;
scanf("%d",&n);
/***********FILL***********/
for(_________)
for(j=0;jscanf("%d",&a[i][j]);
for(i=0;i/***********FILL***********/
for(j=0;_______;j++)
/***********FILL***********/
s=_________;
printf("%ld\n",s);
return0;
}
【参考答案】
i=0;ii=0;i【参考答案】
j<=i
i>=j
【参考答案】
s*a[i][j]
a[i][j]*s
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
本程序的功能是从10个数中找出其中的最大值,完善程序。
-------------------------------------------------------*/
#include"stdio.h"
main()
{
inta[10],i,*pmax;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
/***********FILL***********/
pmax=_____;
for(i=1;i<10;i++)
if(a[i]>*pmax)pmax=&a[i];
/***********FILL***********/
printf("%d",_____);
}
【参考答案】
pmax=&a[0]
pmax=a
【参考答案】
*pmax
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
计算并输出给定整数n的所有因子之和(不包括1与
自身)。
注意:
n的值不大于1000。
例如:
n的值为855时,应输出704。
------------------------------------------------*/
#include"stdio.h"
intfun(intn)
{
/*********Begin**********/
/**********End**********/
}
voidTestFunc()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..ItMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..ItMayBeChanged");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
main()
{
printf("s=%d\n",fun(855));
TestFunc();
}
【参考代码】
ints=0,i;
for(i=2;iif(n%i==0)s=s+i;
returns;
/*------------------------------------------------------
【程序设计】
--------------------------------------------------------
功能:
删去一维数组中所有重复的数,只保留不同的数。
数组中的数已按由小到大的顺序排列,
函数返回删除后数组中数据的个数。
例如:
一维数组中的数据是:
2223445666677899101010。
删除后,数组中的内容应该是:
2345678910。
注意:
请勿改动主函数main和其它函数中的任何内容。
------------------------------------------------------*/
#include"stdio.h"
#defineN80
intfun(inta[],intn)
{
/*********Begin**********/
/**********End**********/
}
main()
{
voidTestFunc();
inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
printf("Theoriginaldata:
\n");
for(i=0;in=fun(a,n);
printf("\n\nThedataafterdeleted:
\n");
for(i=0;iprintf("\n\n");
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
inta[N];
intn;
inti;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
fscanf(IN,"%d",&n);
for(i=0;in=fun(a,n);
for(i=0;ifclose(IN);
fclose(OUT);
}
【参考代码】
inti,j=1,k=a[0];
for(i=1;iif(k!
=a[i])
{
a[j++]=a[i];
k=a[i];
}
a[j]=0;
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
函数fun的功能是:
求1到20的阶乘的和。
--------------------------------------*/
#include"stdio.h"
main()
{
intn,j;
floats=0.0,t=1.0;
for(n=1;n<=20;n++)
{
/**********ERROR**********/
s=1;
for(j=1;j<=n;j++)
/**********ERROR**********/
t=t*n;
/**********ERROR**********/
s+t=s;
}
printf("jiecheng=%f\n",s);
}
【参考答案】
t=1;
t=1.0;
【参考答案】
t=t*j;
t*=j;
t=j*t;
【参考答案】
s=s+t;
s+=t;
s=t+s;
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
实现两个字符串的连接。
例如:
输入dfdfqe和12345时,则输出dfdfqe12345.
------------------------------------------------------*/
#include"stdio.h"
main()
{
chars1[80],s2[80];
voidscat(chars1[],chars2[]);
gets(s1);
gets(s2);
scat(s1,s2);
puts(s1);
}
voidscat(chars1[],chars2[])
{
inti=0,j=0;
/**********ERROR**********/
while(s1[i]=='\0')i++;
/**********ERROR**********/
while(s2[j]=='\0')
{
/**********ERROR**********/
s2[j]=s1[i];
i++;
j++;
}
/**********ERROR**********/
s2[j]='\0';
}
【参考答案】
while(s1[i]!
='\0')i++;
while(s1[i])i++;
while(s1[i]!
=NULL)i++;
while(s1[i]!
=0)i++;
【参考答案】
while(s2[j]!
='\0')
while(s2[j])
while(s2[j]!
=NULL)
while(s2[j]!
=0)
【参考答案】
s1[i]=s2[j];【参考答案】
s1[i]='\0';
s1[i]=NULL;
*(s1+i)='\0';
s1[i]=0;
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
打印以下图形。
*****
*****
*****
*****
*****
-------------------------------------------------------*/
#include"stdio.h"
main()
{
chara[5][9]={""};
inti,j;
for(i=0;i<5;i++)
/***********FILL***********/
for(j=i;_____;j++)
a[i][j]='*';
/***********FILL***********/
for(_____;i<5;i++)
{
for(j=0;j<9;j++)
/***********FILL***********/
printf("%c",_____);
/***********FILL***********/
_____;
}
}
【参考答案】
j
i+5>j
j<=i+4
i+4>j
【参考答案】
i=0
【参考答案】
a[i][j]
【参考答案】
printf("\n")
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
计算n门课程的平均分。
例如:
若有5门课程的成绩是:
90.5,72,80,61.5,55
则函数的值为:
71.80。
-------------------------------------------------------*/
#include
floatfun(float*a,intn)
{
inti;
floatave=0.0;
/***********FILL***********/
for(i=0;________;i++)
ave=ave+a[i];
ave=ave/n;
/***********FILL***********/
_________;
}
intmain()
{
floatscore[30]={90.5,72,80,61.5,55},aver;
/***********FILL***********/
aver=fun(_______,5);
printf("\nAvera