admin 管理员组文章数量: 1184232
2024年2月29日发(作者:什么是编译器)
第1套
一、填空题
给定程序的功能是求1/4的圆周长。函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=Πd,在程序中定义的变量名要与公式的变量相同)。
例如:输入圆的直径值:19.527,输出为:15.336457
请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。
#include
double fun(double d)
{
return 3.14159*d/4.0;
}
main()
{
double z;
printf("Input the d of the round:");
scanf("%lf",&z);
printf("L=%lfn",fun(z));
}
二、改错题
下列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。例如,若输入202,则输出应该是0。
请修改程序中的错误,得出正确的结果
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构
#include
#include
long fun(long n)
{
long r=1;
do
{
r*=n%10;
n/=10;
}while(n);
return(r);
}
main()
{
long m;
printf("nplease enter a number:");
scanf("%ld",&m);
printf("n%ldn",fun(m));
}
1
三、编程题
请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。
例如,若传送给m的值为20,则程序输出7 11 14。
请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#define N 100
void fun(int m,int*b,int*n)
{
int i,j=0;*n=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
{
b[j]=i;
j++;
}
*n=j;
}
main()
{
int a[N],n,i;
FILE*out;
fun(20,a,&n);
for(i=0;i if((i+1)%20==0) printf("%4dn",a[i]); else printf("%4d",a[i]); printf("n"); out=fopen("","w"); fun(100,a,&n); for(i=0;i if((i+1)%10==0) fprintf(out,"%4dn",a[i]); else fprintf(out,"%4d",a[i]); fclose(out); } 第2套 一、填空题 函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局) 2 变量sum5、sum6、sum7返回主函数。 例如:当test=89431676时,结果应该为:sum5=0 sum6=2 sum7=1。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 #include int sum5,sum6,sum7; void fun(long test) { sum5=sum6=sum7=0; while(test) { switch(test%10) { case 5:sum5++;break; case 6:sum6++;break; case 7:sum7++; } test/=10; } } main() { long test=89431676L; fun(test); printf("nThe count result:n"); printf("test=%ld sum5=%d sum6=%d sum7=%dn",test,sum5,sum6,sum7); } 二、改错题 下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母,其它字符不变。例如,若输入“asAS”,则输出“ASAS”。 请修改程序中的错误,使它能统计出正确的结果。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构 #include #include #include char*fun(char str[]) { int i; for(i=0;str[i];i++) if((str[i]>='a'&&str[i]<='z')) str[i]-=32; return(str); } main() 3 { char str[81]; printf("nplease enter a string:"); gets(str); printf("nThe result string is:n%s",fun(str)); } 三、编程题 请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #include void fun(int b[],int n,int*min,int*d) { int i; *min=b[0]; *d=0; for(i=0;i if(b[i]<*min) { *min=b[i]; *d=i; } } main() { int i,a[20],min,flag,n=10; FILE*out; for(i=0;i { a[i]=rand()%50; printf("%4d",a[i]); } printf("n"); fun(a,n,&min,&flag); printf("min=%5d,Index=%4dn",min,flag); out=fopen("","w"); memcpy(a,"3.9793238462643383279",32); fun(a,8,&min,&flag); fprintf(out,"min=%5d,Index=%4d",min,flag); 4 fclose(out); } 第3套 上机考试试题 一、填空题 请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为-1时结束。例如:输入96 121 23 343 232 54 89 365 89 -1时,最大的数为365。 仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容 #include #include #define NUM 100 main() { int n[NUM]; int i=-1; int MAX=-1; printf("nInsert integer with the '-1' as end:n"); do { i++; printf("n[%d]=",i); scanf("%d",&n[i]); MAX=MAX }while(n[i]!=-1); printf("The MAX=%dn",MAX); } 二、改错题 下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。例如,若输入11111,则输出将是4681。 请修改程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构 #include #include #include int fun(char*s) { int n; n=*s-'0'; s++; while(*s!=0) { n=n*8+*s-'0'; s++; 5 } return n; } main() { char str[6]; int i; int n; printf("Enter a string(octal digits):"); gets(str); if(strlen(str)>5) { printf("Error:string too longer!nn"); exit(0); } for(i=0;str[i];i++) if(str[i]<'0'||str[i]>'7') { printf("Error:%c not is octal digits!nn",str[i]); exit(0); } printf("The original string:"); puts(str); n=fun(str); printf("n%s is convered to intege number:%dnn",str,n); } 三、编程题 下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的r。 例如:若c数组中的值为: 1 9 7 C= 4 5 2 3 8 3 则返回主程序后r的值应为4.625000 请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句 #include #include #include #define N 3 double fun(int b[][N]) { 6 int i,j,k=0; double r=0.0; for(j=0;j { r+=b[0][j]; k++; } for(j=0;j { r+=b[N-1][j]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][0]; k++; } for(i=1;i<=N-2;i++) { r+=b[i][N-1]; k++; } return r/=k; } main() { int c[N][N]={1,9,7,4,5,2,3,8,3}; int i,j; FILE*out; double r; printf("**********n"); for(i=0;i { for(j=0;j { printf("%4d",c[i][j]); } printf("n"); } r=fun(c); printf("THE RESULTn"); printf("The r is %lfn",r); out=fopen("","w"); fprintf(out,"%lf",r); 7 fclose(out); } 第4套 上机考试试题 一、填空题 请补充fun函数,该函数的功能是将字符串str中的小写字母都改为对应的大写字母,其它字符不变。 例如:若输入”Welcome!”,程序输出结果是”WELCOME!”。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 #include #include #include char*fun(char str[]) { int j; for(j=0;str[j];j++) { if((str[j]>='a')&&(str[j]<='z')) str[j]-=32; } return(str); } main() { char str[100]; printf("nplease enter a string:"); gets(str); printf("nThe result string is:n%s",fun(str)); } 二、改错题 下列给定程序中,函数fun的功能是:计算并输出n以内最大的10个能被11或19整除的自然数之和。n的值由主函数传入,若n的值为300,则函数值为2646。 请修改程序中的错误或在横线处填上适当的内容并把横线删除,使程序能得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include int fun(int n) { int m=0,mix=0; 8 while((n>=2)&&(mix<10)) { if((n%11==0)||(n%19)==0) { m=m+n; mix++; } n--; } return m; } main() { printf("%dn",fun(300)); } 三、编程题 请编写函数fun,其功能是:将str所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。 例如,若str所指字符串中的内容为ABCDEFG123456, 其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是246。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include #include void fun(char*str,char s[]) { int i,j=0,n; n=strlen(str); for(i=0;i if(i%2==0&&str[i]%2==0) { s[j]=str[i]; j++; } s[j]='0'; } main() { char str[100],s[100]; 9 FILE*out; printf("nplease enter string:"); scanf("%s",str); fun(str,s); printf("nThe result is:%sn",s); out=fopen("","w"); strcpy(str,"please enter string:"); fun(str,s); fprintf(out,"%s",s); fclose(out); } 第5套 上机考试试题 一、填空题 请补充fun函数,该函数的功能是:依次取出字符串中所有大写字母,形成新的字符串,并取代原字符串。例如,输入sdfASDsd,则输出ASD。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #include void fun(char*s) { int j=0; char*p=s; while(*p) { if(*p>='A'&&*p<='Z') { s[j]=*p; j++; } p++; } s[j]='0'; } main() { char str[100]; printf("nPlease Input a string:"); gets(str); printf("nnThe original string is:%sn",str); fun(str); printf("nnThe string of changing is:%sn",str); } 10 二、改错题 下列给定程序中,函数fun的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。 请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,得出正确结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include void fun() { int aa[3][3],sum; int i,j; sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",&aa[i][j]); for(i=0;i<3;i++) sum=sum+aa[i][i]; printf("sum=%dn",sum); } main() { fun(); } 三、编程题 请编写一个函数void fun(int*s,int t,int*result),用来求出数组的最小元素在数组中的下标,并存放在result所指的存储单元中。 例如,输入如下整数: 564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555 则输出结果为:3,121。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include void fun(int*s,int t,int*result) { int temp,min; min=s[0]; for(temp=0;temp 11 if(s[temp] { min=s[temp]; *result=temp; } } main() { int store[15]={564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555},result; FILE*out; fun(store,10,&result); printf("%d,%dn",result,store[result]); out=fopen("","w"); fprintf(out,"%dn%d",result,store[result]); fclose(out); } 第6套 上机考试试题 一、填空题 给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。例如,输入test,如果输入e,输出的结果不变,但如果输入a,结果testa。 请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #include void fun(char*s,char ch) { while(*s&&*s!=ch) s++; if(*s!=ch) { s[0]=ch; s[1]=0; } } main() { char str[81],c; printf("nPlease input a string:n"); gets(str); printf("n Please enter the character to search:"); c=getchar(); fun(str,c); 12 printf("nThe result is %sn",str); } 二、改错题 下列给定程序中,函数fun 的功能是:按顺序给t所指数组中的元素赋予从2开始的偶数。然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在r所指的数组中。若t所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,t所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请修改程序中的错误,得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #define NUM 20 int fun(double*t,double*r) { int j,i; double sum; for(j=2,i=0;i { t[i]=j; j+=2; } sum=0.0; for(j=0,i=0;i { sum+=t[i]; if((i+1)%5==0) { r[j]=sum/5; sum=0; j++; } } return j; } main() { double a[NUM],b[NUM/5]; int i,j; j=fun(a,b); printf("The original data:n"); for(i=0;i { if(i%5==0) printf("n"); 13 printf("%4.0f",a[i]); } printf("nnThe result:n"); for(i=0;i printf("%6.2f",b[i]); printf("nn"); } 三、编程题 请编写一个函数void fun(int x,int sum,int select[]),该函数的功能是:将大于整数x且紧靠x的sum个素数存入select所指的数组中。 例如,输入:121 8,则应输出:127 131 137 139 149 151 157 163。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include void fun(int x,int sum,int select[]) { int r=0,temp,p,sign=1; for(temp=x+1;temp { for(p=2;p { if(temp%p!=0) sign=1; else { sign=0; break; } } if(sign==1&&p>=temp) { if(sum>=0) { select[r++]=temp; sum--; } else break; } } } main() 14 { int x,y,a[500]; FILE*out; printf("nInput two number:"); scanf("%d,%d",&x,&y); fun(x,y,a); for(x=0;x printf("%d ",a[x]); printf("n"); fun(121,10,a); out=fopen("","w"); for(x=0;x<10;x++) fprintf(out,"%dn",a[x]); fclose(out); } 第7套 上机考试试题 一、填空题 给定程序的功能是计算score中n个人的平均成绩aver,将高于aver的成绩放在high中,通过函数名返回人数。例如,score={88,75,50,60,80,90},n=6时,函数返回的人数应该是4,high={88,75,80,90}。 请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #include int fun(int score[],int m,int high[]) { int i,j=0; float aver=0.0; for(i=0;i aver+=score[i]; aver/=(float)m; for(i=0;i if(score[i]>aver) high[j++]=_____; return j; } main() { int i,n,high[6]; int score[6]={88,75,50,60,80,90}; n=fun(score,6,_____); printf("nThe high of average score are:"); for(i=0;i 15 printf("%d ",______); printf("n"); } 二、改错题 已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的 值通过形参传入。例如,当n=4时,程序输出结果应为2.000000。 请修改程序中的错误,使程序能得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include #include double fun(int n) { double sum,a0,a1,a2,a; int i; sum=1.0; if(n<=2) sum=0.0; a0=0.0; a1=0.0; a2=1.0; for(i=4;i<=n;i++) { a=a0+a1+a2; sum+=sqrt(a); a0=a1; a1=a2; a2=a; } return sum; } main() { int n; printf("Input N="); scanf("%d",&n); printf("%lfn",fun(n)); } 三、编程题 学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中,注意:分数最低 16 的学生可能不只一个,函数返回分数最低的学生的人数。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #define M 10 typedef struct { char num[10]; int s; }SCORE; int fun(SCORE*a,SCORE*b) { int i,j=0,n=0,min; min=a[0].s; for(i=0;i if(a[i].s min=a[i].s; for(i=0;i if(a[i].s==min) { *(b+j)=a[i]; j++; n++; } return n; } main() { SCORE stu[M]={{"GA03",76},{"GA04",85},{"GA01",91},{"GA08",64},{"GA06",87},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}}; SCORE low[M]; int i,n; FILE*out; n=fun(stu,low); printf("The %d lowest score:n",n); for(i=0;i printf("%s %4dn",low[i].num,low[i].s); printf("n"); out=fopen("","w"); fprintf(out,"%dn",n); for(i=0;i fprintf(out,"%4dn",low[i].s); 17 fclose(out); } 第8套 上机考试试题 一、填空题 请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最小的数并输出。 例如:输入78,53,123,则输出为53。 请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #include main() { int x,y,z,min; printf("nInput three number:n"); scanf("%d,%d,%d",&x,&y,&z); printf("The three numbers are:%d,%d,%dn",x,y,z); if(x min=x; else min=y; if(min>z) min=z; printf("min=%dn",min); } 二、改错题 下列给定程序中,fun函数的功能是:分别统计字符串中小写字母和大写字母的个数。例如,给字符串t输入:adfsFFssefSCGSDew,则应输出结果:big=7,small=10。 请修改程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include void fun(char*t,int*c,int*d) { while(*t) { if(*t>='A'&&*t<='Z') (*c)++; if(*t>='a'&&*t<='z') (*d)++; t++; } } main() 18 { char t[200]; int big=0,small=0; printf("nplease input a string:"); gets(t); fun(t,&big,&small); printf("n big=%d small=%dn",big,small); } 三、编程题 请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。二维数组中的数己在主函数中赋予。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include #define M 3 #define N 4 void fun(int a[M][N],int b[N]) { int i,j,max; for(j=0;j { max=a[0][j]; for(i=0;i { if(a[i][j]>max) max=a[i][j]; } b[j]=max; } } main() { int c[M][N]={{10,22,15,30},{19,33,45,38},{20,22,66,40}}; int p[N],i,j,k; FILE*out; printf("The original data is:n"); for(i=0;i { for(j=0;j printf("%6d",c[i][j]); 19 printf("n"); } fun(c,p); printf("nThe result is:n"); for(k=0;k printf("%4d",p[k]); printf("n"); out=fopen("","w"); for(k=0;k fprintf(out,"%dn",p[k]); fclose(out); } 第9套 上机考试试题 一、填空题 请补充fun函数,该函数的功能是:从键盘输入一个下标n,把数组a中比元素a[n]小的元素放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。例如,数组 a={33,55,66,44,77,22,88,99,11,10},输入2,则 结果输出 “33 55 44 22 11 10 66 77 88 99”。 请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #define N 10 void fun(int a[],int n) { int i,j=0,k=0,t; int b[N]; t=a[n]; for(i=0;i { if(a[i]>t) b[j++]=a[i]; if(a[i] a[k++]=a[i]; } _______; for(i=0;____i++,k++) a[k]=b[i]; } main() { int i,n; 20 int a[N]={33,55,66,44,77,22,88,99,11,10}; printf("The original array:n"); for(i=0;i printf("%4d",a[i]); printf("n suffix n:"); scanf("%d",&n); fun(a,n); printf("The new array:n"); for(i=0;i printf("%4d",a[i]); printf("n"); } 二、改错题 下列给定程序中,fun函数的功能是:求a=xx…xx-…-xx-xx-x(此处xx…xx表示n个x,x和n的值在1至9之间)。例如x=3,a=6,则以上表达式为: a=333333-33333-3333-333-33-3 其值是296298。X和n是fun函数的形参,表达式的值作为函数值传回main函数。 请修改程序的错误,使它能计算出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include long fun(int x,int n) { int j; long a=0,t=1; for(j=0;j<=n;j++) t=t*10+x; a=t; for(j=1;j { t=t%10; a=a-t; } return(a); } main() { int x,n; printf("nPlease enter x and n:"); scanf("%d%d",&x,&n); printf("The value of fun is %ldn",fun(x,n)); } 三、编程题 21 请编写函数fun,其功能是:计算并输出: F=1+(1+2)+(1+2+3)+… +(1+2+3+…m) 例如,若主函数从键盘给m输入10后,则输出为F=104.478749。 请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:m的值要求大于1但不大于100。部分源程序给出如下。 #include #include double fun(int m) { } main() { int m; double f; FILE*out; printf("nInput m: "); scanf("%d",&m); f=fun(m); printf("nnf=%fnn",f); out=fopen("","w"); for(m=0;m<10;m++) fprintf(out,"%fn",fun(m+20)); fclose(out); } 差第10套 ************************************************************** 22 #include #include void fun(long a,long*b) { int d; long s=1; *b=0; while(a>0) { d=a%10; if(d%2!=0) { *b=d*s+*b; s*=10; } a/=10; } } main() { long a,b; printf("nPlease enter a:"); scanf("%ld",&a); fun(a,&b); printf("The result is:%ldn",b); } 第11套 上机考试试题 一、填空题 请在函数fun横线上填写表达式,使从键盘上输入一个整数m,输出 斐波纳契数列。斐波纳契数列是一种整数数列,其中每个数等于前面两个数之和,例如:0 1 1 2 3 5 8…… 请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句 #include int fun(int m); main() { int i,m=0; scanf("%d",&m); for(i=0;i 23 printf("%d",fun(i)); } int fun(int m) { if(m==0) return 0; else if(m==1) return 1; else return fun(m-1)+fun(m-2); } 二、改错题 下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句或表达式.例如变量x中的值原为1,y中的值原为2,程序运行后x中的值为2,y中的值为1。 请修改程序中的错误,得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include int fun(int*a,int b) { int temp; temp=*a;*a=b; return temp; } main() { int x=1,y=2; printf("x,y %d %dn",x,y); y=fun(&x,y); printf("the result is %d %dn",x,y); } 三、编程题 请编写一个函数void fun(char*t,int p[]),统计在t字符串中“a”到“z”26个字母各自出现的次数,并依次放在p所指数组中。 例如,当输入字符串sdfssdrefggrthdg后,程序的输出结果应该是: 00 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include void fun(char*t,int p[]) 24 { int j; for(j=0;j<26;j++) p[j]=0; while(*t) { switch(*t) { case 'a':p[0]++; break; case 'b':p[1]++; break; case 'c':p[2]++; break; case 'd':p[3]++; break; case 'e':p[4]++; break; case 'f':p[5]++; break; case 'g':p[6]++; break; case 'h':p[7]++; break; case 'i':p[8]++; break; case 'j':p[9]++; break; case 'k':p[10]++;break; case 'l':p[11]++;break; case 'm':p[12]++;break; case 'n':p[13]++;break; case 'o':p[14]++;break; case 'p':p[15]++;break; case 'q':p[16]++;break; case 'r':p[17]++;break; case 's':p[18]++;break; case 't':p[19]++;break; case 'u':p[20]++;break; case 'v':p[21]++;break; case 'w':p[22]++;break; case 'x':p[23]++;break; case 'y':p[24]++;break; case 'z':p[25]++;break; } t++; } } main() { char a[2000]; int b[26],i; FILE*out; printf("nPlease input a char string:"); 25 scanf("%s",a); fun(a,b); for(i=0;i<26;i++) printf("%d",b[i]); printf("n"); fun("a bosom friend after brings a distant land near",b); out=fopen("","w"); for(i=0;i<26;i++) fprintf(out,"%dn",b[i]); fclose(out); } 第12套 上机考试试题 一、填空题 请补充函数,该函数的功能是求一维数组a[N]的平均值,并对所得结果进行四舍五入保留两位小数.例如,当 a[10]={ 23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9}时, 输出结果为:average=19.840000. 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 #include #include double fun(double a[10]) { int i; long temp; double average=0.0; double sum=0.0; for(i=0;i<10;i++) sum+=a[i]; average=sum/10; average=average*1000; temp=(average+5)/10; average=(double)temp/100; return average; } main() { double average,a[10]={23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9}; int i; printf("nThe data:n"); for(i=0;i<10;i++) printf("%6.1f",a[i]); printf("nn"); average=fun(a); 26 printf("The average=%fnn",average); } 二、改错题 下列给定程序中fun函数的功能是:将n个无序整数从小到大排列。 请修改程序中的错误,得出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #include #include fun(int n,int*b) { int i,j,p,t; for(j=0;j { p=j; for(i=j+1;i if(b[p]>b[i]) p=i; if(p!=j) { t=b[j]; b[j]=b[p]; b[p]=t; } } } putarr(int n,int*z) { int i; for(i=1;i<=n;i++,z++) { printf("%4d",*z); if(!(i%10)) printf("n"); } printf("n"); } main() { int a[10]={0,4,2,8,6},n=5; printf("nnBefore sorting %d numbers:n",n); putarr(n,a); 27 fun(n,a); printf("nAfter sorting %d numbers:n",n); putarr(n,a); } 三、编程题 编写函数fun,函数的功能是:根据以下公式计算,计算结果作为函数值返回。 s1111请勿改动主函数main与其它函数中的任何12123123n内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include #include #include float fun(int n) { int k; float str=1.0,sum=1.0; for(k=2;k<=n;k++) { sum=sum+k; str=str+1/sum; } return str; } main() { int n; float str; FILE*out; printf("nPlease input the integer n:"); scanf("%d",&n); str=fun(n); printf("The result is:%fn",str); str=fun(10); out=fopen("","w"); fprintf(out,"%f",str); fclose(out); } 第13套 上机考试试题 一、填空题 请补充fun函数,该函数的功能是:分类统计一个字符串中元音字母和其它字符的个数(不区分大小写)。例如,输入UdsaeyiEosu,结果为A:1 E:2 I:1 O:1 U:2 other:4。 28 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #include #define N 100 void fun(char*s,int a[]) { char*r=s; int i=0; for(i=0;i<6;i++) a[i]=0; while(*r) { switch(*r) { case 'A': case 'a':a[0]++;break; case 'E': case 'e':a[1]++;break; case 'I': case 'i':a[2]++;break; case '0': case 'o':a[3]++;break; case 'U': case 'u':a[4]++;break; default: a[5]++; } r++; } } main() { char s[N],yy[5]="AEIOU"; int i; int a[6]; printf("Please input a sing to count:n"); gets(s); printf("The sing is:n"); puts(s); fun(s,a); for(i=0;i<5;i++) printf("n%c:%d",yy[i],a[i]); printf("nother:%dn",a[i]); 29 } 二、改错题 假定整数不重复数列{99,2,6,1,3,4,-1}中的数存放在整数s中。下列给定程序中,函数fun的功能是:删除数列中值为a的元素,同时将其它元素前移。sum中存放的是数列中元素的个数。 请修改程序中的错误,得出正确的结果。 注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构。 #include #define M 100 fun(int*x,int sum,int a) { int temp=0,j; x[sum]=a; while(a!=x[temp]) temp=temp+1; if(temp==sum) { return-1; } else { for(j=temp;j x[j]=x[j+1]; return sum-1; } } main() { int s[M]={99,2,6,1,3,4,-1},a,sum,j; sum=8; printf("The array:n"); for(j=0;j printf("%5d",s[j]); printf("nPlease insert data want to deleted:"); scanf("%d",&a); printf("Delete:%dn",a); sum=fun(s,sum,a); if(sum==-1) { printf("***Not be found!***nn"); } else 30 { printf("The array after delete:n"); for(j=0;j printf("%5d",s[j]); printf("nn"); } } 三、编程题 请编写一个函数void fun(char orig[],char result[],int flg),其功能是:删除一个字符串中指定下标的字符。其中,orig指向原字符串,删除后的字符串存放在result所指的数组中,flg中存放指定的下标。 例如:输入一个字符串:Hello World, 然后输入4,则调用该函数后的结果为:Hell World。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include #include #define NUM 100 void fun(char orig[],char result[],int flg) { int n,m=0; for(n=0;n if(n!=flg) { result[m]=orig[n]; m++; } result[m]='0'; } main() { char s1[NUM],s2[NUM]; int flg; FILE*out; printf("Please Input s1:n"); gets(s1); printf("Input want to delectd:"); scanf("%d",&flg); fun(s1,s2,flg); printf("The result is:%sn",s2); fun("test String",s2,9); out=fopen("","w"); fprintf(out,"%s",s2); fclose(out); 31 } 第14套 上机考试试题 一、填空题 s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。每个单词之间都由空格隔开,并且字符串s开始不存在空格。例如,s=“welcome welcome”,结果为:len=2。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #define M 100 void fun(char*s,int*len) { int j,n=0; for(j=0;j<*len;j++) if(s[j]>='a'&&s[j]<'z'&&s[j+1]==' '||s[j+1]=='0') n++; *len=n; } main() { char s[M]; int len=0; printf("Enter a string:n"); gets(s); while(s[len]) len++; fun(s,&len); printf("The lenber of word is:%dnn",len); } 二、改错题 下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 请修改程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。 #include #define M 100 void fun(int sort[],int n) { int i,j,temp,p; for(j=0;j { p=j; for(i=j;i 32 if(sort[i] { p=i; temp=sort[p]; sort[p]=sort[j]; sort[j]=temp; } } } main() { int sort[M]={23,3,67,-2,9,-6,27,12},i,num=8; printf("Before sort:"); for(i=0;i printf("%d,",sort[i]); printf("n"); fun(sort,num); printf("after sort"); for(i=0;i printf("%d,",sort[i]); printf("n"); } 三、编程题 请编写一个函数fun,它的功能是:计算并输出给定整数m的所有因子(不包括1与自身)之和。规定m的值不大于1000 例如,若主函数从键盘给m输入的值为111,则输出为sum=40。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 注意:部分源程序给出如下。 #include int fun(int m) { int sum=0,i; for(i=2;i<=m-1;i++) if(m%i==0) sum+=i; return sum; } main() { int n,num; FILE*out; printf("Input n:"); scanf("%d",&n); 33 num=fun(n); printf("num=%dn",num); out=fopen("","w"); fprintf(out,"%dn",fun(123)); fprintf(out,"%dn",fun(456)); fprintf(out,"%dn",fun(789)); fclose(out); } 第15套 上机考试试题 一、填空题 S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度。例如,s=“Abc123e456hui7890”,结果为:1234567890。 请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。 注意:部分源程序给出如下。 #include #define M 80 int a[M]; int fun(char s[],int a[],int len) { int j=0,m=0; for(j=0;j if(s[j]>='0'&&s[j]<='9') { a[m]=s[j]-'0'; m++; } return m; } main() { char s[M]; int len=0,m,j; printf("Please input a string:n"); gets(s); while(s[len]) len++; m=fun(s,a,len); printf("nThe result string:");
版权声明:本文标题:计算机二级c 上机考试题库80题答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709187740a539705.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。