第1关:判断数字能不能被整除
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关需要你完成一个统计[1,N]
范围内,各位数字之和能被15
整除的整数个数的小程序。 例如:78
的各位数字之和是:7+8=15
,则78
是一个各位数字之和能被15
整除的整数。56
的各位数字之和是:5+6=11
,则56
不是一个各位数字之和能被15
整除的整数。
相关知识
本关涉及的while
循环语句、do-while
循环语句和for
循环语句的相关知识已经在上个实训:C语言基本语法进阶练习题中详细介绍了,本实训不再赘述。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
输入一个正整数N
,统计[1,N
]范围内各位数字之和能被15
整除的整数个数。
效果如下:
输入:100
。 输出: 4
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
验货啦,验货啦,开始你的任务吧!
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int N,i,j,sum,cnt=0;
scanf("%d",&N);
for(i=1;i<=N;i++){
j=i;
sum=0;
while(j>0){
sum+=j%10;
j/=10;
}
if(sum%15==0){
cnt++;
}
}
printf("%d",cnt);
/********** End **********/
return 0;
}
第2关:判断区间内素数的个数
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关需要你完成一个计算两个整数间的素数个数的小程序。
相关知识
什么是素数?素数定义为在大于1
的自然数中,除了1
和它本身以外不再有其他因数。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
在程序中输入两个整数m
,n
,判断[m,n]
之间有多少个素数。
效果如下:
输入:101 200
。 输出:21
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
验货啦,验货啦,开始你的任务吧!
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int m,n,i,j,cnt=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++){
int isPrime=1;
for(j=2;j<i;j++){
if(i%j==0){
isPrime=0;
break;
}
}
if(isPrime){
cnt++;
}
if(i==1){
cnt--;
}//注意这个要考虑这个条件
}
printf("%d",cnt);
/********** End **********/
return 0;
}
第3关:判断区间内某个数字出现的次数
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关需要你完成一个计算数字x
在区间 1
到 n
的所有整数中,共出现了多少次的小程序。
相关知识
相关知识略
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
计算在区间 1
到 n
的所有整数中,数字 x(0 ≤ x ≤ 9)
共出现了多少次?
例如,在 1
到 11
中,即在 1
、2
、3
、4
、5
、6
、7
、8
、9
、10
、11
中,数字 1
出现了 4
次。
输入的两个整数,第一个数为n
的值,第二个为x
的值。
效果如下:
输入:11 1
。
输出:4
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
验货啦,验货啦,开始你的任务吧!
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int x,n,i,cnt=0,yushu,t;
scanf("%d %d",&n,&x);
for(i=1;i<=n;i++){
t=i;
while(t>0){
yushu=t%10;
if(yushu==x){
cnt++;
}
t/=10;
}
}
printf("%d",cnt);
/********** End **********/
return 0;
}
第4关:判断完数的个数
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关需要你完成在指定范围内找出完数个数的小程序。
相关知识
什么叫完数?一个数如果恰好等于它的因子之和,这个数就称为“完数”。
那么因子又是什么呢?假如整数n
除以m
,结果是无余数的整数,那么我们称m
就是n
的因子。
例如,6=1+2+3
,则6
为完数。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
找出指定范围内的完数个数。
效果如下:
输入:1
,100
。 输出:2
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int m,n,i,sum=0,j,y,cnt=0;
scanf("%d,%d",&m,&n);
for(i=m;i<=n;i++){
sum=0;
for(j=1;j<i;j++){
y=i%j;
if(y==0){
sum+=j;
}
}
if(i==sum){
cnt++;
}
}
printf("%d",cnt);
/********** End **********/
return 0;
}
第5关:求矩阵最大值
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 编程要求
- 测试说明
任务描述
本关需要完成找出矩阵中值最大元素的小程序。
相关知识
在数学中,矩阵(Matrix)
是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。
由 m × n
个数排成的m
行n
列的数表,称为m
行n
列的矩阵,简称m × n
矩阵环结构。其中m
代表矩阵的行数, n
代表列数。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
有一个m×n
的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
效果如下: 输入:
3 4
1 2 3 4
9 8 7 6
2 0 5 8
输出:
该3*4矩阵的最大元素信息如下:
max=9
row=2
column=1
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
开始你的任务吧!
//注意
//1:该程序每次运行的时间必须小于200毫秒,否则会超时,程序超时将不会测试剩余的测试集
//2:该程序每次运行使用的内存不能超过1M,否则会返回错误
//3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int m,n,i,j,max,row=1,column=1;
scanf("%d %d",&m,&n);
int a[m][n];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
max=a[0][0];
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(a[i][j]>max){
max=a[i][j];
row=i+1;
column=j+1;
}
}
}
printf("该%d*%d矩阵的最大元素信息如下:\nmax=%d\nrow=%d\ncolumn=%d",m,n,max,row,column);
/********** End **********/
return 0;
}
第6关:逆序输出数组
100
- 任务要求
- 参考答案
- 评论116
- 任务描述
- 相关知识
- 一维数组
- 编程要求
- 测试说明
任务描述
本关需要你完成将一组数组的值按逆输出的小程序。
相关知识
什么是数组?所谓数组,是有序的元素序列。
在C
语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。本关带你回顾一下一维数组。
一维数组
定义方式:
类型说明符 数组名 [常量表达式];
其中,类型说明符是任意一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10]; /* 说明:整型数组a,有10个元素 */
float b[10], c[20]; /* 说明:实型数组b,有10个元素,实型数组c,有20个元素 */
char ch[20]; /* 说明:字符数组ch,有20个元素 */
数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:
数组名[下标]
数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C
语言中只能逐个地使用下标变量,而不能一次引用整个数组。
举个例子: 使用for
循环为一个数组赋值,并将数组逆序输出
#include <stdio.h>
int main(void){
int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf("%d ",a[i]);
return 0;
}
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
将数组a[5]
的值按逆序输出。
例如:由scanf
函数输入a[5]
为8 6 5 4 1
,要求改为1 4 5 6 8
,printf
函数输出格式为%5d
。
效果如下: 输入:8 6 5 4 1
。 输出:1 4 5 6 8
。
测试说明
平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。
验货啦,验货啦,开始你的任务吧!
#include <stdio.h>
int main()
{
//获取参数方式 scanf
//int x =0;
//int y = 0;
//scanf("%d", &x);
//结果输出使用prinf
//printf("%d",x);
// 请在此添加你的代码
/********** Begin *********/
int i,a[5],j;
for(i=0;i<5;i++){
scanf("%d",&a[i]);
}
for(i=4;i>=0;i--){
printf("%5d",a[i]);
}
/********** End **********/
return 0;
}
更多推荐
C语言循环语句入门练习题
发布评论