C语言 基于循环结构的程序设计(PTA)
一、实验目的
1.学习循环语句for、while和do-while语句的使用方法。
2.学习用循环语句实现各种算法,例如穷举法、迭代法等。
二、实验内容
1 找出最小值
本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔.。输出格式:在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
2 打印九九口诀表
下面是一个完整的下三角九九口诀表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
本题要求对任意给定的一位正整数N,输出从1*1到N*N的部分口诀表
输出格式:输入在一行中给出一个正整数N(1≤N≤9)
输入格式:输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐
3 计算阶乘和
对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。
输入格式:输入在一行中给出一个不超过10的正整数N。
输出格式:在一行中输出S的值。
4 求整数段和
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
5 统计学生成绩
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
• 大于等于90分为A;
• 小于90且大于等于80为B;
• 小于80且大于等于70为C;
• 小于70且大于等于60为D;
• 小于60为E。
输入格式:输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。 输出格式:在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
6 特殊a串数列求和 (20分)
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
输入样例:
2 3
输出样例:
s = 246
7 水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1
3
+5
3
+3
3
。 本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
3
输出样例:
153
370
371
407
8 打印沙漏 (20分)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
*****
***
*
***
*****
2
三、实验源程序及结果截图
1 找出最小值
#include <stdio.h>int main()
{int n,i = 0,j,min;do{scanf("%d ",&n);}while(n <= 0); //控制n的范围for(i = 0;i < n;i++){scanf("%d ",&j); //输入n个整数if(i == 0) {min = j; //令第一个数等于min}else{if(j < min) //如果j比min小则把j的值赋给min{min = j;}}i++;}printf("min = %d",min); //输出最小值return 0;
}
2 打印九九口诀表
#include <stdio.h>int main()
{int N,i,j;do{scanf("%d",&N);}while(N <= 0); //控制N的范围for(i = 1;i <= N;i++) //控制打印的行数{for(j = 1;j <= i;j++) //控制每一行的geshu{printf("%d*%d=%-4d",j,i,i*j);}printf("\n"); //控制换行}return 0;
}
3 计算阶乘和
#include <stdio.h>int main()
{int N,sum = 0,S,i,j;do{scanf("%d",&N); }while(N <= 0 || N > 10); //控制N的范围for(i = 0;i < N;i++) //外层循环控制累乘的个数{for(j = 0;j <= i;j++) //内层循环控制每一个累乘的终点{S = S * (j + 1);}sum = sum + S; //对累乘求和S = 1; //初始化S}printf("%d",sum); //输出总和return 0;
}
4 求整数段和
#include <stdio.h>int main()
{int A,B,i,j = 1,sum = 0;do{scanf("%d %d",&A,&B);}while(A<-100||A>100 || B<-100||B>100||A>B); //控制A和B的范围for(i = A;i <= B;i++,j++) //从A到B的所有数{printf("%5d",i); //输出数字并占五个字符宽度右对齐sum = sum + i; //求和if(j % 5 == 0)printf("\n"); //每五个数换行}if((j - 1) % 5 != 0) //如果最后一行不足五个数输出换行printf("\n");printf("Sum = %d",sum);return 0;
}
5 统计学生成绩
#include <stdio.h>int main()
{int N,i,j,a=0,b=0,c=0,d=0,e=0; //定义各级初值do{scanf("%d",&N);}while(N > 1000 || N <= 0); //控制N的范围for(i = 0;i < N;i++) { scanf("%d",&j);if(j >= 90){a++; //成绩大于90时a加一}else if(j >= 80 && j < 90){b++; //成绩大于80小于90时b加一}else if(j >= 70 && j < 80){c++; //成绩大于70小于80时b加一}else if(j >= 60 && j < 70){d++; //成绩大于70小于60时b加一}else{e++; //成绩小于60时e加一}}printf("%d %d %d %d %d",a,b,c,d,e);return 0;
}
6 特殊a串数列求和
#include <stdio.h>int main()
{int a,n,i;double s = 0.0,x = 0.0;do{scanf("%d %d",&a,&n);}while(a<=0 || a > 9 || n <= 0 || n > 9); //控制a和n的范围for(i = 0;i < n;i++){x = x*10 + a; //计算每一个aa……a的值s = s + x; //求和}printf("s = %.0lf",s); //输出整数return 0;
}
7 水仙花数
#include <stdio.h>
#include <math.h>
int main()
{int N,i,j,k,s=1,sum=0,e,a;scanf("%d",&N);for(i=pow(10,N-1);i<pow(10,N);i++) //查找所有N位数{e=i;for(k=1;k<=N;k++){a=i%10; //求个位数i=i/10;for(j=1;j<=N;j++){s=s*a; //算a的N次方}sum=sum+s;s=1;}if(sum==e) //如果符合条件{printf("%d\n",e);}sum=0;i=e;}return 0;
}
8 打印沙漏
#include <stdio.h>
int main()
{int N,i,j=0,m,n,sum=0;char c;scanf("%d %c",&N,&c);for(i=1;1+2*(i*i-1)<=N;i++){j++;}//算最大上半部分沙漏的行数for(m=1;m<=j;m++)//打印上半部分沙漏{for(n=1;n<=2*j-m;n++){if(n<=m-1)//每一行打印不同的空格数和字符数printf(" ");else{printf("%c",c);sum++;//记录下打印了多少字符}}printf("\n");}for(m=1;m<j;m++)//打印下半部分沙漏{for(n=1;n<=j+m;n++){if(n<=j-1-m)//每一行打印不同的空格和字符printf(" ");else{printf("%c",c);sum++;//记录下打印了多少字符}}printf("\n");//换行}printf("%d",N-sum);//输出剩余的字符数return 0;
}
四、实验的分析与思考
1、 找出最小值
先令第一个数等于最小值,然后通过循环比较后面的数,小于最小值则赋值给最小值。
2 打印九九口诀表
利用双重循环分别对行和列进行控制。
3 计算阶乘和
先利用循环进行阶乘运算,然后求和。
4 求整数段和
把两个数中间的数打印出来,一个数字占五位并记录打印的次数,每当打印次数为5的倍数的时候,换行一次,当打印总次数为五的倍数的时候最后不换行。
5 统计学生成绩
根据学生的成绩通过循环进行和条件的比较,符合条件则相应数加一。
6 特殊a串数列求和
先利用循环求出aa...a的值,再求和
7 水仙花数
把每一位数都算出来,利用循环来求他们的N次方,再求和,判断是否符合条件。
8 打印沙漏
先算出能打印沙漏的上半部分行数的最大值,然后在根据数量关系打印上半部分沙漏,之后再根据数量关系打印下班部分沙漏。
假设N=5,上半部分最大行数为j=3
行数 空格 字符 sum 所以行数于sum的关系为sum=N+1-行数
1 0 5 5 空格数于行数的关系为空格数等于行数-1
2 1 3 4
3 2 1 3
行数 空格 字符 sum 所以行数于sum的关系为sum=行数+j
1 1 3 4 空格数于行数的关系为空格数等于j-1-行数
2 0 5 5 空格数逐渐增大就加行数,逐渐减小就减行数
C语言 基于循环结构的程序设计(PTA)相关推荐
- c语言程序设计 徐庆生,C语言中循环结构程序课的教学设计与探讨.doc
C语言中循环结构程序课的教学设计与探讨 摘要:循环结构的程序设计是面向过程的程序设计课程的核心部分,掌握好循环结构的程序设计技术对学好此类课程至关重要.本文重点介绍了"C语言程序设计&quo ...
- c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt
C语言-5循环结构(PPT)复习课程.ppt 第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 wh ...
- c语言里凤霞答案,C语言中循环结构的教学方法研究
摘要:文章从C语言课程的教学现状入手,分析了大班教学模式存在的问题,提出了新的教学方法.循环结构是C语言教学中的重点和难点.本文以双重循环中九九乘法表的输出为例探讨了在教学过程中如何设计才能把一个复杂 ...
- c语言永真循环格式,C语言的循环结构.ppt
C++语言的循环结构,杨 基 伦 在程序设计工作中,为了完成既的任务,必须有效地控制程序流程,也就是要控制好语句的执行顺序.程序的流程控制有多种方式,但基本上有三种:即顺序控制.条件分支控制和循环控制 ...
- c语言有关循环结构运用的题,应用C语言循环结构解决等差数列求和问题微课设计研究...
高妍 [摘 要]本文以应用C语言循环结构解决等差数列求和问题作为微课主要内容,阐述了对微课设计进行的研究与探索. [关键词]C语言:循环结构:微课 当今,信息化高速发展,数字技术正在影响和改变着我们生 ...
- c语言 循环结构 ppt,C语言中 循环结构.ppt
<C语言中 循环结构.ppt>由会员分享,可在线阅读,更多相关<C语言中 循环结构.ppt(42页珍藏版)>请在皮匠网上搜索. 1.第五章循环控制结构,1,本章知识点:,whi ...
- Linux嵌入式学习---c语言之循环结构
Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...
- c语言中循环结构的作用,C语言循环结构知识点
C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...
- c语言利用循环结构解决密码转换,C语言课件第六章循环结构.ppt
C语言课件第六章循环结构 第6章 循环结构程序设计 6.1循环结构的组成 循环结构:描述有规律的重复操作问题. 组成:要重复执行的操作,重复执行所需的条件. 例6.1:求10! . 分析:计算1*2* ...
最新文章
- 2021年人工神经网络第四次作业:基于MATLAB的求解
- Redis:事务、管道、Lua脚本
- python爬虫表格中清除空格_爬虫清洗:python strip()函数 去空格\n\r\t函数的用法
- 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(一)
- Shell case esac语句
- Java 获取链表的元素
- Gym - 101755G Underpalindromity (树状数组)
- ROS学习笔记13(测试一个简单的消息发布和消息订阅)
- CSS自定义动画@keyframes的使用
- 蓝桥杯2016年第七届C/C++省赛B组第八题-四平方和
- Hard To Get歌词分析
- HP 滤波 (Hodrick Prescott Filter)
- XF660R型号良田高拍仪接口开发,通过图片文件的二进制数据进行图片上传
- DEVELOPMENT OF A LOW-COST VISION SYSTEM FOR FINDING CONTOUR AND SURFACE DEFECTS ON CAST IRON ENGINE
- 冰点还原密码查看工具
- Nuke对图片添加Alpha通道
- android 实现冒泡动画,android 触摸事件冒泡动画效果
- 中蜂几月份自然分蜂_蜜蜂一年自然分蜂几次?
- 程序员python代码打招呼方式_某编程少年说他是Python大神,神级程序员不用一行代码教他做人!...
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例53