C语言循环语句强化练习题

第1关:求a^b的个位数

400

  • 任务要求
  • 参考答案
  • 评论47

任务描述

幂是一个汉字词语,意思是指乘方运算的结果,本关我们需要通过程序来实现幂的相关运算。

相关知识

幂函数在我们的日常生活中应用很广,比如:银行存款计复利等,掌握幂的相关知识可以给我们的日常生活带来便利。

c语言中a^b还有另一层意思,是位运算中异或的意思,相同为0同为1

编程要求

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

给定两个数ab(0 < a&&b <=2^30),求a^b的最后一位数。(即ab次幂的个位数) 提示:这题有一定的难度,小心超时,或超出数字的存储极限。

效果如下: 输入:6667 4454。 输出:9

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include<stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
    int a,b,sum=1,i;
    scanf("%d %d",&a,&b);
    a%=10;
    b%=4;//7的一到五次幂 :7 49 343 2401 16807,2的一到五次幂 :2 4 8 16 32,可以看出个位数是循环往复的
    for(i=1;i<=b;i++){
        sum*=a;
    }
    printf("%d",sum%10);
	/********** End **********/
}

第2关:嵌套循环程序设计

400

  • 任务要求
  • 参考答案
  • 评论47

任务描述

本关需要你完成一个嵌套循环程序设计。

效果如下:

相关知识

还记得C语言的循环语句有哪些吗?while循环语句、do-while循环语句和for循环语句。那么他们可以嵌套使用吗?让我们来了解一下。

循环的嵌套

一个循环体语句中又包含另一个循环语句,称为循环嵌套,其实就是在whiledo...whilefor三种常用循环结构的作用域内再度使用三种循环结构的一种解题模式。

嵌套注意事项:

1.使用循环嵌套时,内层循环和外层循环的循环控制变量不能相同;

2.循环嵌套结构的书写,最好采用“右缩进”格式,以体现循环层次的关系;

3.尽量避免太多和太深的循环嵌套结构。

用途:

循环嵌套可以帮助我们解决很多问题,在C语言中经常被用于按行列方式输出数据。

举个例子:

 
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[])
  3. {
  4. for(int i = 1; i <= 9; i++)//外层循环,循环1次 要完成1行的打印.
  5. {
  6. for(int j = 1; j <= i;j++)
  7. {
  8. //' ' 代表1个制表符 Tab键.对齐
  9. printf("%d * %d = %d ",j,i,i*j);
  10. }
  11. printf("
  12. ");
  13. }
  14. return 0;
  15. }

编程要求

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

输入打印行数n,输出共2n-1行的菱形。 例如: 输入:5。 输出:

 

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include <stdio.h>
int main()
{
	//获取参数方式 scanf
    //int x  =0;
    //int y = 0;
    //scanf("%d", &x);

    //结果输出使用prinf
    //printf("%d",x);

 	// 请在此添加你的代码
    /********** Begin *********/
	int n,i,j;
	scanf("%d",&n);
	//上面的部分
	for (i=1;i<=n;i++){
		for (j=1;j<=n-i;j++){
			printf(" ");
		}//到中心有十个空格,越少的*越多的空格
		for (j=1;j<=2*i-1;j++){
			printf("*");
		}//运用公式可知
		printf("\n");
	}//下面的部分
	for (i=1;i<=n-1;i++){
		for (j=1;j<=i;j++){
			printf(" ");
		}
		for (j=1;j<2*n-2*i;j++){
			printf("*");
		}//每次递减2
		printf("\n");
	}
	return 0;
	/********** End **********/
}

第3关:fun函数

400

  • 任务要求
  • 参考答案
  • 评论47

任务描述

本关需要你完成编写函数fun计算一个数组中的值出现的次数。

相关知识

大家看到题目是不是很熟悉,之前做过这种逆序存放的题目啊,怎么又做?这次这个题目有个新知识,fun函数!

fun函数

fun函数是自定义的C/C++语言函数,函数功能多样。它是指用fun来定义一个函数(或方法),这样在引用时可以用fun表示。

比如int fun(int x,int y)void fun(char* a,char* b) 等等。有先前的定义,就可以在主函数里调用它,比如ans=fun(3,7)或者fun(p1,p2)

编程要求

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

将一个数组的值按逆序重新存放,例如,原来顺序为:8,6541。要求 改为:14568

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include <stdio.h>
#define N 10
void  fun(int arr[],int n)
{
	// 请在此添加你的代码
  /********** Begin *********/
  int i,j,t;
  for(i=0;i<=n/2-1;i++){//这里要考虑n是奇数还是偶数,奇数对半求,偶数对半还要减一
    t=arr[i];
    arr[i]=arr[n-1-i];
    arr[n-1-i]=t;
  }
	/********** End **********/
}
  int main()
  {
    int a[N]={34,56,4,1,10,8,6,5,4,1},i;

    getchar();
    for(i=0;i<N;i++)
      printf("%3d",a[i]);
    printf("\n");
    fun(a,N);
    for(i=0;i<N;i++)
      printf("%3d",a[i]);
    return 0;
}

第4关:switch语句

400

  • 任务要求
  • 参考答案
  • 评论47

任务描述

本关需要你使用switch case语句完成一个判断学员成绩等级的小程序。

相关知识

在有多个选择分支条件的情况下,用if 语句难免会繁琐且效率不高,此时便是switch语言的用武之地。

switch语句

用法如下:

 
  1. switch(表达式){
  2. case 常量表达式1: 语句1;
  3. case 常量表达式2: 语句2;
  4. case 常量表达式n: 语句n;
  5. default: 语句n+1;
  6. }

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

例如:

 
  1. #include <stdio.h>
  2. int main(void){
  3. int a;
  4. printf("input integer number: ");
  5. scanf("%d",&a);
  6. switch (a){
  7. case 1:printf("Monday
  8. "); break;
  9. case 2:printf("Tuesday
  10. "); break;
  11. case 3:printf("Wednesday
  12. "); break;
  13. case 4:printf("Thursday
  14. "); break;
  15. case 5:printf("Friday
  16. "); break;
  17. case 6:printf("Saturday
  18. "); break;
  19. case 7:printf("Sunday
  20. "); break;
  21. default:printf("error
  22. ");
  23. }
  24. return 0;
  25. }

上述题目中在case后还加了break,知道break的含义吗?break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。上述题中,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。

在使用switch语句时还应注意以下几点:

  • case后的各常量表达式的值不能相同,否则会出现错误;

  • case后,允许有多个语句,可以不用{}括起来;

  • casedefault子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。

编程要求

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

输入考试成绩(0-100之间的整数),根据该分数所处的区间,输出对应的等级。

等级设置如下:

分数区间 等级 [90,100] A [80,89] B [70,79] C [60,69] D [0,59] E

程序运行示例:

输入:89

输出:The grade is: B

测试说明

平台会对您的代码进行运行测试,如果实际输出与预期输出相同,则算通关。


验货啦,验货啦,开始你的任务吧!

#include <stdio.h>
char fun(int s)
{        char grade;//存储分数对应的等级

	// 请在此添加你的代码
    /********** Begin *********/
    switch(s/10){
        case 10:grade='A';break;//这里考虑100分的条件
        case 9:grade='A';break;
        case 8:grade='B';break;
        case 7:grade='C';break;
        case 6:grade='D';break;
        default:grade='E';
    }
    return grade;
    /********** End **********/
}

int main (void)
{
    int  score;
    scanf ("%d", &score);
    printf("The grade is: %c", fun(score));
    return 0;
}

  • 11
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值