黑马程序员——ios基础---练习:2
来源:互联网 发布:ubuntu touch 平板安装 编辑:程序博客网 时间:2024/06/07 11:19
C5-----------------------------------------------------------------------------
一、改错题
二、分析题
1. 以下程序的输出结果是( 20 )。
main(){
int n=4;
while (n--)
printf(〞%d〞,--n);
}
2. 以下程序的输出结果是(101091)。
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
3. 当执行以下程序段时。A
x=-1;
do
{x=x*x;}
while (!x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无数多次 D.系统将提示有语法错误
4. 执行以下程序后输出的结果是( 0 )。
main()
{ int y=10;
do{
y--;}
while(--y);
printf("%d\n",y--);}
5. 下面程序的输出结果是( 5,4,1 )。
main()
{ int x=3,y=6,a=0;
while (x++!=(y-=1))
{a+=1;
if (y<x) break;
}
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
6.若i,j已定义为int类型,则以下程序段中内循环的总的执行次数是 ( 20 )。
for (i=5;i;i--)
for (j=0;j<4;j++)
{…}
7.在下列选项中,没有构成死循环的程序段是( c )。
A.int i=100;
while (1)
{
i=i%100+1;
if(i>100) break;
}
B. for ( ; ;);
C.int k=1000;
do {++k;}while (k>=10000);
D.int s=36;
while (s) ;
--s;
8.列程序运行的情况是( d )。
main()
{ int i=1,sum=0;
while(i<10)sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A.i=10,sum=9 B.i=9,sum=9 C.i=2,sum=1 D.运行出现错误
9.下面程序的运行结果为( 12457810 )。
main()
{ int n;
for(n=1;n<=10;n++)
{ if(n%3==0)continue;
printf("%d",n);
}
}
10.输出结果?(0、2、4、6)
#include <stdio.h>
int main()
{
for (int i = 0; i<10; i++) {
if (i % 2) continue;
if (i == 8) break;
printf("i=%d\n", i);
}
return 0;
}
11.输出结果?
#include <stdio.h>
int main()
{
for (int i = 0; i<5; i++) {
for (int j = 0; j<5; j++) {
printf("i=%d, j=%d\n", i, j);
if (j == 1) {
break;
}
}
if (i == 2) {
break;
}
}
return 0;
}
i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1
三:编程题
/*
打印1 - 100中不能被7整除又不包含7的数
*/
#include <stdio.h>
int main(int argc, const char * argv[]) {
for (int i = 1; i<100; i++) {
if ((i%7==0)||(i%10==7)||(i/10==7)) {
continue;
}
printf("%d\n",i);
}
return 0;
}
/*
打印九九乘法表
*/
#include <stdio.h>
int main(int argc, const char * argv[])
{
// 外循环控制行数
for (int i = 1; i <=9; i++) {
// 内循环控制列数
for (int j = 1; j <= i; j++) {
// 输出结果
printf("%d * %d = %d\t", i, j, i*j);
}
// 换行
printf("\n");
}
return 0;
}
/*
一农户在集市上卖西瓜,他总共有1020个西瓜,第一天卖掉一半多两个,第二天卖掉剩下的一个多两个,问照此规律卖下去,该农户几天能将所有的西瓜卖完?
*/
int main(int argc, const char * argv[])
{
// 瓜的总数
int count = 1020;
// 天数
int day = 0;
// 计算天数
while (count) {
// 每天卖剩下的瓜
int temp = count/2 - 2;
count = temp;
day++;
}
printf("day = %d\n", day);
return 0;
}
假设银行当前整存零取五年期的年利息为2.5%,现在某人手里有一笔钱,预计在今后的五年当中每年年底取出1000,到第五年的时候刚好取完,计算在最开始存钱的时候要存多少钱?
int main(int argc, const char * argv[])
{
// 总金 a*1.025-1000=0 a=(a+1000)/(1+0.025)
float total = 0;
for (int i = 0; i < 5; i++) {
// 倒推第5年年初存款,用1000/
total = (total + 1000)/(1 + 0.025);
}
// 输出结果
printf("total = %.3f\n", total);
return 0;
}
/*
假设一个班中有20个学生,输入某科考试的成绩然后统计出该班不及格的学生人数
*/
int main(int argc, const char * argv[])
{
int score , count = 0;
// 循环录入学生成绩
for (int i = 1; i <= 20; i++) {
printf("请输入 %d 个学生的成绩\n",i);
scanf("%d" , &score);
// 判断学生成绩是否及格
if (score < 60) {
count++;
}
}
printf("不及格人数 %d 个", count);
return 0;
}
C6-----------------------------------------------------------------------
1.
#include <stdio.h>
int main()
{
for (int i = 0; i<5; i++)
{
// 不加上大括号{}的话,变量a的作用域混乱\不明确
int a = 20;
}
return 0;
}
// 1处错误
2.
// 应该将test函数进行提前声明,或者在main函数前面定义
void test();
int main()
{
test();
return 0;
}
void test()
{
}
// 1处错误
3.
void test1()
{
// void表示没有返回值,因此不应该return一个整数
return; // 省略return也可用
//return 0;
}
int test2()
{
// 返回值是int类型,因此return后面应该跟上一个整数
return 0; // 这个0仅仅是随便写的,具体返回什么值,应该根据业务逻辑
// return;
}
int main()
{
// test2不接收任何参数
test2();
// test2(10);
return 0;
}
// 3处错误
4.
void test()
{
}
int main()
{
// 函数不能嵌套定义
/*
void test()
{
}*/
test();
return 0;
}
// 1处错误
5.
// 不允许有函数同名,这里将前面的test改为了test2
void test2()
{
}
void test(int n)
{
}
int main()
{
// test函数只接收1个参数
test(10);
// test(10, 20);
return 0;
}
// 2处错误
6.
void test1()
{
}
void test2(int n)
{
}
int main()
{
// test2接收的是int类型的参数,而test1没有返回值
// 因此test1()不能作为test2的参数
test2(10);
//test2( test1() );
return 0;
}
// 1处错误
二、分析题
1. 打印结果42
#include <stdio.h>
int sum(int a, int b)
{
return a + b;
}
int two(int n)
{
return n * 2;
}
void test(int n)
{
printf("%d\n", two(n));
}
int main()
{
test( sum(10, 11) );
return 0;
}
三、编程题
1.
/*
题目:
编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。
比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
*/
int pieAdd(int n)
{
/*
解题思路:先计算出每个数字的阶乘,再把所有的阶乘加起来
*/
// 1.如果传入的n值不合理,直接返回0
if (n<1) return 0;
// 2.定义一个变量,用来记录每次阶乘相加的结果
int sum = 0;
for (int i = 1; i<=n; i++) { // 一共有多少个数字
// 3.定义一个变量,记录当前数字对应的阶乘
int multi = 1;
for (int j=1; j<=i; j++) {
multi *= j;
}
// 4.累加每次的阶乘
sum += multi;
}
return sum;
}
int main()
{
int result = pieAdd(3);
printf("%d\n", result);
return 0;
}
4.有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁,问第4个人岁数,他说比第3个人大两岁,问第3个人岁数,他又说比第2个人大两岁,问第2个人岁数,他说比第1个人大两岁,最后问第1个人他说10岁。编写程序,当输入第几个人时求出其对应的年龄。
int age(int n)
{
int f;
if(n = 1) //当n等于1时,f等于10
f = 10;
else
f = age(n-1)+2;//递归调用age函数
return f;
}
5.A/B/C/D/E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉,第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。C/D/E依次醒来,按同样的方法拿鱼。问他们合伙至少捕了多少条鱼?
C语言算法竞赛题目:捕鱼和分鱼
A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?
根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。
假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)/5。若X满足上述要求,则X就是题目的解。
1.分配的方式相同,即扔掉一条鱼后剩下的鱼正好分成五份,鱼的总数 -1 一定能被5整除
2.我们不知道鱼的总数是多少,那么就假定它是 x 条
3.一共对鱼进行了几次分配 一共5个人,每个人分配1次 一共分配了5次 for循环
4.至少捕了多少条鱼? 只要我们找出一个合理的数字比如所 6 条开始 一点一点增加鱼的数量
我们就要试探 for循环
x
x = ((x - 1) / 5) * 4
x = ((x - 1) / 5) * 4
x = ((x - 1) / 5) * 4
x = ((x - 1) / 5) * 4
*/
int leastFishNum(){
int totalFishNum = 0; //我们要试探进行所以需要一个变量假定捕鱼的总数量数量
//从6条鱼开始试探,
for (totalFishNum = 6; 1; totalFishNum++) {
int flag = 1; //我们还需要一个标记,如果我们试探出了一个合理的数字,用它来结束循环
//5个人一共分配了5次
//我们把试探的值赋值给鱼的总量totalFishNum
int leftFishNum = totalFishNum; //定义一个变量记录每次分鱼后剩下的条数,第一次分为捕鱼的数量
for (int i = 1; i <= 5; i++) {
//如果鱼的总数量减去1一定能被5整除
if ((leftFishNum - 1) % 5 == 0)//满足if条件说明第一次分配完成
{
//经过了第一次分配,A拿走了它的那份
//后面每一次分配都是,拿走第一份剩余四份
//那么剩余的鱼 总数应该是
leftFishNum = 4 * (leftFishNum - 1) / 5; //我们通过假设x的值 (x-1)/5 * 4
// printf("total = %d\n", leftFishNum);
}else
{
flag = 0; //如果不能被整除,就让我们的标记为0
break; //结束当前循环
}
}
//我们的flag 只有在找到了能够瞒住我们分配条件的第一个数出现的时候
//也就是找到了最少要有多少鱼的时候才会为1
if(flag)
{
break;
}
}
//printf("Total = %d\n",totalFishNum); /*输出结果*/
return totalFishNum;
}
- 黑马程序员——ios基础---练习:2
- 黑马程序员——ios基础---练习:1
- 黑马程序员——ios基础---练习:3
- 黑马程序员——ios基础---练习:4
- 黑马程序员———ios基础
- 黑马程序员——c语言基础:循环结构练习
- 黑马程序员—java基础_异常多态练习
- 黑马程序员——字符串2:练习
- 黑马程序员—字符串练习
- 黑马程序员——IOS基础(OC基础)
- 黑马程序员——ios基础---Objective-C:基础语法
- 黑马程序员--ios基础
- 黑马程序员---ios基础
- 黑马程序员——IOS基础——Block
- 黑马程序员——IOS基础——Protocol协议
- 黑马程序员——IOS基础——Copy
- 黑马程序员 ——ios基础 ——循环结构
- 黑马程序员 ——ios基础 ——函数
- 黑马程序员——TCP协议传输(下)
- SOA工程部署时报错:MDS-00054 (composite.xml does not exist)
- 黑马程序员——ios开发基础之C语言预处理命令与文件操作
- ‘tools.jar’ seems to be not in Android Studio classpath解决方法
- 《剑指offer》连续子数组的最大和
- 黑马程序员——ios基础---练习:2
- 集合对象中是线程安全
- adapter刷新
- iOS lipo 判断静态库是否支持64位
- 常用类的练习
- 黑马程序员——ios基础---练习:3
- JSDoc3使用路径名
- 3.Longest Substring Without Repeating Characters
- 好记性不如好博客