100套上机题.docx
- 文档编号:27740081
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:41
- 大小:29.80KB
100套上机题.docx
《100套上机题.docx》由会员分享,可在线阅读,更多相关《100套上机题.docx(41页珍藏版)》请在冰豆网上搜索。
100套上机题
2011年计算机二级C语言上机操作题及答案汇总
第1套
填空题
请补充FUN函数,FUN函数的功能是求10的阶乘。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,
仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
longfun(int n)
{
if(___1___)
return(n*fun(___2___));
return___3___;
}
main()
{
printf("10!
=%ld\n",fun(10));
}
第1处填空:
n>1或1
第2处填空:
n-1
第3处填空:
1或11或1L
改错题
下列给定程序的功能是:
读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:
2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/********found********/
IsPrime(int n);
{
int i,m;
m=1;
/********found********/
for(i=2;i
if!
(n%i)
{
m=0;
break;
}
return(m);
}
main()
{
int j,k;
printf("\npleaseenteranintegernumberbetween2and10000:
");
scanf("%d",&k);
printf("\n\nTheprimefactor(s)of%dis(are):
",k);
for(j=2;j
if((!
(k%j))&&(IsPrime(j)))
printf("M,",j);
printf("\n");
}
第1处:
Isprime(intn);应改为Isprime(intn)
第2处:
if!
(n%i)应该为if(!
(n%i))
编程题
M个人的成绩存放在score数组中,请编写函数fun,它的功能是:
返回低于平均分的认输,并将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的认输应该是4,below中的数据应我10、20、30、40。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
intfun(intscore[],intm,intbelow[])
{
}
main()
{
inti,n,below[9];
intscore[9]={10,20,30,40,50,60,70,80,90};
FILE*out;
n=fun(score,9,below);
printf("\nBelowtheaveragescoreare:
");
out=fopen("out.dat","w");
for(i=0;i
{
printf("%d",below[i]);
fprintf(out,"%d\n",below[i]);
}
fclose(out);
}
答案是:
intfun(intscore[],int m,int below[])
{
intI,k=0,aver=0;
for(i=0;i
aver+=score[i];
aver/=m;
for(i=0;i
if(score[i]
{
below[k]=score[i];
k++;
}
returnk;
}
第2套
填空题
请在函数FUN的横线上填写若干表达式,使从键盘上输入一个整数N,输出斐波纳契数列。
斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如:
0 1 1 2 3 5 8 13…..
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include
int fun(int n);
main()
{
int i, n = 0;
scanf("%d", &n);
for (i=0; i printf("%d ", fun(i)); } int fun(int n) { if (___1___) return 0; else if (___2___) return 1; else return ___3___; } 第1处填空: n==0或0==n或! n 第2处填空: n==1或1==n 第3处填空: fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1) 改错题 下列给定程序中,函数FUN的功能是: 逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。 例如,若a中的字符串为aBCDeFgH,b中的字符串为: ABcd,则c中的字符串应为: aBcdeFgH。 请改正程序中的错误,使程序能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include void fun(char *p, char *q, char *c) { /********found********/ int k = 1; /********found********/ while (*p ! = *q) { if (*p < *q) c[k] = *q; else c[k] = *p; if (*p) p++; if (*q) q++; k++; } } main() { char a[10] = "aBCDeFgH", b[10] = "ABcd", c[80] = {’\0’}; fun(a, b, c); printf("The string a: "); puts(a); printf("The string b: "); puts(b); printf("The result: "); put s(c); } 第1处: int k=1应改为int k=0; 第2处: while(*p! =*q)应改为while(*p||*q) 编程题 请编写函数fun,它的功能是: 求出1到1000之内能被7或11整除、但不能同时被7或11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(int *a,int *n) { } main() { int aa[1000],n,k; FILE *out; fun(aa,&n); out=fopen("out.dat", "w"); for(k=0;k if((k+1)_==0) { printf("]\n",aa[k]); fprintf(out, "%d\n", aa[k]); } else { printf("],",aa[k]); fprintf(out, "%d,", aa[k]); } fclose(out); } 答案是: void fun(int *a,int *n) { int i,j=0; for(i=2;i<1000;i++) if( (i%7==0||i_==0)&&iw! =0) a[j++]=i; *n=j; } 第3套 填空题 请补充函数FUN(CHAR *S),该函数的功能是把字符串中的内容逆置. 例如: 字符串中原有的字符串为abcde,则调用该函数后,串中的内容为edcba. 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include #define N 81 void fun(char *s) { int i, n = strlen(s)-1; char t; for (i=0; i { t = s[i]; ___2___; ___3___; } } main() { char a[N]; printf("Enter a string: "); gets(a); printf("The original string is: "); puts(a); fun(a); printf("\n"); printf("The string after modified: "); puts(a); } 第1处填空: n--或--n或n-=1或n=n-1 第2处填空: s[i]=s[n]或*(s+i)=*(s+n) 第3处填空: s[n]=t或*(s+n)=t 改错题 下列给定的程序中,函数fun的功能是: 依次取出字符串中所以数字字符,形成新的字符串,并取代原字符串。 请改正函数fun中的错误,使程序能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include void fun(char *s) { int i, j; /********found********/ for (i=0, j=0; s[i]! =’\0’; i++) if (s[j]>=’0’ && s[i]<=’9’) s[j] = s[i]; /********found********/ s[j] = "\0"; } main() { char item[80]; printf("\nEnter a string : "); gets(item); printf("\n\nThe string is : %s\n", item); fun(item); printf("\n\nThe string of changing is : %s\n", item); } 第1处: s[j]=s[i];应改为s[j++]=s[i] 第2处: s[j]=”/0”;应改为s[j]=’\0’; 编程题 请编写函数void fun(int x,int pp[],int *n),它的功能是: 求出能整除x且不是偶数的各整数,并按从小到大的顺序放在 pp所指的数组中,这些除数的个数通过形参 n返回. 例如,若x中的值为 30,则有 4个数符合要求,它们是 1,3,5,15. 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(int x, int pp[], int *n) { } main() { int x, aa[1000], n, i; FILE *out; printf("\nPlease enter an integer number: \n"); scanf("%d",&x); fun(x,aa,&n); for(i=0;i printf("%d ", aa[i]); printf("\n"); fun(730, aa, &n); out = fopen("out.dat", "w"); for (i = 0; i < n; i++) fprintf(out, "%d\n", aa[i]); fclose(out); } 答案是: void fun(int x,int pp[],int *n) { int i=1,j=0,k=0,*t=pp; for(i=0;i<=x;i++) if(i%2! =0) { t[j]=i; j++; } for(i=0;i if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; } 第4套 填空题 请补充函数FUN,它的功能是: 计算并输出N(包括N)以内能被3或7整除的所有自然数的倒数之和。 例如,在主函数中从键盘给N输入30后,输出为: S=1.226323。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 试题程序: #include double fun(int n) { int i; double sum = 0.0; for (i=1; ___1___; i++) if (i%3==0 ___2___ i%7==0) sum += ___3___/i; return sum; } main() { int n; double s; printf("\nInput n: "); scanf("%d", &n); s = fun(n); printf("\n\ns=%f\n", s); } 第1处填空: i<=n或n>=i 第2处填空: || 第3处填空: 1.0或(double)1 改错题 下列给定程序中,fun函数的功能是: 分别统计字符串中大写字母和小写字母的个数。 例如,给字符串s输入: AaaaBBb123CCccccd,则应输出结果: upper=6,lower=8 请改正程序中的错误,使程序能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include #include /********found********/ void fun(char *s, int a, int b) { while (*s) { /********found********/ if (*s>=’A’ && *s<=’Z’) a++; /********found********/ if (*s>=’a’ && *s<=’z’) b++; s++; } } main() { char s[100]; int upper = 0, lower = 0; printf("\nPlease a string : "); gets(s); fun(s, &upper, &lower); printf("\n upper=%d lower=%d\n", upper, lower); } 第1处: void fun (char *s,int a,int b)应改为void fun(char *s,int *a,int *b) 第2处: a++;应改为(*a)++; 第3处: b++;应改为(*b)++; 编程题 请编写一个函数void fun(char*tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次存放在pp所指数组中。 例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000 注意: 部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: # include # include void fun(char *tt, int pp[]) { } main() { char aa[1000]; int bb[26], k; FILE *out; printf("\nPlease enter a char string: "); scanf("%s",aa); fun(aa,bb); for(k=0;k<26 ; k++) printf("%d",bb[k]); printf("\n"); fun("a bosom friend afar brings a distant land near", bb); out = fopen("out.dat", "w"); for (k = 0; k < 26; k++) fprintf(out, "%d\n", bb[k]); fclose(out); } 答案是: void fun(char *tt,int pp[]) { int I; for(i=0;i<26;i++) pp[i]=0; while(*tt) {switch(*tt) { case ’a’: pp[0]++;break; case ’b’: pp[1]++;break; case ’c’: pp[2]++;break; case ’d’: pp[3]++;break; case ’e’: pp[4]++;break; case ’f’: pp[5]++;break; case ’g’: pp[6]++;break; case ’h’: pp[7]++;break; case ’i’: pp[8]++;break; case ’j’: pp[9]++;break; case ’k’: pp[10]++;break; case ’l’: pp[11]++;break; case ’m’: pp[12]++;break; case ’n’: pp[13]++;break; case ’o’: pp[14]++;break; case ’p’: pp[15]++;break; case ’q’: pp[16]++;break; case ’r’: pp[17]++;break; case ’s’: pp[18]++;break; case ’t’: pp[19]++;break; case ’u’: pp[20]++;break; case ’v’: pp[21]++;break; case ’w’: pp[22]++;break; case ’x’: pp[23]++;break; case ’y’: pp[24]++;break; case ’z’: pp[25]++;break; } tt++; } } 第5套 填空题 给定程序的功能是求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注: 圆面积公式为: S=πR,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值: 19.527,输出为: S=598.950017。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 试题程序: #include doublefun(doubler) { return3.14159*___1___/2.0; } main() { double x; printf("Enter x: "); scanf("%lf",___2___); printf("s=%lf\n",fun(___3___)); } 第1处填空: r*r 第2处填空: &x 第3处填空: x 改错题 假定整数数列中的数不重复,并存放在数组中。 下列给顶程序中,函数fun的功能是删除数列中值为x的元素,同时将其他元素前移。 N中存放的是数列中元素的个数。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 100 上机
![提示](https://static.bdocx.com/images/bang_tan.gif)