pta输出三角形字符阵列c语言,C语言l|博客园作业11

本文分享了C语言程序设计II课程中的编程练习,包括判断特定条件的数字和统计问题的解决方案,涉及函数定义、循环和条件判断等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个作业属于哪个课程

C语言程序设计II

这个作业要求在哪里

链接

我在这个课程的目标是

掌握C语言以及熟练运用

这个作业在哪个具体方面帮助我实现目标

询问同学,百度,vs2019上的报错

参考文献

链接

1810059-20191205175834727-1909448325.png

1.1 题目名

6-1 统计某类完全平方数

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。

1.1.1数据处理

整型变量:int IsTheNumber(const int N)

{

int m,n,i,j;

n=N;

m=(int)sqrt(N);//将平方数开方

if (m*m==n)//判断是否是平方数

{

int f[10]={0};//取0-9的数作为位数,用数组作为表头

while (n>0)

{

j=n%10;//取个位数

for (i=0;i<=9;i++)

{

if (j==i)

{

f[i]++;//如果取的个位数与i相等,就在数组对应的表头那里都加一

if (f[i]>1)//题目上说至少两个相等的数,则大于一就ok

{

return 1;//返回1

}

}

}

n/=10;//取下一位数

}

return 0;//返回0

}

return 0;

}

1.1.2实验代码截图

1810059-20191205181421867-2054201686.png

1.1.3 造测试数据

输入数据

输出数据

说明

105 500

cnt=6

样例

100 1000

cnt=9

说明,正确

400 800

cnt=4

说明,正确

1.1.4 PTA提交列表及说明

1810059-20191205181733778-1114089593.png

编译错误:开根号那里把int写在了m前面,但应该sqrt前面()加上。

部分正确:最后判断的时候用break,但题目要求要返回1.

1.2 题目2

6-2 统计各位数字之和是5的数

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。

函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。

函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式

1.2.1 数据处理

整型变量:int is(int n)

{

int a=0,b=0;

while (n!=0)

{

b = n % 10;//提出个位数

n /= 10;//取下一位数

a += b;//整和

}

if (a == 5)//判断整和数是否等于5

return 1;

else

return 0;

}

void count_sum(int a, int b)

{

int sum = 0, count = 0, i;

for (i = a; i <= b; i++)

{

if (is(i))//以is函数的if为条件来进行判断

{

count++;//计数满足的个数

sum += i;//整数的和

}

}

printf("count = %d, sum = %d", count, sum);

}

1.2.2 实验代码截图

1810059-20191205192633745-1874138957.png

1.2.3 造测试数据

输入数据

输出数据

说明

104 999

104 is counted.count = 15, sum = 3720

样例

100 999

count = 15, sum = 3720

说明,正确

16 400

count = 16, sum = 2555

说明,正确

1.2.4 PTA提交列表及说明

1810059-20191205193139121-1500309928.png

编译错误:if判断五的那里的return没打;,

2.代码互评

1810059-20191128135215055-470332623.png

1810059-20191128135249504-39191713.png

上图为同学的,下图为我自己的

上图:1.直接就是三个条件往上怼 2.printf那里的6%d没打空号 3.for语句还是要加个大括号吧。

下图:1.比上图啰嗦,没想到可以直接用I来表示 2.上图代码感觉容易出错,下图稳定。

3.1 学习进度条

周/日期

这周所花时间

代码行

学到的知识点简介

10/7-10/10

9+

30行+

scanf()语句,if-else语句,平方,根号

10.16/10.17

5个小时

141

如何运用for语句

10.23/10.26

5个小时

141

如何定义函数,运用while语句

10.30/11.2

8小时

200+

如何在if else和for中嵌套

11.6/11.7

5小时

100+

如何灵活的运用switch语句

11.13/11.14

5小时

80+

n=getchar();和switch加return 0

11.20/11.21

5小时

92

数组怎么用

11.27/11.28

5小时+

89

这次的第一题

3.2 累积代码行和博客字数

1810059-20191128140506156-1139763592.png

3.3 学习内容总结和感悟

3.3.1 学习内容总结

这周没有学习新内容,复习各科以对应期末考试。

3.3.2 思维导图

1810059-20191121162200394-664682488.png

3.3.3 学习体会

这周复习线代和高数,以及准备英语口语考试,来了来了,期末考试它来

------------恢复内容结束------------

|这个作业属于哪个课程|C语言程序设计II|

|------|----|

|这个作业要求在哪里|链接|

|我在这个课程的目标是|掌握C语言以及熟练运用|

|这个作业在哪个具体方面帮助我实现目标|询问同学,百度,vs2019上的报错|

|参考文献|链接|

1810059-20191128132319686-564898690.png

1.1 题目名

7-8 输出三角形字符阵列

本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列

1.1.1数据处理

整型变量:int n, i, j;

char op;

op = 'A';//将op赋为ascllA

scanf("%d", &n);

for (i = 1; i <= n; i++)//行数

{

for (j = 1; j <= n-i+1; j++)//列数

{

printf("%c ", op);//打印字符

op++;//‘A’加一

}

printf("

");

}

1.1.2实验代码截图

1810059-20191128132759964-2077474567.png

1.1.3 造测试数据

输入数据

输出数据

说明

4

A-J

样例

5

A-O

说明,正确

3

A-F

说明,正确

1.1.4 PTA提交列表及说明

1810059-20191128133055827-1999664863.png

编译错误:scanf后面加了_s,

答案错误:列数的for那里是j<=I,但与那个九九乘法表不一样,它每一行都减一个字符,应是n-I+1.

1.2 题目2

6-2 统计各位数字之和是5的数

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和

函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。

函数count_sum利用函数is统计给定区间[a, b]内有多少个满足上述要求(即令is返回1)的整数,并计算这些整数的和。最后按照格式

1.2.1 数据处理

整型变量int is(int n)

{

int a=0,b=0;

while (n!=0)

{

b = n % 10;//提出个位数

n /= 10;//取下一个位数

a += b;//整和

}

if (a == 5)//判断整和的数是否等于五

return 1;

else

return 0;

}

void count_sum(int a, int b)

{

int sum = 0, count = 0, i;

for (i = a; i <= b; i++)

{

if (is(i))//以is的判断为条件

{

count++;//输出

sum += i;

}

}

printf("count = %d, sum = %d", count, sum);

}

1.2.2 实验代码截图

1810059-20191205201358181-730433496.png

1.2.3 造测试数据

输入数据

输出数据

说明

104 999

count = 15, sum = 3720

样例

15 500

count = 19, sum = 3866

说明,正确

400 900

count = 3, sum = 1311

说明,正确

1.2.4 PTA提交列表及说明

1810059-20191205201822968-866502441.png

编译错误:第一个if那里的return后面没加;sum和count没有初始化。

格式错误;有些大扩号没打好。

2.代码互评

1810059-20191205202520464-192010462.png

1810059-20191205202558559-305828124.png

上图为同学的,下图为我自己的

上图:1.没看懂第二个for中的m/=10是什么意思2.可以说非常详细,一步一步来的3.还判断了奇偶性。

下图:1.直接就判定2.在条件中提数3.比上图简洁很多。

3.1 学习进度条

周/日期

这周所花时间

代码行

学到的知识点简介

10/7-10/10

9+

30行+

scanf()语句,if-else语句,平方,根号

10.16/10.17

5个小时

141

如何运用for语句

10.23/10.26

5个小时

141

如何定义函数,运用while语句

10.30/11.2

8小时

200+

如何在if else和for中嵌套

11.6/11.7

5小时

100+

如何灵活的运用switch语句

11.13/11.14

5小时

80+

n=getchar();和switch加return 0

11.20/11.21

5小时

92

数组怎么用

11.27/11.28

5小时+

89

这次的第一题

12.4/12.5

5小时+

58

这次的编程题(太难了)

3.2 累积代码行和博客字数

1810059-20191205204557758-139290662.png

3.3 学习内容总结和感悟

3.3.1 学习内容总结

这周新学习了两种函数,讲道理到现在我也没搞清楚,只知道那个静态变量的值不会改变,而局部变量会在被返回

的时刻就会删除了。

3.3.2 思维导图

1810059-20191205205615511-763070784.png

3.3.3 学习体会

这周复习线代和高数,而且也学了新东西,但是嘞讲道理,这周的题目有点难,我们亲爱的助教他都还没写完,我一看那两

个编程题,我人就傻了,还要复习其他科目,难啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值