C语言经典100题_(二级)
全国计算机等级考试二级C语言100题

1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2:第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0)&& i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案: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<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中.答案: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]++;b reak;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[12]++;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:第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。
计算机二级考试C语言上机试题(100题)

1.程序填空题在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。
下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。
例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <conio.h>#include <stdio.h>void fun(___1___,int n){double count=0.0;double average=0.0;int i=0;for(i=0;i<n;i++)___2___;average=___3___;for(i=0;i<n;i++)if(a[i]<average){if(i%5==0)printf("\n");printf("%d,",a[i]);}}main(){int a[1000];int i=0;printf("\nPlease enter datas(end with 0):");do{scanf("%d",&a[i]);}while(a[i++]!=0);fun(a,i-1);}【答案】(1) int a[] (2)count+=a[i]或count=count+a[i] (3)count/n2.程序修改题给定程序中,函数fun的功能是:根据整型形参m,计算如下公式的值:y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)例如:若m中的值为5,则应输出1.463611。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include <stdio.h>double fun(int m){double y=1.0;int I;/**********found**********/for(i=2;i<m;i++)/**********found**********/y+=1/(i*i);return(y);}main(){int n=5;printf("\nThe result is %lf\n", fun(n));}【答案】(1)将for(i=2;i<m;i++) 改为:for(i=2;i<=m;i++)(2)将y+=1/(i*i); 改为:y +=1.0/(i*i);3.程序设计题函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
C语言经典100题_(二级)

C语言程序设计复习指导一、程序设计题1、多项式求和(积)例1:3!+5!+7!+...+N!,求直到S>=680000为止的奇数N。
(N=11)main(){int i,j;long s,t=0;for(i=3;;i=i+2){s=1;for(j=1;j<=i;j++)s=s*j;t=t+s;if(t>=680000)break;}printf("%d",i);}例2:请编程计算1-1/2+1/3-1/4+1/5-...+1/99。
(精确到小数点后3位)。
(0.698)main(){int i,t=1;float s=0;for(i=1;i<=99;i++){s=s+1.0*t/i;t=-t;}printf("%.3f",s);getch();}例3:1+1/3+1/9+1/27…+1/n>1.489时最小的n。
(n=81) main(){int i;float s=0;for(i=1;;i=i*3){s=s+1.0/i;if(s>1.489)break;}printf("%d",i);getch();}例4:求4*(1-1/3+1/5-1/7+…)的值,直到最后一项的绝对值小于10的负6次方为止。
(3.141594)#include "math.h"main(){long i,t=1;float s=0;for(i=1;fabs(1.0*t/i)>=0.000001;i=i+2){s=s+1.0*t/i;t=-t;}printf("%f",4*s);getch();}2、穷举法的应用例1:百钱百鸡问题。
例2:大作业本单价4元,中作业本单价2元,小作业本单价1元,当天共卖出大中小作业本30本,每种至少卖出1本,金额100元,问大中小作业本共有几种组合情况。
c语言二级考试题库及详解答案

c语言二级考试题库及详解答案C语言二级考试题库及详解答案一、选择题1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. 3numberD. variable#答案:B2. C语言中,整型变量int所占的字节数是:A. 1字节B. 2字节C. 4字节D. 8字节答案:C(注:实际字节数可能因编译器和平台而异,但通常为4字节)3. 下列哪个不是C语言的控制语句?A. ifB. switchC. forD. goto答案:B(注:switch也是C语言的控制语句,此题有误)二、填空题1. 在C语言中,若要定义一个整型数组,可以使用以下语法:___________。
答案:int array_name[array_size];2. C语言中,用于计算两个数的乘积的运算符是:___________。
答案:*三、简答题1. 简述C语言中数组和指针的区别。
答案:数组是一种数据结构,用于存储相同类型的元素集合。
指针是一个变量,它存储了另一个变量的内存地址。
数组名可以作为指针使用,但数组本身不是指针。
数组的大小在定义时确定,而指针可以指向不同大小的内存块。
2. 解释C语言中的递归函数。
答案:递归函数是一种函数,它在执行过程中调用自己。
递归函数通常用于解决可以分解为相似子问题的问题。
递归函数必须有一个明确的终止条件,以避免无限递归。
四、编程题1. 编写一个C语言程序,实现求1到100的和。
答案:```c#include <stdio.h>int main() {int sum = 0, i;for(i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum);return 0;}```2. 编写一个C语言函数,实现字符串反转。
答案:```cvoid reverseString(char *str) {int len = 0;while(str[len] != '\0') {len++;}for(int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - 1 - i];str[len - 1 - i] = temp;}}```五、论述题1. 论述C语言中函数的作用和重要性。
计算机二级c语言编程100题

#include <stdio.h>#include <conio.h>void fun(char *a,char *h,char *p){char b[81],*x;int i=0,j=0;x=a;while (x<h) {b[j]=*x;x++;j++;}while (h<=p)if (*h!='*') {b[j]=*h;j++;h++;}else h++;p++;while (*p) {b[j]=*p;j++;p++;}b[j]='\0';j=0;while (b[j]){ a[i]=b[j];i++;j++;}a[i]='\0';}main(){ char s[81],*t,*f;printf("Enter a string:\n");gets(s);t=f=s;while(*t) t++;t--;while (*t=='*') t--;while (*f=='*') f++;fun(s,f,t);printf("The string after deleted:\n");puts(s);NONO();}2#include <stdio.h>#include <math.h>double fun ( double eps){int n=0;double down=1,up=1;double one ,pi=0;one = (double)up/(double)down;while(one>=eps) {pi+=one;n++;up=up*n;down=down*(2*n+1);one=(double)up/(double)down;}return pi*2;}main( ){ double x;printf("Input eps:") ;scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); NONO();}3#include <stdio.h>char *fun ( char *s, char *t){int first=0,second=0;char *p,*q;p=s;q=t;while(*p++!='\0')first++;while(*q++!='\0')second++;if(first==second)return s;else if (first>second)return s;elsereturn t;}main( ){ char a[20],b[10];printf("Input 1th string:") ;gets( a);printf("Input 2th string:") ;gets( b);printf("%s\n",fun (a, b ));NONO ();}4#include <stdio.h>#include <conio.h>void fun(char *a,int n){ char b[81];int i=0,j=0,s=0,k;while (a[i]=='*') {s++;i++;}{ for (k=0;k<n;k++){b[j]='*';j++;}while (a[i]){b[j]=a[i];j++;i++;}b[j]='\0'; i=0;j=0;while (b[j]){ a[i]=b[j];i++;j++;}a[i]='\0';}}main(){ char s[81];int n;printf("Enter a string:\n");gets(s);printf("Enter n: ");scanf("%d",&n);fun(s,n);printf("The string after deleted:\n");puts(s);NONO();}5#include <stdio.h>float fun ( float *a , int n ){int i;float average;double sum=0;for(i=0;i<n;i++)sum+=a[i];average=(float)sum/n;return average;}main(){ float score[30]={90.5, 72, 80, 61.5, 55}, aver; aver = fun( score, 5 );printf( "\nAverage score is: %5.2f\n", aver); NONO ( );}6#include <stdio.h>#define N 8typedef struct{ char num[10];double s[N];double ave;void fun(STREC *p){ int i;double aver=0;for (i=0;i<N;i++){aver=aver+(*p).s[i]; }(*p).ave=aver/N;}main(){ STREC s={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};int i;fun(&s);printf("The %s's student data:\n",s.num);for(i=0;i<N;i++)printf("%4.1f\n",s.s[i]);printf("\nave=%7.3f\n",s.ave);NONO();}7#include <stdio.h>#define N 12typedef struct{ char num[10];double s;} STREC;double fun(STREC *a,STREC *b,int *n){ int i,j;double aver=0;*n=0;for (i=0;i<N;i++)aver=aver+a[i].s;aver=aver/N;for (i=0;i<N;i++)if (a[i].s>=aver){b[*n].s=a[i].s;for (j=0;j<10;j++)b[*n].num[j]=a[i].num[j];*n=*n+1;}return (aver);}main(){ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};STREC h[N];FILE *out;int i,n;double ave;ave=fun(s,h,&n);printf("The %d student data which is higher than %7.3f:\n",n,ave);for(i=0;i<n;i++)printf("%s %4.1f\n",h[i].num,h[i].s);printf("\n");out=fopen("out12.dat","w");fprintf(out,"%d\n%7.3f\n",n,ave);for (i=0;i<n;i++)fprintf(out,"%s %4.1f\n",h[i].num,h[i].s);fclose(out);}8#include <stdio.h>#define N 16typedef struct{ char num[10];int s;} STREC;void fun(STREC a[]){int i,j,p,t,k;char h;for (i=0;i<N;i++){ p=i;for (j=i+1;j<N;j++)if (a[p].s<a[j].s) p=j;if (p!=i){t=a[p].s;a[p].s=a[i].s;a[i].s=t;for (k=0;k<10;k++){h=a[p].num[k];a[p].num[k]=a[i].num[k];a[i].num[k]=h;}}}}main(){ STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA 08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",91 },{"GA017",64},{"GA018",64},{"GA016",72}};int i;FILE *out;printf("The data after sorted:\n");for(i=0;i<N;i++){ if((i)%4==0)printf("\n");printf("%s %4d",s[i].num,s[i].s);}printf("\n");out=fopen("out16.dat","w");for (i=0;i<N;i++){ if((i)%4==0 && i) fprintf(out,"\n");fprintf(out,"%s %4d",s[i].num,s[i].s);}fprintf(out,"\n");fclose(out);}9/******本答案只作参考。
计算机二级c语言上机考试100题

题目1:下列程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx。
请编写函数num(int m,int k,int xx[])实现函数的要求,最后调用函数readwriteDAT()把结果输出到文件out.dat中。
例如:若输入17,5,则应输出:19,23,29,31,37。
注意:部分源程序已给出。
请勿改动主函数main()和函数readwriteDAT()的内容。
--------------类型:素数。
void num(int m,int k,int xx[]){int data=m+1;int half,n=0,I;while(1){half=data/2;for(I=2;I<=half;I++)if(data%I==0)break;if(I>half){xx[n]=data;n++;}if(n>=k)break;data++;} }题目2:已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是: 如果四位数各位上的数字均是0或2或4或6或8, 则统计出满足此条件的个数cnt, 并把这些四位数按从大到小的顺序存入数组b中。
最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------void jsVal(){int bb[4];int I,j,k,flag;for (I=0;I<200;I++){bb[0]=a[I]/1000; bb[1]=a[I]%1000/100;bb[2]=a[I]%100/10; bb[3]=a[I]%10;for (j=0;j<4;j++){if (bb[j]%2==0)flag=1;else{flag=0;break;}}if (flag==1){ b[cnt]=a[I];cnt++;} }for(I=0;I<cnt-1;I++)for(j=I+1;j<cnt;j++)if (b[I]<b[j]){k=b[I];b[I]=b[j];b[j]=k;}}题目3:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.例如:原文:You can create an index on any field.you have the correct record.结果: n any field.You can create an indexrd.yu have the crrect rec原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.-------------------类型:字符串(单词)的倒置和删除。
全国计算机二级C语言程序设计题((100全中必过)
目录题目一“回文”字符串 (3)题目二迭代法求给定多项式的值 (4)题目三迭代法求给定方程的根 (5)题目四二维数组三角元素操作1 (6)题目四二维数组三角元素操作2 (7)题目四二维数组三角元素操作3 (9)题目五二维数组元素求最值 (10)题目六二维数组周边元素1 (11)题目六二维数组周边元素2 (12)题目七二维数组转一维数组1 (13)题目七二维数组转一维数组2 (14)题目七二维数组转一维数组3 (15)题目七二维数组转一维数组4 (16)题目八结构体数组排序1 (17)题目八结构体数组排序2 (18)题目八结构体数组排序3 (19)题目八结构体数组排序4 (20)题目九结构体数组求最值1 (22)题目九结构体数组求最值2 (23)题目九结构体数组求最值3 (23)题目九结构体数组求最值4 (24)题目十结构体数组筛选 (25)题目十一结构体数组字符串比较 (26)题目十二矩阵操作1 (27)题目十二矩阵操作2 (28)题目十三类似素数判断1 (29)题目十三类似素数判断2 (30)题目十四累加累乘求和1 (30)题目十四累加累乘求和2 (31)题目十四累加累乘求和3 (31)题目十四累加累乘求和4 (32)题目十四累加累乘求和5 (32)题目十四累加累乘求和6 (33)题目十四累加累乘求和7 (34)题目十四累加累乘求和8 (35)题目十四累加累乘求和9 (35)题目十四累加累乘求和10 (36)题目十四累加累乘求和11 (37)题目十四累加累乘求和12 (37)题目十四累加累乘求和13 (38)题目十四累加累乘求和14 (39)题目十四累加累乘求和15 (39)题目十四累加累乘求和16 (40)题目十五链表2 (42)题目十六删除整数位某数位 (43)题目十七删除字符串中指定字符1 (44)题目十七删除字符串中指定字符2 (45)题目十七删除字符串中指定字符3 (45)题目十七删除字符串中指定字符4 (46)题目十七删除字符串中指定字符5 (47)题目十七删除字符串中指定字符6 (47)题目十七删除字符串中指定字符7 (48)题目十七删除字符串中指定字符8 (48)题目十七删除字符串中指定字符9 (49)题目十七删除字符串中指定字符10 (50)题目十七删除字符串中指定字符11 (50)题目十七删除字符串中指定字符12 (51)题目十七删除字符串中指定字符13 (52)题目十七删除字符串中指定字符14 (53)题目十七删除字符串中指定字符15 (54)题目十七删除字符串中指定字符16 (54)题目十七删除字符串中指定字符17 (55)题目十七删除字符串中指定字符18 (56)题目十八数字字符串转整数1 (57)题目十八数字字符串转整数2 (58)题目十九素数判定1 (58)题目十九素数判定2 (59)题目十九素数判定3 (60)题目二十统计问题 (61)题目二十一小数位操作 (62)题目二十二一维数组或字符串排序1 (62)题目二十二一维数组或字符串排序2 (63)题目二十二一维数组元素的筛选1 (64)题目二十二一维数组元素的筛选2 (64)题目二十二一维数组元素的筛选3 (65)题目二十二一维数组元素的筛选4 (66)题目二十二一维数组元素的筛选5 (67)题目二十二一维数组元素的筛选6 (67)题目二十二一维数组元素的筛选7 (68)题目二十二一维数组元素的筛选8 (69)题目二十二一维数组元素的筛选9 (70)题目二十三一维数组元素筛选 (70)题目二十五一维数组最值求解1 (71)题目二十五一维数组最值求解2 (72)题目二十五一维数组最值求解3 (73)题目二十六移动问题1 (73)题目二十七整数合并1 (75)题目二十七整数合并2 (75)题目二十七整数合并3 (76)题目二十七整数合并4 (76)题目二十七整数合并5 (77)题目二十七整数合并6 (77)题目二十七整数合并7 (78)题目二十七整数合并8 (78)题目二十八字符串长度比较1 (78)题目二十八字符串长度比较2 (79)题目二十九字符串的逆置 (80)题目三十字符串计数 (81)题目三十一字符串连接1 (82)题目三十一字符串连接2 (82)题目三十一字符串连接3 (83)题目三十二字符串中指定字符查找 (84)题目三十三字母大小的判断及转换 (84)题目一“回文”字符串3.请编写函数fun,该函数的功能是:判断字符串是否为回文,若是,则函数返回1,主函数中输出"YES",否则返回0,主函数中输出"NO"。
二级C语言100题归类整理
24.编写函数fun,其功能是:将a、b中的两个两位正整数合并成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2415。
*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;35.编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次放在c 数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;44.函数fun的功能是:将a、b的两个两位正整数合并成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c 的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12,调用该函数后c=1425。
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;46.编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。
合并的方式是:将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,当a=45,b=12时,调用该函数后c=2514。
*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;51.编写函数fun,其功能是:将a、b两个两位正整数合并成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
例如,当a=45,b=12,调用该函数后c=4251。
*c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;53.编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。
全国计算机二级C语言上机考试100题
1.编写函数fun,如,a=45,b=12时,调用该函数后,c=4152.*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10)填空:1.STYPE 2.FILE 3.fp 改错:1.for(i=0;i<=s1;i++) 2.t[s1]=’\0’改为t[2*s1]=’\0’.编写函数fun,如,a=45,b=12,调用后,c=1524.*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);填空:1,*fw 2.str 3.str 改错1.void fun (long s, long *t3>合并整a,b;a的十位和个位放在c的个位和百位上,b的十位和各位在c的十位和千位*c=(b%10)*1000+(a%10)*100+(b%10)*10+a/10;填空 1>ft 2>fclose 3>fname改错 1>for(i=j+i;i<n;i++) 2>p=i4>合并整a,b;a的十位和位个放在c的十位和千位上,b的十位和个位在c的十位百和个位*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);填空1>"r" 2>fs 3>ft改错1>if(d%2==0) 2>s/=10;5>计算n门课程的均分,返回结果int i;float ave=0.0;for(i=0;i<n;i++) ave+=a[i]; ave=ave/n;return ave;填空1>x 2>p 3>s 改错1>long k=1; 2>num/=10;6>比较两个字符串,返回长的,相等返回前者int i; char *p=s,*q=t; int n=0,m=0;while(*p) {n++; p++;} while(*q){m++; q++;} if(n>=m) p=s; else p=t;return p;7>求到能被7或11整除的整数,通过n返回个数int i,j=0;*n=0; for(i=1;i<=m;i++)if(i%7==0||i%11==0) {a[j]=i; j++;}*n=j; 填空1>q 2>nex 3>next改错1>p=j; 2>p=i;8>将ss所指字符串中下标为奇数的字母换为大写int i; for(i=1;i<strlen(ss);i+=2){if(ss[i]>='a'&&ss[i]<='z')ss[i]-=32];}填空1>0或NULL 2>n 3>head,ch改错1>for(i=0,t=0;p[i];i++) 2>c[t]='\0';9>保留下标和ASCII值为偶数的字符,其余删除int i,j=0; for(i=0;i<strlen(s);i+=2)if(s[i]%2==0) t[j++]=s[i]; t[j]='\0';填1>*n2>next3>head 改1>a=NULL;2>if(*r==*p)10>删除s中下标为偶数的字符,剩余放在t中int i,j=0; for(i=1;i<strlen(s);i+=2)t[j++]=s[i]; t[j]='\0'11>删除s所指字符串中ASCII值为偶数的字符,其余放在t所指数组中 int i,j=0;for(i=0;i<strlen(s);i++) if(s[i]%2)t[j++]=s[i]; t[j]=0;填空1>STU 2>std[i].num 3>std[i]改错1>r++; p++ 2>if(*r=='\0')12>学生数据在结构体a中,找最高分用形参指针返回int i,max=a[0].s,j=0; for(i=1;i<N;i++)if(max<a[i].s) {j=i; max=a[i].s} *s=a[j]; 填空1>std[i].year 2>std[i] 3>n改错1>IsPrime(int n)2>if(!(n%i))13>给数组左下角元素乘n int i,j;for(i=0;i<n;i++) for(j=0;j<=i;j++)a[i][j]*=n;填空1>STU 2>score[i] 3>&std改错1>if(k>0) 2>else if(k==0)14>使数组坐下三角元素为零 int i,j;for(i=0;i<N;i++) for(j=0;j<=i;j++)a[i][j]=0; 填空1>*std 2>PERSON 3>std改错1>int i,k,q; 2>pt[i]=str[k][i];15>求出二维数组每列最小元素并依次放入pp数组中int i,j,min,k; for(i=0;i<N;i++){min=tt[0][i];k=0; for(j=1;j<M;j++)if(min>tt[j][i]){min=tt[j][i]; k=j; }pp[i]=tt[k][i];}填1>*std2>std[i].age3> 改1>void fun(int *a,int *b) 2>t=*b;*b=*a;*a=t;16>函数求出w的低n-1位的数作为函数返回值unsigned t,s=0,s1=1,p=0; t=w; while(t>10) {if(t/10) p=t%10; s=s+p*s1; s1=s1*10t=t/10;} return s;填空1>tt2>tt.score[i]3>std 改错1>m=i; 2>if(a[k]>a[m])m=k;17>把s所指字符串逆置 char b[N]; int i=0,j; memset(b,0,N); for(j=strlen(s)-1;j>=0;j--)b[i++]=s[j]; strcpy(s,b);填1>i+12>k=j3>t 错1>void fun(char *str,char ch) 2>if(*str!=ch) 3>str[1]='\0';18>从s所指的字符串中删除给定字符char *p=s; int i=0; while(*p){if(*p !=c)s[i++]=*p; p++;} s[i]='\0';填空1>k 2>len 3>ss[i][j]改错1>result*=n--; 2>return result;19>对7个字符的串除首尾字符外按ASCII码降序排列char t; int i,j; for(i=1;i<num-2;i++)for(j=i+1;j<num-1;j++) if(s[i]<s[j]){t=s[i]; s[i]=s[j]; s[j]=t; }填空1>ss[i] 2>n+j 3>1改错1>if(*p=='') 2>*(p-1)=toupper(*(p-1));20>统计长为2的字符串再另一串中出现的次数int cnt=0; char *p=str, *q; while(*p){q=strstr(p,substr); if(q==NULL) break;p=q+strlen(substr); cnt++} return cnt;填1>[N] 2>len 3>*n=len 改1>t+=1.0/i; 2>return t;21>将1到m的非素数存入xx数组中,用k传回其个数int i,j; int t=0; for(i=2;i<m;i++) {j=2; while(j<i) {if(i%j==0) {xx[t]=i;t++; break; } j++; } *k=t; }填空1>M 2>< 3>k改错1>if(('a'<=tt[i])&&(tt[i]<='z')) 2>tt[i]-=32;22>指出ss字符串中指定字符的个数并返回此值int cnt=0; char *p=ss; while(*p) {if(*p==c)cnt++; p++; } return cnt;填空1>j++ 2>s[i]=t1[i] 3>j改错1>for(j=i+1;j<6;j++) 2>*(pstr+i)=*(pstr+j);23>计算矩阵A加上A的转置,存放在矩阵B中int c[3][3]; int i,j; for(i=0;i<3;i++)for(j=0;j<3;j++) { c[i][j]=a[j][i];b[i][j]=a[i][j]+c[i][j]; }填空1>&& 2>0 3>s[j]改错1>for(i=2;i<=m;i++) 2>y+=1.0/(i*i);24>秋1到1000能被7或11整除但不能同时整除的数int i; *n=0; for(i=7;i<1000;i++)if(((i%7)==0||(i%11)==0)&&(i%77)!=0) a[(*n)++]=i;填1>s[i] 2>'9' 3>*t=n 改1>t=*x; *x=y; 2>return(t); 25>统计tt中26个字母出现的次数,并依次放在pp中char *p=tt; int i; for(i=0;i<26;i++)pp[i]=0;while(*p){ if(*p>='a'&&*p<='z')pp[*p-'a']+=1;p++;}填空1>1 2>s[k] 3>c 改错1>long s=0,t=0; 2>t=t/10;26.输入字符串:world,然后输入3,则输出结果为:Int p,m=0; for(p=0;p<LEN;p++) if(p!=n) {b[m]=a[p]; m++;} b[m]=’\0’;填空: 1.t=i 2. i 3.0改错:1.while(fabs(t)>=num) 2.t=s/n;27根据公式计算s计算结果返回.如, n的值为11时,函数值为1.833333 int k; float str=1.0,sum=1.0;for(k=2;k<=n;k++) {sum=sum+k; str=str+1/sum;} return str;填空:1.0 2.0 3.c 改错:1.double sum=0.0; 2.sum/=c28.利用简单迭代方法求方程:cox(x)-x=0的一个实根。
计算机二级C语言上机题库及答案(100套)
~计算机二级c 语言上机题库及答案内部资料,切勿外传!.第1 套填空题请补充FUN 函数,FUN 函数的功能是求10 的阶乘。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在fun 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>long fun(int n){if ( 1 )return (n*fun( 2 ));return 3 ;}main(){printf("10!=%ld\n", fun(10));}第1 处填空:n>1 或1<n第2 处填空:n-1第3 处填空:1 或11 或1L改错题下列给定程序的功能是:读入一个整数K(2〈=K〈=10000),打印它的所有因子(即所有为素数的因子)。
例如,若输入整数2310,则应输出:2、3、5、7、11。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <conio.h>#include <stdio.h>/********found********/IsPrime(int n);{int i, m;m = 1;/********found********/for (i=2; i<n; i++)if !(n%i){m = 0;break;}return(m);}main(){int j, k;printf("\nplease enter an integer number between 2and 10000:");scanf("%d", &k);printf("\n\nThe prime factor(s) of %d is(are):", k);for (j=2; j<k; j++)if ((!(k%j)) && (IsPrime(j)))printf(" %4d,", j);printf("\n");}第1 处:Isprime(int n);应改为Isprime(int n)第2 处:if !(n%i)应该为if(!(n%i))编程题M 个人的成绩存放在score 数组中,请编写函数fun,它的功能是:返回低于平均分的认输,并将低于平均分的分数放在below 所指的数组中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计复习指导一、程序设计题1、多项式求和(积)例1:3!+5!+7!+...+N!,求直到S>=680000为止的奇数N。
(N=11)main(){int i,j;long s,t=0;for(i=3;;i=i+2){s=1;for(j=1;j<=i;j++)s=s*j;t=t+s;if(t>=680000)break;}printf("%d",i);}例2:请编程计算1-1/2+1/3-1/4+1/5-...+1/99。
(精确到小数点后3位)。
main(){int i,t=1;float s=0;for(i=1;i<=99;i++){s=s+*t/i;t=-t;}printf("%.3f",s);getch();}例3:1+1/3+1/9+1/27…+1/n>时最小的n。
(n=81)main(){int i;float s=0;for(i=1;;i=i*3){s=s+i;if(s>break;}printf("%d",i);getch();}例4:求4*(1-1/3+1/5-1/7+…)的值,直到最后一项的绝对值小于10的负6次方为止。
#include ""main(){long i,t=1;float s=0;for(i=1;fabs*t/i)>=;i=i+2){s=s+*t/i;t=-t;}printf("%f",4*s);getch();}2、穷举法的应用例1:百钱百鸡问题。
例2:大作业本单价4元,中作业本单价2元,小作业本单价1元,当天共卖出大中小作业本30本,每种至少卖出1本,金额100元,问大中小作业本共有几种组合情况。
(3) main(){int a,b,c,s=0;for(a=1;a<=30;a++)for(b=1;b<=30-a;b++){c=30-a-b;if(a+b*2+c*4==100) s++;}printf("\n%d",s);}3、迭代法的应用例1:已知一个数列的前三个数是1,2,3,从第四个数起,每个数都是前三个数之和。
下面的程序是求出该数列的第15个数。
程序可能有错误,如有错误请改正,将运算结果填入文本框。
(4841)main(){int a[15]={1,2,3},i=4;while (i=15){a[i]=a[i-1]+a[i-2]+a[i-3];i=i+1;}printf("%d",a[15]);}4、拆数技巧的应用例1:计算各位数字之和等于30的4位偶数的个数。
例2:回文数。
5、求素数、完数、水仙花数等。
例:已知函数f是判断素数的函数。
编写程序计算500-1000之间素数的和。
(54591)f(long n){long i,j=n/2;if(n<2)return 0;for(i=2;i<=j;i++)if(n%i==0)return 0;return 1;}main(){long i,s=0;for(i=500;i<=1000;i++)if(f(i)) s=s+i;printf("%ld",s);getch();}二、选择题习题三一、二 2、三 3习题四一、二习题五一、二、三 1、2、4、7习题六一、二习题七一已知宏定义#define SQ(x) x*x,执行语句printf("%d",10/SQ(3));后的输出结果是____。
A) 1 B) 3 C) 9 D) 10【1.1】以下不正确的C语言标识符是____。
A) int B) a_1_2 C) ab1exe D) _x【】以下是正确的C语言标识符是____。
A) #define B) _123 C) %d D) \n【】下列四组字符串中都可以用作C语言程序标识符的一组是____。
A) print B) i\am C) Pxq D) str_l_3d one_half My->book Cppoodb start$it line# powaBc 3pai while【】下面各选项组中,均是C语言关键字的组是____。
A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type【】下列不属于C语言关键字的是_____。
A) default B) register C) enum D) external【】C语言程序从main()函数开始执行,所以这个函数要写在____。
A) 程序文件的开始 B) 程序文件的最后C) 它所调用的函数的前面 D) 程序文件的任何位置【】下列关于C语言的叙述错误的是____A) 大写字母和小写字母的意义相同B) 不同类型的变量可以在一个表达式中C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型D) 同一个运算符号在不同的场合可以有不同的含义【】在C语言中,错误的int类型的常数是____。
A) 32768 B) 0 C) 037 D) 0xAF【】执行语句 printf("%x",-1);屏幕显示____。
A) -1 B) 1 C) -ffff D) ffff【】已知 long i=65539;执行语句printf("%d",i);屏幕显示____。
A) 65539 B) -3 C) 3 D) 程序不能执行【】在C语言中,整数-8在内存中的存储形式是____。
A) 1111 1111 1111 1000 B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111【】C语言中字符型(char)数据在内存中的存储形式是____。
A) 原码 B) 补码 C) 反码 D) ASCII码【】将字符g赋给字符变量c,正确的表达式是____。
A) c=\147 B) c="\147" C) c='\147' D) c='0147'【】下列转义字符中错误的一个是____。
A) '\000' B) '\0014' C) '\x111' D) '\2'【】将空格符赋给字符变量c,正确的赋值语句是____。
A) c='\0' B) c=NULL C) c=0 D) c=32【】已知:char a='\70';则变量a中____。
A) 包含1个字符 B) 包含2个字符 C) 包含3个字符D) 说明非法【】字符串"\"EOF\n=-\61\""的长度是____。
A) 8 B) 9 C) 14 D) 非法字符串【】字符串""的长度是____。
A) 0 B) 1 C) 2 D) 非法字符串【】已知:char a;int b;float c;double d;执行语句"c=a+b+c+d;"后,变量c的数据类型是____。
A) int B) char C) float D) double【】温度华氏和摄氏的关系是: C=(5/9)(F-32)。
已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。
A) C=5/9(F-32) B) C=5*(F-32)/9C) C=5/9*(F-32) D) 三个表达式都正确【】逗号表达式"(a=3*5,a*4),a+15"的值是____。
A) 15 B) 60 C) 30 D) 不确定【】如果int a=1,b=2,c=3,d=4;则条件表达式"a<b?a:c<d?c:d"的值是____。
A) 1 B) 2 C) 3 D) 4【】为求出s=10!的值,则变量s的类型应当为____。
A) int B) unsiged C) long D) 以上三种类型均可【】已知int i=10;表达式"20-0<=i<=9"的值是____。
A) 0 B) 1 C) 19 D) 20【】已知int x=1,y;执行语句 y=++x>5&&++x<10; 后变量x 的值是____。
A) 1 B) 2 C) 3 D) 4【】为判断字符变量c的值不是数字也不是字母时,应采用下述表达式____。
A) c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122B) !(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122)C) c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122D) !(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122)【】已知 int a[3][2]={3,2,1};则表达式"a[0][0]/a[0][1]/a[0][2]"的值是____。
A) B) 1 C) 0 D) 错误的表达式【】已知 int x=1,y=1,z=1;表达式"x+++y+++z++"的值是____。
A) 3 B) 4 C) 5 D) 表达式错误【】用十进制表示表达式"12|012"的值是____。
A) 1 B) 0 C) 12 D) 14【】已知以下程序段____:int a=3,b=4;a=a^b;b=b^a;a=a^b;则执行以上语句后a和b的值分别是____。
A) a=3,b=4 B) a=4,b=3 C) a=4,b=4 D) a=3,b=3【】在位运算中,操作数每右移一位,其结果相当于____。
A) 操作数乘以2 B) 操作数除以2 C) 操作数除以16 D) 操作数乘以16【】已知 char a=222;执行语句a=a&052;后,变量a的值是____。
A) 222 B) 10 C) 244 D) 254【】已知二进制数a是00101101,如果想通过整型变量b与a做异或运算,使变量a的高4位取反,低4位不变,则二进制数b的值应是____。