一、实验目的与要求

1.用for语句实现循环

(1)求数列前n项和

  • 掌握for语句实现循环的方法

(2)求数列前n项和

  • 掌握for语句实现循环的方法
  • 循环嵌套的使用

2.用while循环语句实现循环

(1)统计学生的最高最低成绩

  • 用for循环计算第n项的值
  • 用for循环计算前n项的和
  • 注意每项的正负号变化

(2)求水仙花数

  • 进一步掌握while语句实现循环的方法

3.用do while 语句实现循环

  • 掌握do/while语句实现循环的方法

4.用while语句和for语句配合实现循环

  • 掌握while语句和for语句配合

5.用for语句嵌套实现循环

(1)百马百担问题

  • 掌握for语句嵌套实现循环的方法

(2)求等差数列

  • 掌握for语句嵌套(3层)
  • 掌握continue的语法

(3)食品分配问题

  • 掌握for语句嵌套实现循环的方法

掌握continue语句的用法

二、实验内容

5.3.1

(1)

1.问题的简单描述:

编写一程序,求出1,1+2,1+2+3···数列中前n项的值。

2.实验代码:

 
#include<stdio.h>
#include<conio.h>
main()
{
int i ,j=,k,s=;
printf("Enter a number:");
scanf("%d",&k);
for(i=;i<=k;)
{
s=s+i;
printf("%d",s);
j++;
} }

问题分析:首先其实我想到了有关等差数列前n项和的公式,运用这个公式虽然是可以得到结果,但思路和循环就没有什么关系了。

(2)

问题的简单描述:

编写一程序,求数列1,-3!,5!,-7!···[(-1)^(n-1)]*(2n-1)!前n项的和。n的值由键盘输入。

#include<stdio.h>
main()
{
int n,i,j,sign=;
float fac,sum;
printf("please input value of n:");
scanf("%d",&n);
sum=0.0;
for(i=;i<=n;i=i+)
{
fac=1.0;
for(j=;j<=*i-;j=j+)
{
fac=fac*j;
}
fac=fac*sign;
sum=sum+fac;
sign=-sign; }
printf("sum=%.0f\n",sum);
}

问题分析:思路个人认为由三部分组成。第一,n的值所规定的阶层的个数。第二,j循环所控制的单个奇数阶层。第三,sign控制的正负值的切换。其中,第二部分相对复杂,因为控制的是奇数的阶层,故是由奇数个数字相乘(比如,5!是由1~5五个数字相乘)。开始对于“阶层”的代码思路不是很熟悉,不知道引入“fac”的作用,导致一直出错。

5.3.2

(1)

1.问题的简单描述:

从键盘上输入若干学生的成绩,统计并输入最高成绩和最低成绩,当输入负数时结束输入。

2.实验代码:

#include<stdio.h>
#include<conio.h>
main()
{
float x,max,min;
printf("please input scores:");
scanf("%f",&x);
max=min=x;
while(x>=)
{
if(x>max) max=x;
if(x<min) min=x;
scanf("%f",&x);
}
printf("\nmax=%f\nmin=%f\n",max,min);
}

问题分析:while()语句的用法,对()内的条件进行填写,问题不大。

(2)

1.问题的简单描述:

求所有的水仙花数(水仙花数是一个三位数的自然数,该数各位数的立方等于该数本身,如153为水仙花数1^3+5^3+3^3=153)。

2.实验代码:

#include<stdio.h>
main()
{
int x,y,z;
int k=;
while(k<=)
{
x=k/;
y=(k/)%;
z=k%;
if(k==x*x*x+y*y*y+z*z*z)
printf("%d\n",k);
k++;
}
}

问题分析:依旧是对while()以及if的条件,基本没有问题。

5.3.3

1.问题的简单描述:

求满足1+1/2+1/3+...+1/n>value这个不等式的n最小值,其中,value是大于1的任何数。

2.实验代码:

#include<stdio.h>
main()
{
float sum,value;
int n;
printf("Input value:");
scanf("%f",&value);
sum=0.0;
n=;
do
{
++n;
sum+=1.0/(float)n;
}
while(sum<=value);
printf("n=%d",n);
}

问题描述:do while ()先进行循环再进行判断,除了这一点之外就是while()后面的条件了,想一下没什么问题。

5.3.4:

1.问题的简单描述:

输入4个数字字符,并将其转化为4位十进制整数后显示出来。

2.实验代码:

#include<stdio.h>
main()
{
char c;
int k,data;
data=;
for(k=;k<;k++)
{
while()
{
c=getchar();
if(c>=''&&c<='')
break;
}
if(k==) data+=(c-'')*;
else if(k==) data+=(c-'')*;
else if(k==) data+=(c-'')*;
else if(k==) data+=(c-'');
}
printf("Data=%d",data);
}

问题描述:思路,if的嵌套以及for 循环都相对简单,只是编写的语法不是很理解。

5.3.5:

(1)

1.问题的简单描述:

有100匹马,要驼100担货物,其中1匹大马可以驼3担,1匹中马可以驼两担,两匹小马可以驼1担,请问,大马、中马和小马可以有多少种组合。

2.实验代码:

#include<stdio.h>
main()
{
int m,n,k;
int sum=0;
printf("各种驮法如下:\n");
for(m=1;m<=100;m++)
for(n=1;n<=100-m;n++)
{
k=100-m-n;
if((k%2==0)&&(3*m+2*n+0.5*k==100))
{
printf("大马%3d匹;中马%3d匹;小马%3d匹.\n",m,n,k);
sum++;
}
}
printf("共有%d中驮法.\n",sum);
}

 问题分析:显然,大,中,小马的数量都要满足(0~100)之内。故在满足等式3m+2n+0.5k=100即可。每求出一组m,n,k,则sum加一,在重新进行循环。

(2)

1.问题的简单描述:

编写程序,求一正整数等差数列的前6项的和,该数列前4项之和是26,前4项之积是880。

2.实验代码:

#include<stdio.h>
main()
{
int a,b,c,d,i,sum=;
for(a=;a<=;a++)
for(d=;d<=;d++)
{
b=*a+*d;
if(b!=)
continue;
else
{
c=a*(a+d)*(a+*d)*(a+*d);
if(c!=)
continue;
else
for(i=;i<;i++)
{
printf("%d,",a+i*d);
sum=sum+(a+i*d);
}
}
}
printf("\n 数列的前六项的和:%d\n",sum);
}

问题分析:首先要知道这个六个数组成的数列要用什么来代替输出的结果。由题意可知,数列的第一项(a)要知道,前四项的和(b)以及前四项的积(c)都要知道。接下来是这个数列的项数(i)以及等差数列的公差(d).搞清楚这些元素所表示的东西之后思路就很清楚了。无非是先对整个数列的前四项和、前四项积进行判断好确定是否是我们要求的数列。用if条件进行判断然后continue跳出不符合大的数列,继续循环直到正确为止。最后求出前六项的和。

(3)

问题描述:有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?。

实验代码:

#include<stdio.h>
main()
{
int x,y,z,sum;
sum=;
for(x=;x<;x++)
{
for(y=;y<;y++)
{
z=-x-y;
if((z!=)&&(*x+*y+z==))
{
printf("大学生%3d\t中学生%3d\t小学生%3d\n",x,y,z);
sum=sum+;
}
else
continue;
}
}
printf("sum=%d\n",sum);
}
#include<stdio.h>
main()
{
int x,y,z,sum;
sum=;
for(x=;x<;x++)
{
for(y=;y<;y++)
{
z=-x-y;
if((z!=)&&(*x+*y+z==))
{
printf("大学生%3d\t中学生%3d\t小学生%3d\n",x,y,z);
sum=sum+;
}
else
continue;
}
}
printf("sum=%d\n",sum);
}

问题分析:其实这道题的思路和(1)题使用一样的,同样是通过for循环逐渐对问题的结果进行筛选,当然,这里用到的是continue语法,相当是前两题的集合。

小结:看一个问题要知道需要多少变量很重要,尤其是要知道它们分别表示什么,不然就很难看懂,更别说是编写出来。在知道每个变量所表示的含义之后对其循环的使用就会更加得心应手,而相关条件语句的使用相信大家都已经比较熟悉了。

C语言作业3的更多相关文章

  1. C语言作业评价标准

    C语言作业评价标准 作业内容: 每周作业分为基础作业.挑战作业和预习作业: 基础作业为本周所学内容的巩固: 挑战作业包括但不仅限于所学知识的综合运用: 预习作业为下周所学内容的任务单,要求必须在课前完 ...

  2. 第一次c语言作业。

    第一次c语言作业 作业1 2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 我认为计算机科学与技术是研究信息过程.用以表达此过程的信息结构和规则及其在信息处理系统中实现的学科.这门学科是为 ...

  3. 我的第三次C语言作业

    我的第三次C语言作业 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2 这个作业要求在哪里 https://edu.cnblogs.co ...

  4. 做完c语言作业的心得

    算是第一次自己接触c语言,并不是很深入的了解了,但也完成了第一次课的作业.在没有复制粘贴的情况下,8遍的简单编程让我记下了它基本的格式. 实验1.2.3.7都是基本的输入字,和课上的练习差不多,巩固最 ...

  5. 第一周C语言作业

    一.PTA实验作业 题目1.温度转换 1.实验代码 int main() { int fahr = 150,celsius; celsius = 5 * (fahr - 32) / 9; printf ...

  6. C语言作业--函数

    一.PTA实验作业 题目1: 400-499 中4出现的次数 1. 本题PTA提交列表 2. 设计思路 一.main函数 1.函数声明int fun(int x) 2.定义变量i,k,i表示输入的值, ...

  7. C语言作业(三)

    一.完成PTA上四题作业 二.具体解题 (一).A乘以B 1.实验代码 #include <stdio.h> int main() { int A,B,C; scanf("%d ...

  8. c语言作业01-分支、顺序结构

    1.本章思考总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 这一个星期算是我学习c语言的起点,因为暑假没有提前自学c语言,所以一上课时会觉得比较吃力也难以跟上其他大部分同 ...

  9. C语言作业03-函数

    1.本章学习总结 1.1 思维导图 1.2本章学习体会,代码量学习体会 1.2.1学习体会 通过这几周的函数学习,让我明白了函数的重要性,在很多时候运用函数,会使得代码分工明确,逻辑严密,不繁琐.函数 ...

  10. 第一次C语言作业:博客随笔

    1)你觉得大学和高中有什么差别?具体学习上哪? 大学自主学习较多,锻炼自己独立的品质.在学习上,增加了课程的深度和难度,由更多的活动. 2)我希望大学的师生关系是?阅读上述博客后对师生关系有何感想? ...

随机推荐

  1. 安装php的lavavel框架的流程(亲测)

    windows上安装配置laravel 初次接触laravel会觉得它的安装方式比较不一样,与Linux上安装软件的方式很相似. 学习laravel的最好方式当然是看官方文档,笔者就在这里讲官方文档上 ...

  2. 【集训队互测2015】Robot

    题目描述 http://uoj.ac/problem/88 题解 维护两颗线段树,维护最大值和最小值,因为每次只有单点查询,所以可以直接在区间插入线段就可以了. 注意卡常,不要写STL,用链表把同类修 ...

  3. App自动化(1)--Appium-Android环境搭建

    本次笔记记录Appium-Android环境搭建,主要实现在windows上通过python编写脚本来实现模拟器上安装的app自动化测试. 主要步骤:安装node.js,配置JDK环境,配置Andro ...

  4. Educational Codeforces Round 56 (Rated for Div. 2) D

    给你一个无向图 以及点的个数和边  每个节点只能用1 2 3 三个数字 求相邻 两个节点和为奇数   能否构成以及有多少种构成方法 #include<bits/stdc++.h> usin ...

  5. 定向耦合器 Directional Couplers

    microwave101,干货比较多 传送门:https://www.microwaves101.com/encyclopedias/directional-couplers Directional ...

  6. 配置webpack.config.js中的文件

    webpack.config.js文件中,主要包括 entry:入口文件 output:出口文件 module:模块 plugins:插件 这几部分 1.基本配置 运行 webpack 这一命令可以将 ...

  7. nacos作为配置中心

    分布式配置中心 在微服务架构中,为什么需要一个统一的配置中心呢?如果用一句话来说那就是方便管理,降低出错的可能.比如:你开发环境是一套配置,测试环境是一套,生产环境又是一套.你如果手动去修改,难免会出 ...

  8. python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes...”的解决方法

    使用python3.5.1执行post请求时,一直报错"POST data should be bytes or an iterable of bytes. It cannot be of ...

  9. sql 查询某个条件多条数据中最新的一条数据或最老的一条数据

    sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...

  10. 第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)

    一. 简介 二. 文件系统发布至IIS 三. Web部署发布至IIS 四. FTP发布至IIS 五. Windows服务的形式发布 ! 作       者 : Yaopengfei(姚鹏飞) 博客地址 ...