zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言循环语句入门练习题

C语言循环入门 语句 练习题
2023-09-11 14:20:01 时间

第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)共出现了多少次?

例如,在 111 中,即在 1234567891011 中,数字 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 个数排成的mn列的数表,称为mn列的矩阵,简称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语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。本关带你回顾一下一维数组。

一维数组

定义方式:

 
  1. 类型说明符 数组名 [常量表达式];

其中,类型说明符是任意一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:

 
  1. int a[10]; /* 说明:整型数组a,有10个元素 */
  2. float b[10], c[20]; /* 说明:实型数组b,有10个元素,实型数组c,有20个元素 */
  3. char ch[20]; /* 说明:字符数组ch,有20个元素 */

数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:

 
  1. 数组名[下标]

数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。

举个例子: 使用for循环为一个数组赋值,并将数组逆序输出

 
  1. #include <stdio.h>
  2. int main(void){
  3. int i,a[10];
  4. for(i=0;i<=9;i++)
  5. a[i]=i;
  6. for(i=9;i>=0;i--)
  7. printf("%d ",a[i]);
  8. return 0;
  9. }

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

将数组a[5]的值按逆序输出。

例如:由scanf函数输入a[5]8 6 5 4 1,要求改为1 4 5 6 8printf函数输出格式为%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;
}