计算机三级考试C语言上机试题
全国计算机等级考试三级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语言上机题参考答案

20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);
计算机等级考试-三级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题)

全国计算机等级考试三级C语言上机100题几点说明:**********************************☆题目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 <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);}*********************************☆题目2已知数据文件IN.DA T中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。
三级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语言上机题库(附答案)

三级机试题库(附答案)1、已知数据文件IN.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsV al(),其功能是:依次从数组a中取出一个四位数,如果该四位数大于该四位数以后的连续五个数且该数是偶数(该四位数以后不满五个数,则不统计), 则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DA T文件中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义数组: a[200], b[200], 已定义变量: cnt请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
2、在文件in.dat中已存有200个正整数, 且每个数均在1000至9999之间。
函数readDat()是读取这200个数存放到数组aa中。
请编制函数jsSort(),其函数的功能是: 要求按每个数的后三位的大小进行降序排列,如果出现后三位相等的数值,则对这些数值按原始4位数据进行升序排列,将排序后的前10个数存入数组bb中。
最后调用函数writeDat()把结果bb输出到文件out.dat中。
例: 处理前90125099601270258088处理后50998088702560129012注意: 部分源程序存在文件PROG1.C文件中。
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
3、函数ReadDat()实现从文件IN.DA T中读取一篇英文文章,存入到无符号字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,其替代值仍存入数组xx所对应的位置上,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
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取模的结果是多少。
2024年6月青少年软件编程C语言等级考试试卷三级真题

2024年6月青少年软件编程C语言等级考试试卷三级真题分数:100 题数:51.谷歌的招聘(20分)。
2004年7月,谷歌在硅谷的101号公路边竖立了一块巨大的广告牌用于招聘。
内容超级简单,就是一个以结尾的网址,而前面的网址是一个10位素数,这个素数是自然常数e中最早出现的10位连续数字。
能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。
自然常数e是一个著名的超越数,前面若干位写出来是这样的:其中粗体标出的10位数就是答案。
本题要求你编程解决一个更通用的问题:从任一给定的长度为L的数字中,找出最早出现的K位连续数字所组成的素数。
输入:输入在第一行给出2个正整数,分别是L(不超过1000的正整数,为数字长度)和K(小于10的正整数)。
接下来一行给出一个长度为L的正整数N。
输出:在一行中输出N中最早出现的K位连续数字所组成的素数。
如果这样的素数不存在,则输出“404”。
注意,原始数字中的前导零也计算在位数之内。
例如在200236中找4位素数,0023算是解;但第一位2不能被当成0002输出,因为在原始数字中不存在这个2的前导零。
2.吉利矩阵(20分)。
所有元素为非负整数,且各行各列的元素和都等于7的3x3方阵称为“吉利矩阵”,因为这样的矩阵一共有666种。
本题就请你统计一下,把7换成任何一个[2,9]区间内的正整数L,把矩阵阶数换成任何一个[2,4]区间内的正整数N,满足条件“所有元素为非负整数,且各行各列的元素和都等于L”的NxN方阵一共有多少种?输入:输入在一行中给出2个正整数L和N,意义如题面所述。
数字间以空格分隔。
输出:在一行中输出满足题目要求条件的方阵的个数。
3.胖达与盆盆奶(20分)。
大熊猫,俗称“胖达”,会排队吃盆盆奶。
它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖达能吃到更多的奶,等胖的胖达得吃到一样多的奶。
另一方面,因为它们是排好队的,所以每只胖达只能看到身边胖达的奶有多少,如果觉得不公平就会抢旁边小伙伴的奶吃。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序的改进: 程序的改进: 通过证明,只需判断在 只需判断在2—sqrt(n)范围内没有一 通过证明 只需判断在 范围内没有一 个自然数k能够整除 能够整除n,就能证明n是素数 个自然数 能够整除 ,就能证明 是素数 for(k=2;k<=sqrt(n);k++) if(n%k==0) break; 例子:第10、45套 例子: 、 套
第二部分——算法的分析: 第二部分 算法的分析: 算法的分析 (1)首先输入一个需要判定的自然数 )首先输入一个需要判定的自然数n (2)接着,我们设置一个除数变量,同时也 )接着,我们设置一个除数变量, 是一个计数变量k,将其初值设置为2 是一个计数变量 ,将其初值设置为 (3)使用第一个判断框,设置循环的条件为 )使用第一个判断框, 循环中判断n 的值, “k<=n/2” ,循环中判断 mod k的值,如 的值 果不为零,继续循环;如果为零, 果不为零,继续循环;如果为零,直接跳出 循环 的值确定n是否是素数 (4)循环结束通过 的值确定 是否是素数 )循环结束通过k的值确定
算法流程图: 算法流程图
判断素数的C程序 判断素数的 程序: 程序 void IsPrime(int n) { int k; printf("输入一个正整数:"); 输入一个正整数: 输入一个正整数 scanf("%d",&n); for(k=2;k<=n/2;k++) if(n%k==0) break; if(k>n/2) printf("%d是一个素数。",n); 是一个素数。 是一个素数 else printf("%d不是一个素数。",n); 不是一个素数。 不是一个素数 }
(三)多位整数分解
假定num为一个四位正整数,如何求出各 为一个四位正整数, 假定 为一个四位正整数 位上数字 千位数字: 千位数字:num/1000 百位数字: 百位数字:num%1000/100 十位数字:num%100/10 十位数字: 个位数字: 个位数字:num%10
第2、3套 等 、 套
排序演示
程序
#include<stdio.h> #define N 10 void main() { int a[N+1],b,c,temp; printf("请输入 个数字:\n"); 请输入10个数字: 请输入 个数字 for(b=1;b<=N;b++) scanf("%d",&a[b]); for(b=1;b<=N-1;b++) for(c=1;c<=N-b;c++) if(a[c]>a[c+1]) { temp=a[c]; a[c]=a[c+1]; a[c+1]=temp; } for(b=1;b<=N;b++) printf("%d ",a[b]); putchar('\n9'); }
(二)素 数 问 题
判断一个数是否是素数的方法 (1) 算法设计 (2) 算法分析 (3) 算法流程图 (4) C程序代码 程序代码
第一部分 —— 算法设计 如果某个自然数n是素数 是素数, 如果某个自然数 是素数,那么可能存在 这样的情况——在2~n/2范围内没有一个自 这样的情况 在 范围内没有一个自 然数k能够整除 能够整除n。所以, 然数 能够整除 。所以,如果要判断自然数 n是否为一个素数,只需要让 不断的去除 是否为一个素数, 是否为一个素数 只需要让n不断的去除 以从2开始的 开始的, 结束的整数k, 以从 开始的,到n/2结束的整数 ,这是一 结束的整数 个反复执行的操作。 个反复执行的操作。如果在这个范围内的数 没有一个k能够整除 能够整除n,就说明n是一个素数 是一个素数。 没有一个 能够整除 ,就说明 是一个素数。 反之,只需要存在一个k能够整除 能够整除n, 反之,只需要存在一个 能够整除 ,就说明 n不是一个素数。 不是一个素数。 不是一个素数
计算机三级考试C 计算机三级考试 语言上机试题
(一)冒泡法排序
冒泡法顾名思义就是将一个数从下面浮上来,假设有 个数 个数, 冒泡法顾名思义就是将一个数从下面浮上来,假设有5个数, 21 56 87 6 9, , 将第五个元素的值与第四个元素的值相比, 将第五个元素的值与第四个元素的值相比,如果第五个元素 的值小于第四个元素的值,则交换着两个元素的值。 的值小于第四个元素的值,则交换着两个元素的值。 接下来,将第四个元素的值与第三个元素的值进行比较, 接下来,将第四个元素的值与第三个元素的值进行比较,按 照类似的方式,如果发现下面元素的值小于上面元素的值, 照类似的方式,如果发现下面元素的值小于上面元素的值, 则交换着两个值。 则交换着两个值。 将第三个元素的值与第二个元素的值比较,做同样的工作。 将第三个元素的值与第二个元素的值比较,做同样的工作。 在这一轮比较结束时,最小值将到达最上面, 在这一轮比较结束时,最小值将到达最上面,可以说最小值 已经浮到最上面 第二轮,从最底部的元素开始比较,直到第二个元素, 第二轮,从最底部的元素开始比较,直到第二个元素,因为 第一个已经是最小,不需要再进行比较。 第一算数值,统计, 计算数值,统计,求平均值等
(五)字符串元素的访问
字符串替换,移动, 字符串替换,移动,排序等 第56套等 套等
(六)选票问题
二维数组的使用 第60套等 套等