三级上机c语言100题
计算机三级上机C语言试题及答案

计算机三级上机C语言试题及答案2016年计算机三级上机C语言试题及答案2016年全国计算机等级考试分别是3月26日-29日、9月24日-27日和12月10日,依次为第45次、第46次和第47次考试。
其中3月份和9月份考试开考全部级别全部科目,12月份考试开考一、二级所有科目。
为了考生们能更加熟悉计算机三级考试C语言的试题,店铺特意为大家整理了计算机三级C语言考试题及答案,希望能帮助大家顺利通过考试!★题目1请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
#include#includevoid readwriteDat();int isP(int m){int i;for(i=2;i if(m % i==0)return 0;return 1;}void num(int m,int k,int xx[]){ int s=0;for(m=m+1;k>0;m++)if(isP(m)) { xx[s++]=m; k--;}}main(){int m,n,xx[1000];clrscr();printf("nPlease enter two integers:");scanf("%d%d",&m,&n);num(m,n,xx);for(m=0;m printf("%d ",xx[m]);printf("n");readwriteDat();}void readwriteDat(){int m,n,xx[1000], i;FILE *rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d %d",&m,&n);num(m,n,xx);for(m=0;m }fclose(rf);fclose(wf);}★ 题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
全国计算机等级考试三级C语言上机100题答案word版本

全国计算机等级考试三级C语言上机100题一.排序类:1.已知数据文件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.DA T中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>#define MAX 200int a[MAX], b[MAX], cnt = 0 ;void jsVal(){int i,j,t;for(i=0;i<MAX;i++){t=a[i];if(t%2+t/10%2+t/100%2+t/1000%2==0)b[cnt++]=t;}for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}} void readDat(){int i ;FILE *fp ;fp = fopen("in.dat", "r") ;for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ; fclose(fp) ;}void main(){int i ;readDat() ;jsVal() ;printf("满足条件的数=%d\n", cnt) ;for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;printf("\n") ;writeDat() ;}writeDat(){FILE *fp ;int i ;fp = fopen("out.dat", "w") ;fprintf(fp, "%d\n", cnt) ;for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ;}2. 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b 中。
三级C语言 上机类型题

三级C语言上机类型题选择结构程序设计大数小数换位置:#include <stdio.h>void main(){int a,b,t;scanf("%d%d",&a,&b);while(a!=0 && b!=0){if(a<b){t=a;a=b;b=t;}printf("max=%d,min=%d\n",a,b);scanf("%d%d",&a,&b);}}#include<stdio.h>void main(){int x,y;printf("enterx&y:\n");scanf("%d%d",&x,&y);printf("%d,%d\n",x,y);if(x>y)printf("%d",x);if(x<y)printf("%d",y);if(x==y)printf("%d",x);}#include<stdio.h>void main(){int x,y;printf("enterx&y");scanf("%d%d",&x,&y);printf("%d,%d\n",x,y);if(x>y)printf("max=%d",x);elseprintf("max=%d\n",y);}算成绩等级#include<stdio.h>void main(){int s;printf("enter score");scanf("%d",&s);printf("%d\n",s);switch(s/10){case 10:case 9: printf("A\n");break;case 8:printf("B\n");break;case 7:printf("C\n");break;case 6:printf("D\n");break;default :printf("/n");}}循环结构程序设计累加阶乘一个性质累加(while )#include<stdio.h>void main(){ int i,sum;i=1;sum=0;while(i<=100){sum=sum+i;i++;printf("sum=%d",sum);}}累加(for)#include<stdio.h>void main()int i,sum;sum=0;for(i=1;i<=100;i++){sum=sum+i;printf("sum=%d",sum);}}判断一个数是否为素数#include<stdio.h>void main(){int i,x;scanf("%d",&x);for(i=2;i<x;i++){if(x%i==0) break;}if(x==i)printf("yes\n");else printf("no\n");}编写程序求1-3+5-7…….-99+101的值#include<stdio.h>void main(){int x,y,sum1,sum2,sum;sum1=0;sum2=0;printf("*************\n");for(x=3;x<100;x=x+4){sum1=sum1+x;}printf("sum1=%d\n",sum1);printf("*************\n");for(y=1;y<101;y=y+4){sum2=sum2+y;}printf("sum2=%d\n",sum2);sum=sum2-sum1;printf("sum=%d\n",sum);}数组和指针输出杨辉三角#include<stdio.h>#define N 10main(){int i,j,s[N][N],n=7;for(i=0;i<n;i++){s[i][i]=1;s[i][0]=1;} /* 这里构造了竖着的1,和斜着的1*/for(i=2;i<n;i++)for(j=1;j<i;j++) /* 即二行一列,三行一列二列,四行一列两列三列....i取一行,j取1<j<i的列数,*/s[i][j]=s[i-1][j-1]+s[i-1][j]; /*所指的数等于上方和左上方的两个数相加*/printf("outdata:\n");for(i=0;i<n;i++){for(j=0;j<=i;j++)printf("%6d",s[i][j]); 注意距离问题!printf("\n");}}11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1排序函数难必须掌握优化的选择排序,从小到大#include<stdio.h>#define num 6main(){int i,j,p,t,a[6]={5,7,4,2,8,6};for(i=0;i<num;i++)printf("%d",a[i]); /*输出所有的数*/putchar('\n');for(i=0;i<5;i++){p=i; /*i的值也就是P的值*/for(j=i+1;j<6;j++) /*这里体现出J的位置比i靠后*/if(a[p]>a[j]) p=j;/*因为后面比前面的小,只有先通过换个地址,才能使a[p]带着换走那个较小的数字*/if(p!=i) /* P、j的值肯定和i不一样,但此时a[p]已经成了较小的那个数字,通过换位置实现排列*/{t=a[i];a[i]=a[p];a[p]=t;}}for(i=0;i<num;i++)printf("%d",a[i]); /**/printf("\n");}排序函数(冒泡排序,从小到大)#include <stdio.h>#define num 6main(){int i,j,t,a[num]={5,7,4,2,8,6};for(i=0;i<num;i++)printf("%d",a[i]);putchar('\n');for(i=num-1;i>0;i--){for(j=0;j<i;j++){if(a[j+1]<a[j]){t=a[j+1];a[j+1]=a[j];a[j]=t;}}}for(i=0;i<num;i++)printf("%d\n",a[i]);}函数C程序设计函数调用求和#include<stdio.h>myadd(int*a,int*b){int sum;sum=*a+*b;return sum;}main(){int x,y,z;printf("enter x,y");scanf("%d%d",&x,&y);z=myadd(&x,&y);printf("%d+%d=%d",x,y,z);}函数调用比较大小#include<stdio.h>swap(int *x1,int*x2){int t ;t=*x1;*x1=*x2;*x2=t;}order(int*a,int*b){if(*a>*b)swap(a,b);}/*以上属于定义函数,一个是交换,一个是比较大小,第二个函数综合了第一个*/ main(){int x,y;printf("enterx,y\n");scanf("%d%d",&x,&y);printf("x=%d,y=%d\n",x,y);order(&x,&y); /*直接写上函数名称就可以调用*/printf("x=%d y=%d\n",x,y);}比较两个数的大小,并且输出最大的。
三级C语言南开100道分类提纲

一、素数: 1 34 55 64 66 821: 将大于整数m且紧靠m的k个素数存入数组xx传回34:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数55:求出300个四位数是素数的个数,并从小到大进行排序64:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数以及这些I之和66:计算500-800内素数的个数,按从大到小顺序计算其间隔加、减之和82:求出300个四位数是素数的个数,再求出所有满足此条件的四位数平均值pjz1以及不满足此条件的四位数平均值pjz2二、结构体操作: 7 13 38 12 32 42 31 47 61 99 60 757: 按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列13:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列38:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列12:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列32:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列42:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列31:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列47:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列61:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列99:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列60: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第二个数大于第一个数加第三个数的之和,存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列75: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第一个数大于第二个数加第三个数的和,存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i];if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}三、字符替换与移位: 8 36 56 62 98 95 96 18 37 97 10 73 11 63 16 10074 178: f(p)值小于等于32或大于130,则该字符不变36:f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变56:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变62:f(p)值小于等于32或其ASCII值是偶数,则该字符不变98:f(p)值小于等于32或其ASCII值是奇数,则该字符不变95:f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变96:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变18:原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变37:原字符是大写字母或计算后f(p)值小于等于32,则该字符不变97:原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变10:把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a 73:把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z 11:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a (指针)63:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后(指针)16:把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值74:把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符100:把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符17:第一个字符加第二个字符=新字符,最后逆排序strrev(xx[i]);四、字符串位置倒置: 33:把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放五、字符串单词倒置: 44:对行中以空格或标点符号为分隔的所有单词进行倒排.最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中六、字符串左右排序交换: 44 50 7144: 从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上50: 从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上71:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序,如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上七、字符串排序: 9 88 439: 对字符按从大到小的顺序进行排序88:对字符按从小到大的顺序进行排序43:对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序八、单词个数统计: 1919:统计一个长度为2的子字符串在另一个字符串中出现的次数九、Fibonacci数列: 2020: 求Fibonacci数列中大于t的最小的一个数while(fn<=t) {...} return fn;十、迭代方法求方程: 21 do{...}while(fabs(x0-x1)>=0.000001);十一、平方根: 2222: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s return sqrt(s);十二、实数运算: 2323: 求出N个实数的平均值aver,以及实数的整数部分之和sumint以及小数部分之和sumdec十三、完全平方数: 2424: 100至999中寻找符合条件的整数并依次从小到大存入数组中,它既是完全平方数,又是两位数字相同for(j=10;j*j<=i;j++) if(i==j*j&&(bw==sw||sw==gw||gw==bw)) bb[cnt++]=i; return cnt;十四、回文数: 25 ltoa(n,xy,10);25: 寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数十五、整数排序: 2 5 6 14 30 45 46 902: 把四位数各位上均是0或2或4或6或8的数从大到小的顺序存入数组b中5: 按每个数的后三位的大小进行升序排列,如果后三位的数值相等,按原先的数值进行降序排列6: 降序, 升序14: 如果该四位数连续大于该四位数以后的五个数且该数是奇数,把这些四位数按从小到大的顺序存入数组b中for(j=i+1;j<=i+5;j++) if(a[i]>a[j]&&a[i]%2) flag=1; else {flag=0;break;} 30: 小于偶数, 从小到大45: 大于该四位数以前偶数, 从大到小46: 大于奇数,且该数必须能被7整除,把这些四位数按从大到小的顺序存入数组b中for(j=i-5;j<i;j++) if(a[i]>a[j]&&a[i]%2&&a[i]%7==0) flag=1; else { flag=0;break;}90: 将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列.新序列中,比K1小的数都在K1的前面,比K1大的数都在K1的后面十六、整数统计运算: 26 70 40 65 91 94 92 7926: 求出正整数totNum个数以及这些数右移1位后产生的新数是偶数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz70: 求出正整数totNum个数以及这些数右移1位后产生的新数是奇数的数的个数totCnt和满足此条件的这些数(右移前的值)的算术平均值totPjz40: 求出正整数totNum个数以及这些数各位数字之和是偶数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz65: 求出正整数totNum个数以及这些数各位数字之和是奇数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz91: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组下标为偶数的元素值的算术平均值pj(保留2位小数)94: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)92: 200个整数,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)79: 求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a 中,并通过n返回这些数的个数(指针) if(i%7==0&&i%11||i%7&&i%11==0) a[(*n)++]=i;十七、整数各位数字运算: 68 15 78 69 85 77 89 27 53 48 54 49 80 81 87 6768: 200个四位数,如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中if(thou&&thou%2&&hun%2&&ten%2&&data%2)15: 200个四位数,若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中78: 200个四位数,若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中69: 200个四位数,把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(thou-hun-ten-data>=0&&a[i]%2) b[cnt++]=a[i];85: 200个四位数,把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(data-thou-hun-ten>=0&&a[i]%2==0) b[cnt++]=a[i];77: 200个四位数,把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((thou+ten==hun+data)&&a[i]%2==0) b[cnt++]=a[i]; 89: 200个四位数,把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((qw+gw)==(sw+bw)&&a[i]%2) b[cnt++]=a[i];27: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序53: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序48: 300个四位数,求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序54: 300个四位数,求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序49: 300个四位数,求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2 80: 300个四位数,求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz281: 300个四位数,求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz287: 300个四位数,求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz267: 5000以内,千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍.计算并输出这些四位自然数的个数cnt以及这些数的和sum十八、整数各位打散组合运算: 28 29 51 52 72 76 59 8628: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)29: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if(ab-cd>=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!=0&&gw!=0)51: 200个四位数,把千位数字和十位数字重新组成一个新的十位数,以及把个位数字和百位数字组成另一个新的十位数,如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt52: 200个四位数,把千位数字和个位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if(ab%2&&cd%2&&(ab%5==0||cd%5==0)&&ab>=10&&cd>=10)72: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0)76: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数必须是一个奇数, 另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的cntif((ab%2!=cd%2)&&((ab%17==0||cd%17==0)&&ab>=10&&cd>=10))59: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)86: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if((ab-cd)>0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10)十九、方差运算: 33 83 9333: 计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值83: 计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值93: 分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值for(i=0;i<MAX;i++) totfc+=(xx[i]-aver)*(xx[i]-aver); totfc/=MAX;二十、级数运算: 3535: Sn<M且Sn+1>=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中二十一、选票: 39 58 8439: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票58: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票84: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票二十二、SIX/NINE: 4141: 计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM二十三、出圈: 57说明:部份资料收集来源于网络。
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]++;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[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所指的数组中.答案:void fun(int m, int k,int xx[]){int g=0,I,j,flag=1;for(i=m+1;i<m*m;i++){for(j=0;j<I;j++){if(i%j!=0)flag=1;else{flag=0;break;}}if (flag==1 &&j〉=i){if (k>=0){xx[g++]=i;k——;}elsebreak;}}}6:第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符.其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
计算机等级考试-三级C语言上机试题

1【审题关键句】将大于整数m且紧靠m的k个素数存入数组。
【解题思路】①首先定义一个计数变量cnt并赋初值为0。
②利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。
每执行一次循环时,变量m的值加1,然后调用函数isP()判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xx[cnt],同时计算变量cnt的值加1,即当数组xx[0]中保存了一个素数之后,在下一次素数判断成立时将保存到xx[1]的位置上,依次类推。
【参考答案】int cnt = 0; //定义变量cnt并初值等于0while(cnt < k) //当cnt的值小于k时{m++; //变量m加1if(isP(m)) xx[cnt++] = m; //如果m为素数,则把其赋给数组元素xx[cnt],并且数组的下标cnt加1}2【审题关键句】求素数的个数及平均值,并计算非素数的平均值。
【解题思路】①首先定义循环变量i,然后通过for循环对数组a[300]中的每个元素a[i]调用函数isP(a[i])判断a[i]是否是素数(素数的算法已在isP()函数中给出,此处直接调用即可),如果是素数,则把其加到变量pjz1上,同时计数变量cnt加1,否则a[i]值加到变量pjz2上。
直到判断完数组a[300]中的所有数据后退出循环。
②求出pjz1、pjz2和cnt的值之后,再用变量pjz1的值除以cnt的值就得到素数的平均值,同时把这个值赋给变量pjz1,最后用变量pjz2的值除以300-cnt的值就得到非素数的平均值,并把这个值赋给变量pjz2。
【参考答案】int i; //定义变量ifor(i = 0; i < 300; i++) //循环变量i从0依次递增到299{if(isP(a[i])) //判断数组元素a[i]是否素数{pjz1 += a[i]; //把a[i]累加到变量pjz1cnt++; //变量cnt加1}else pjz2 += a[i]; //否则,把数组元素a[i]累加到变量pjz2 }pjz1 /= cnt; //所有素数的和pjz1除以素数的个数cnt,得到素数的平均值并赋给变量pjz1pjz2 /= (300 - cnt); //所有非素数的和pjz2除以非素数的个数300-cnt,得到非素数的平均值并赋给变量pjz23【审题关键句】100以内(含100)满足i、i+4、i+10都是素数的整数的个数以及这些i之和。
三级网络上机100题

蚌埠蓝图电脑学校全国计算机等级考试三级上机专用第一大类问题销售记录排序问题:(1---9题)已知在文件IN1.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。
其中:金额=单价×数量。
函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。
请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。
(strcmp是字符串比较函数,因为名称是字符串型所以使用strcmp函数)void SortDat(){int i,j;PRO temp;for(i=0;i<99;i++){for(j=i+1;j<100;j++){if(strcmp(sell[i].mc,sell[j].mc)>0){temp=sell[i];sell[i]=sell[j];sell[j]=temp;}else{if(strcmp(sell[i].mc,sell[j].mc)==0){if(sell[i].je>sell[j].je){temp=sell[i];sell[i]=sell[j];sell[j]=temp;}}}}}}请编制函数SortDat(),其功能要求:按产品名称从大到小进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。
void SortDat(){int i,j;PRO temp;for(i=0;i<99;i++){for(j=i+1;j<100;j++){if(strcmp(sell[i].mc,sell[j].mc)<0){temp=sell[i];sell[i]=sell[j];sell[j]=temp;}else{if(strcmp(sell[i].mc,sell[j].mc)==0){if(sell[i].je>sell[j].je){temp=sell[i];sell[i]=sell[j];sell[j]=temp;}}}}}}300个四位数问题:(10-19)/ , % (取余数)3%2=1 2%3=2a[1]=9845取千位:取百位:取十位:取个位:请编制一个函数jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b中的四位数按从小到大的顺序进行排序,最后调用写函数writeDat()把数组b中的数输出到OUT10.DAT文件。
三级C语言上机重点题

三级C语言上机重点题一、数学计算:1、将大于整数m且紧靠m的k个素数存入数组xx。
请编写函数num(int m,int k,int xx[])实现函数的要求,例如:若输入17,5,则应输出:19,23,29,31,37。
void num(int m, int k, int xx[]){ int i=0;for(m=m+1;k>0;m++)if(isP(m)){ xx[i++]=m; k--; }}2、下列程序的功能是:利用发下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。
xn+1=cos(xn)迭代步骤如下:(1)取X1初值为0.0;(2)X0=X1,把X1的值赋给X0;(3)X1=COS(X0),求出一个新的X1;(4)若X0-X1绝对值小0.000001,执行步骤(5),否则执行步骤(2);(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。
请编写函数countvalue()实现程序的要求float countvalue(){ float x0,x1;x1=0.0;do{ x0=x1;x1=cos(x0); }while(fabs(x0-x1)>=0.000001);return x1; }3、在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。
请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。
jsValue(int bb[]){int I,j,k=0,bw,sw,gw;for(I=10;I*I<=999;I++){j=I*I;bw=j/100; sw=j%100/10; gw=j%10;if(bw==sw||sw==gw||bw==gw)bb[k++]=j;}return k; }4、某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn<M且Sn+1>=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsvalue()函数来实现此功能。
三级C语言上机南开100题_修订word版

*******************************************************************************☆题目1请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k 个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
int isP(int m){int i;for(i=2;i<m;i++)if(m % i==0)return 0;return 1;}void num(int m,int k,int xx[]){ int s=0;for(m=m+1;k>0;m++)if(isP(m)) { xx[s++]=m; k--;}}☆题目2已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a 中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
最后main( )函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
void jsVal(){ int i,j,qw,bw,sw,gw;for(i=0;i<MAX;i++){ qw=a[i]/1000; bw=a[i]/100%10;sw=a[i]%100/10; gw=a[i]%10;if(qw&&qw%2==0&&bw%2==0&&sw%2==0&&gw%2==0) b[cnt++]=a[i];}for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]) { qw=b[i]; b[i]=b[j]; b[j]=qw;}}******************************************************************************★题目3(字符型题)函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。
三级c语言机试答案 南开100题

xx[I][strl-1]= ' ';
index=j;}
for(j=strl-1;j>=index;j--)
{ch=xx[I][strl-1];
for(k=strl-1;k>0;k--)
xx[I][k]=xx[I][k-1];
xx[I][0]=ch;}
}
}
*************************
xx[I][j]+=xx[I][j]>>4;
}
}
*****************************************
第17题
void ChA(void)
{int I,j,k,str;
char ch;
for(I=0;I<maxline;I++)
{str=strlen(xx[I]);
ch=xx[I][0];
{xy=sell[I];
sell[I]=sell[j];
sell[j]=xy;}
else if(strcmp(sell[I].dm,sell[j].dm)==0)
if(sell[I].je<sell[j].je)
{xy=sell[I];
sell[I]=sell[j];
sell[j]=xy;}
}
*****************************************
else
{flag=0;break;}
}
if (flag==1)
{ b[cnt]=a[I];
cnt++;}
}
for(I=0;I<cnt-1;I++)
2024年3月青少年软件编程C语言等级考试试卷三级真题

2024年3月青少年软件编程C语言等级考试试卷三级真题分数:100 题数:5一、编程题(共5题,共100分)1.我家的门牌号我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。
数据保证有唯一解。
时间限制:1000内存限制:65536输入一个正整数n。
n < 100000。
输出一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入样例输出试题编号:20240323-3-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:#include<iostream>using namespace std;int main(){int a;cin>>a;for(int i=1;i<100000;i++){for(int j=1;j<=i;j++){if((i+1)*i/2-j*2==a){cout<<j<<' '<<i;return 0;}}}}考生得分:20是否评分:已评分评价描述:2.最接近的分数分母不超过N 且小于A/B 的最大最简分数是多少?时间限制:10000内存限制:65536输入三个正整数N,A,B,相邻两个数之间用单个空格隔开。
1 <= A < B < N <= 1000。
输出两个正整数,分别是所求分数的分子和分母,中间用单个空格隔开。
样例输入样例输出试题编号:20240323-3-02试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:(此题已作答)考生得分:0是否评分:已评分评价描述:3.菲波那契数列菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。
给出一个正整数a,要求菲波那契数列中第a个数对10000取模的结果是多少。
三级c语言机试题及答案

三级c语言机试题及答案三级C语言机试题及答案1. 以下哪个选项是C语言中正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //这是注释D. /*这是注释*/答案:A2. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A3. 以下哪个选项是C语言中正确的字符串声明方式?A. char str[] = "Hello World";B. char str[] = 'Hello World';C. char str[] = {"Hello World"};D. char str[] = "Hello World";答案:A4. 在C语言中,以下哪个函数用于将字符串转换成浮点数?A. atoi()B. atof()C. itoa()D. sprintf()答案:B5. 以下哪个选项是C语言中正确的数组初始化方式?A. int arr[5] = {0, 1, 2, 3, 4};B. int arr[5] = {0};C. int arr[5] = {0, 1, 2};D. int arr[5] = {0, 1, 2, 3};答案:A6. 在C语言中,以下哪个关键字用于声明一个函数?A. functionB. defC. funcD. int答案:D7. 以下哪个选项是C语言中正确的文件包含指令?A. #include "stdio.h"B. include "stdio.h"C. #import "stdio.h"D. #include <stdio.h>答案:D8. 在C语言中,以下哪个运算符用于执行按位与操作?A. &&B. &&C. &D. ||答案:C9. 以下哪个选项是C语言中正确的单行if语句?A. if (x > y) x = y;B. if (x > y) { x = y; }C. if (x > y) x = y; else y = x;D. if (x > y) { x = y; } else { y = x; }答案:A10. 在C语言中,以下哪个关键字用于声明一个指针?A. pointerB. ptrC. *D. ref答案:C。
全国计算机等级考试三级C语言上机100题答案

全国计算机等级考试三级C语言上机100题一.排序类:1.已知数据文件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.DA T中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>#define MAX 200int a[MAX], b[MAX], cnt = 0 ;void jsVal(){int i,j,t;for(i=0;i<MAX;i++){t=a[i];if(t%2+t/10%2+t/100%2+t/1000%2==0)b[cnt++]=t;}for(i=0;i<cnt-1;i++)for(j=i+1;j<cnt;j++)if(b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}void readDat(){int i ;FILE *fp ;fp = fopen("in.dat", "r") ;fclose(fp) ;}void main(){int i ;readDat() ;jsVal() ;printf("满足条件的数=%d\n", cnt) ;for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;printf("\n") ;writeDat() ;}writeDat(){FILE *fp ;int i ;fp = fopen("out.dat", "w") ;fprintf(fp, "%d\n", cnt) ;for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ; fclose(fp) ;}2. 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b 中。
国家三级计算机c 考试试题及答案

国家三级计算机c 考试试题及答案国家三级计算机C考试试题及答案本文提供国家三级计算机C考试的试题及答案,帮助考生进行备考和提升技能水平。
一、选择题1. 下列哪个选项可以用于从文件中读取数据?a) fscanf()b) printf()c) scanf()d) switch()答案:a) fscanf()2. 在C语言中,以下哪个选项不是数据类型修饰符?a) shortb) constc) unsignedd) double答案:b) const3. 在C语言中的程序结构中,下列哪一部分可选?a) for循环b) else语句c) main函数d) if语句答案:b) else语句4. 在C语言中,以下哪个选项用于定义整数常量?a) intb) floatc) chard) enum答案:d) enum5. 在C语言中,用于连接字符串的运算符是?a) +b) *c) /d) -答案:a) +二、填空题1. C语言中,用于定义宏的关键字是_________。
答案:#define2. 下列哪个函数用于从控制台输出字符?答案:putchar()3. 在C语言中,sizeof()函数用于计算数据类型的_________。
答案:字节大小4. 下列哪个选项用于声明一个指针变量?答案:*5. 下列哪个运算符用于判断两个变量是否相等?答案:==三、编程题1. 编写一个C程序,从键盘输入两个整数,然后输出它们的和。
```c#include<stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d", sum);return 0;}```2. 编写一个C程序,计算并输出1到10之间的所有偶数的乘积。
c语言上机考试题及答案

c语言上机考试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个是合法的整型常量?A. 0x12B. 0x12.0C. 0x12LD. 0x12.0L答案:A2. 下列哪个选项是正确的C语言标识符?A. 2variableB. variable2C. variable-2D. variable_2答案:D3. C语言中,以下哪个是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World'D. 'Hello, World'答案:A4. 在C语言中,以下哪个是正确的函数声明?A. int myFunction(int a);B. int myFunction();C. int myFunction(int);D. int myFunction(int a, int b);答案:A5. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. 以上都是答案:D二、填空题(每题3分,共15分)1. 在C语言中,用于定义整型变量的关键字是________。
答案:int2. 若有定义 int a = 10;,则表达式 a++ 的值为________。
答案:103. C语言中,用于表示逻辑“与”的运算符是________。
答案:&&4. 在C语言中,以下代码段的输出结果是________。
```c#include <stdio.h>int main() {int x = 5;printf("%d", x++);return 0;}```答案:55. 若有定义 float b = 3.14;,则表达式 b * 100 的值为________。
答案:314.0三、编程题(每题20分,共40分)1. 编写一个C程序,计算并输出以下数列的前10项之和:1 + 1/2 + 1/3 + ... + 1/10。
c语言上机试题库及答案

c语言上机试题库及答案1. 题目一:字符串翻转要求:编写一个C语言程序,实现字符串的翻转功能。
```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int len = strlen(str);char temp;for(int i = 0; i < len / 2; i++) {temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[100];printf("Enter a string: ");scanf("%s", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;}```2. 题目二:计算数组中的最大值要求:编写一个C语言程序,计算并输出一个整数数组中的最大值。
```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for(int i = 1; i < size; i++) {if(arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {10, 45, 23, 67, 89, 34};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("The maximum value in the array is: %d\n", max); return 0;}```3. 题目三:实现二分查找要求:编写一个C语言程序,实现一个二分查找算法,查找一个有序数组中是否存在目标值。
南开C语言100WORD版(全国计算机等级考试三级C语言程序设计上机考试习题集(2004年版)【终极无错版】)

题目1(无忧id 14、id 27(提供isP()函数;捷成id 23题)请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m 且紧靠m的k个素数存入数组xx传回。
最后调用函数writeDat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。
部分源程序存在文件prog1.c中。
例如:若输入17 5 则应输出:19,23,29,31,37。
请勿改动主函数main()和写函数writeDat()的内容。
#include <conio.h>#include <stdio.h>void readwriteDat();int isP(int m){ int i;for(i=2;i<m;i++)if(m % i==0)return 0;return 1;}void num(int m,int k,int xx[]){ int s=0;for(m=m+1;k>0;m++)if(isP(m)) { xx[s++]=m; k--;}}main(){ int m,n,xx[1000];clrscr();printf("\nPlease enter two integers:");scanf("%d%d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)printf("%d ",xx[m]);printf("\n");readwriteDat();}void readwriteDat(){ int m,n,xx[1000], i;FILE *rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d %d",&m,&n);num(m,n,xx);for(m=0;m<n;m++)fprintf(wf,"%d ",xx[m]);fprintf(wf,"\n");}fclose(rf);fclose(wf);}无忧id 14题(无isP()函数)#include <stdio.h>void jsValue(int m,int k,int xx[]){ int i,j,s=0;for(i=m+1;k>0;i++){ for(j=2;j<i;j++)if(i%j==0) break;if(i==j) { xx[s++]=i; k--;}}}main(){int m,n,zz[100];printf("\n请输入两个整数:");scanf("%d%d",&m,&n);jsValue(m,n,zz);for(m=0;m<n;m++)printf("%d ",zz[m]);printf("\n");writeDat();}writeDat(){ int m,n,zz[100],i;FILE *in,*out;in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%d%d",&m,&n);jsValue(m,n,zz);for(m=0;m<n;m++)fprintf(out,"%d ",zz[m]);fprintf(out,"\n");}fclose(in);fclose(out);}★题目2(无忧id 143)已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
上机考试题库c语言

上机考试题库c语言一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. floatC. voidD. function2. 若有定义int a=5;,则以下哪个表达式的值不为5?A. a++B. a--C. ++aD. --a3. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable-2D. variable$24. 在C语言中,以下哪个选项表示逻辑“与”操作?A. &&B. ||C. !D. &5. 以下哪个选项是C语言中的整型数据类型?A. intB. floatC. doubleD. char6. 在C语言中,以下哪个选项用于声明一个指针?A. *B. &C. %D. #7. 若有定义int a[5]={1,2,3,4,5};,则以下哪个表达式的值不为3?A. a[2]B. *(a+2)C. a+2D. *a8. 在C语言中,以下哪个选项表示逻辑“或”操作?A. &&B. ||C. !D. |9. 在C语言中,以下哪个选项用于声明一个字符数组?A. char a[5]B. int a[5]C. float a[5]D. double a[5]10. 若有定义char str[10]="Hello";,则以下哪个表达式的值不为'o'?A. str[4]B. *(str+4)C. str+4D. *(str+5)二、填空题(每题2分,共20分)1. 在C语言中,用于声明一个整型变量的关键字是______。
2. 若有定义int a=10;,则表达式a++的值是______。
3. C语言中,用于声明一个浮点型变量的关键字是______。
4. 在C语言中,用于声明一个字符型变量的关键字是______。
5. 若有定义int a[5]={1,2,3,4,5};,则表达式*(a+2)的值是______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void StrOR(void)
{int i;
char *p1,*p2,t[80];
for(i=0;i<maxline;i++)
{t[0]='\0';p2=xx[i];
while(*p2)
{if(*p2=='o') p1=p2;
p2++;}
memcpy(t1,p1+1,p2-p1);
t1[p2-p1]=0;
strcat(t,t1);
strcat(t," ");
if(p1<xx[i]) k=0;
}
strcpy(xx[i],t);
}
}
PROG1.C
# include"stdio.h"
# include"string.h"
for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
}
void main()
{ int i ;
readDat() ;
jsVal() ;
printf("满足条件的数=%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
指向最后一个字母'o'。第一个ctrcat()函数的作用是将p1以后的字符都放到新串t中
,第二个strcat()函数的作用是将p1以前的字符连接到新串t的后面(注意:在些之前要
让p1所指的单元成为p1前面字符串的结束位置*p1='\0')。这时完成左右互换。最后
一个while()循环的作用是删除新串中的所有小写字母'o',采用的删除方法是不是'
{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++;
} }
或者:
void num(int m,int k,int xx[])
{int i,j,s=0;
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
-------------------------
printf("\n") ;
writeDat() ;
system("pause");
}
writeDat()
{ FILE *fp ;
int i ;
fp = fopen("out.dat", "w") ;
fprintf(fp, "%d\n", cnt) ;
for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d\n", b[i]) ;
while(p)
{ memset(a,0,80);
memcpy(a,xx[i],p-xx[i]);
strcpy(xx[i],p+1);
strcat(xx[i],a);
p=strchr(xx[i],'o'); } }
}
或者:
void StrOR(void) /*我的非指针解法*/
{int i,righto,j,k;
scanf("%d,%d", &m, &n ) ;
num(m, n, xx) ;
for(m = 0 ; m < n ; m++)
printf("%d ", xx[m]) ;
printf("\n") ;
readwriteDAT() ;
system("pause");
}
void readwriteDAT()
for(i=m+1;k>0;i++)
{for(j=2;j<i;j++)
if(i%j==0) break; /*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/
if(i==j)
{xx[s++]=i;k--;}
} }
void num(int m, int k, int xx[])
}
PROG1.C
#include <stdio.h>
#define MAX 200
int a[MAX], b[MAX], cnt = 0;
void jsVal()
{
}
void readDat()
{ int i ;
FILE *fp ;
fp = fopen("in.dat", "r") ;
{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;}
for(i = 2 ; i < m ; i++)
if(m % i == 0) return 0 ;
return 1 ;
}
void num(int m,int k,int xx[])
{
}
main()
{ int m, n, xx[1000] ;
clrscr() ;
printf("\nPlease enter two integers:") ;
-------------------
类型:字符串(单词)的倒置和删除。
答案:
void StrOR(void) /*标准答案*/
{int I,j,k,index,strl;
char ch;
for(I=0;I<maxline;I++)
{strl=strlen(xx[I]);
index=strl;
for(k=strl-1;k>0;k--)
xx[I][k]=xx[I][k-1];
xx[I][0]=ch;}
}
}
或者:
void StrOR(void)
{ int i;
char a[80],*p;
for(i=0;i<maxline;i++)
{ p=strchr(xx[i],'o');
strcat(t,p1+1);
*p1='\0';strcat(t,xx[i]);
p1=xx[i];p2=t;
while(*p2)
{if(*p2!='o') *p1++=*p2;
p2++;
}
*p1='\0';
}}
或者:
注:该题的主要算法是先让两字符指针都指向串尾,然后使一指针(p1)往前移动,当
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++)
{ int m, n, xx[1000], i ;
FILE *rf, *wf ;
rf = fopen("in.dat", "r") ;
wf = fopen("out.dat", "w") ;
for(i = 0 ; i < 10 ; i++) {
fscanf(rf, "%d %d", &m, &n) ;
for(j=0;j<righto;j++)
{if(xx[i][j]!='o') tem[k++]=xx[i][j];}
strcpy(xx[i],tem);
}}
或者:
注:题目要求的字符串中所有小写字母o左边的字符串内容移到该串的右边存放,即
将串中“最后”一个字母o左右两侧的内容互换。题中第一个while()特环的作用是让p1