c语言第五次作业
(一)改错题
1、错误信息:
错误原因:for后面 有分号,for里面是逗号。
改正方法:把for后面的分号去掉,把for里面的逗号换成分号。
2、错误信息:
错误原因:公式不对
改正方法:celsius=5*(fahr-32.0)/9.
3、错误信息:
错误原因:有多个语句缺少大括号
改正方法:在二条语句前后加上{}。
4、错误信息:
错误原因:fahr每次增加2,而这个程序是加 1
改正方法:fahr =fahr+2
5、错误信息:
错误原因:fahr定义得是int输出确是%3.0f
改正方法:把%3.0f改成%3d
(二)学习总结
1、①定义整型变量i,num,odd,even
②给odd和even赋值odd = 0,even = 0
③给i赋值i=1
④判断i是否<=10
⑤是的话输入num
⑥判断i跟二求余是否=0
⑦如果=0输出even++,如果!=0输出odd++。
⑧执行i++
⑨在输入一个num
⑩判断i跟二求余是否=0
11.如果=0输出even++,如果!=0输出odd++。
12.执行i++
.....
13.输入num
14.判断i跟二求余是否=0
15.如果=0输出even++,如果!=0输出odd++。
16.i>10
17.输出odd,even。
输出奇数的个数和偶数的个数。
2.增量运算符
(1)
单独使用前缀和后缀没区别
(2)
1.定义整型变量i,j
2.分别给i,j赋值i=2,j=2.
3.输出i,j的值
i为后缀先输出再加一,j为前缀先加一再输出。说明做成分的时候前缀和后缀是不一样的。
这两条输出语句执行完后,i和j的值分别是2,3
3.(1)
(2)
(3)
(4)
循环体的认定与缩格形式无关,与{}有关。(1)(3)(4)格式是正确的缩进格式。for下面大括号里面的就是循环体,如果没有大括号离for语句最近的一个语句就是循环体。
(三)实验总结
1.求奇数分之一序列前N项和
(1)题目
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
(2)流程图
(3)源代码
# include<stdio.h>
int main(void)
{
int N,i;
double sum;
scanf("%d",&N);
sum=0;
for(i=1;i<=N;i++)
{
sum = sum + 1.0/(2*i-1);
}
printf("sum = %.6f",sum);
return 0;
}
(4)实验分析
问题1:答案错误
原因:1/(2*i-1)是整数,应该有小数
解决办法:把1改成1.0
(5)本题PTA提交列表
3 .奇偶分家
(1)题目
给定N个正整数,请统计奇数和偶数各有多少个?
(2)流程图
(3)源代码
#include <stdio.h>
int main(void)
{
int N,a,ou,ji,i;
scanf("%d",&N);
ji=0;
ou=0;
for(i=1;i<=N;i++)
{
scanf("%d",&a);
if(a%2!=0)
{
ji=ji+1;
}
else
{
ou=ou+1;
}
}
printf("%d %d",ji,ou);
return 0;
}
(4)实验分析
问题1:结果不对
原因:没给ji ou 赋值
解决办法:ji=0,ou=0
(5)本题PTA提交列表
5. 统计字符
(1)题目
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
(2)流程图
(3)源代码
#include <stdio.h>
int main()
{
int c = 0,d = 0,e = 0,f = 0,i;
char a;
for(i = 1;i <= 10;i++)
{
scanf("%c",&a);
if((a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z'))
{
c = c + 1;
}
else if(a == '\n' || a == ' ')
{
d = d + 1;
}
else if(a >= '0' && a <= '9')
{
e = e + 1;
}
else
{
f = f + 1;
}
}
pdrintf("letter = %d, blank = %d, digit = %d, other = %d",c,d,e,f);
return 0;
}
(4)实验分析
问题1:输入不对
原因:没给0和9加''
解决办法:a >= '0' && a <= '9'
(5)本题PTA提交列表
7. 求交错序列前N项和
(1)题目
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
(2)流程图
(3)源代码
#include <stdio.h>
#include <math.h>
int main(void)
{
int N,i;
double sum;
scanf("%d",&N);
sum=0;
for(i=1;i<=N;i++)
{
sum=sum+i/(i*2.0-1)*pow((-1),i-1);
}
printf("%.3f",sum);
return 0;
}
(4)实验分析
问题1:结果不对
原因:-1的次幂不对
解决办法:pow((-1),i-1)
(5)本题PTA提交列表
(四)博客互评
卢玉:http://www.cnblogs.com/luyu0322-/p/7809912.html。
滕文清:http://www.cnblogs.com/tengwenqing/p/7811860.html。
姚纪远:http://www.cnblogs.com/yjy751522356/p/7816925.html。