XTU C语言程序设计实践作业4
2017-09-23 21:54
861 查看
1.
给你n个数,请输出其中奇数的个数。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个数,如果N为0则表示输入结束。第二行是N个整数,每个整数之间用一个空格隔开。
输出
每行输出一个样例的结果,即奇数的数目。
这个题主要是数组结合判断,就是那个s=0;放在while()里面
#include<stdio.h>
int main()
{
int i,n;
int a[101];
while(scanf("%d",&n))
{
if(n==0)
return 0;
int s=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==1)
s++;
}
printf("%d\n",s);
}
}
2.
给你两个闭区间,请判断这两个区间是否相交。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个样例。每个样例占两行,每行是两个整数,X,Y(0<=X<=Y<=1000),表示闭区间[X,Y]。
输出
每行输出一个样例的结果,如果相交,那么输出“Yes”,否则输出“No”。
写这个题目的时候,出现了Output Limit Exceed,在这里说了下意思,就是提示你的程序产生了过多的输出信息,一般是由于死循环造成的。
比如这个题,我用了while(n--)之后,还使用了for(i=0;i<n;i++),所以出现了过多的输出信息
还有就是这个题的判断过程,将两个端点分别和另一个区间去比较
#include<stdio.h>
int main()
{
int i,n;
int x1,y1,x2,y2;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
if((x2>=x1&&x2<=y1)||(y2>=x1&&y2<=y1)||(x1>=x2&&x1<=y2)||(y1>=x2&&y1<=y2))
printf("Yes\n");
else
printf("No\n");
}
}
3.
数码平方和
一个整数各个数码的平方和的个位数称为它的分类值。给你一个区间[a,b],和一个数码n,请求这个区间内多少数的分类值为n。
输入
第一行是一个整数K,表示样例的个数。每个样例占一行,为三个整数a,b,n(1<=a<=b<=100,000,0<=n<=9)。
输出
每行输出一个样例的结果。
这个题真的难,主要是,首先用个数组来存储1~100000所有数的数码归类,然后在输入输出的时候对从a~b的数给定的数码归类和数组的进行比较
真的脑洞大开,还有就是在判断数码归类的时候
con += (x%10)*(x%10);
con %= 10;
x/=10;
这一段真的很好
#include<stdio.h>
int main()
{
int i,out[100001];
int m,a,b,n;
for(i=1;i<=100000;i++)
{
int con=0;
int x = i;
while(x)
{
con += (x%10)*(x%10);
con %= 10;
x/=10;
}
out[i]=con;
}
scanf("%d",&m);
while(m--)
{
int s=0;
scanf("%d%d%d",&a,&b,&n);
for(i=a;i<=b;i++)
{
if(out[i]==n)
s++;
}
printf("%d\n",s);
}
}
4.
偶数的和
给你n个数,请输出其中偶数的累加和。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个数,如果N为0则表示输入结束。第二行是N个整数,每个整数之间用一个空格隔开。
输出
每行输出一个样例的结果,即偶数的累加和。(输入保证结果可以用32bit的int表示)。
这个题比较简单,用个数组然后判断是否偶数再相加就好
#include<stdio.h>
int main()
{
int i,n;
int a[101];
while(scanf("%d",&n))
{
int s=0;
if(n==0)
return 0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==0)
s+=a[i];
}
printf("%d\n",s);
}
}
5.
三点共线
给你平面上三个点的坐标,请判断三点是否共线。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个样例。每个样例占三行,每行是两个整数,X,Y(-1000<=X,Y<=1000),表示一个点的坐标。
输出
每行输出一个样例的结果,如果三点共线,那么输出“Yes”,否则输出“No”。
这个题想到三点共线就是斜率的问题,将其中两个点的斜率和另外两点的斜率比较,交差相乘是因为有斜率为零或者斜率不存在的情况
然后简单试了下就过了
#include<stdio.h>
int main()
{
int n;
int x1,y1,x2,y2,x3,y3;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
scanf("%d%d",&x3,&y3);
if((y2-y1)*(x3-x2)==(y3-y2)*(x2-x1))
printf("Yes\n");
else
printf("No\n");
}
}
给你n个数,请输出其中奇数的个数。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个数,如果N为0则表示输入结束。第二行是N个整数,每个整数之间用一个空格隔开。
输出
每行输出一个样例的结果,即奇数的数目。
这个题主要是数组结合判断,就是那个s=0;放在while()里面
#include<stdio.h>
int main()
{
int i,n;
int a[101];
while(scanf("%d",&n))
{
if(n==0)
return 0;
int s=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==1)
s++;
}
printf("%d\n",s);
}
}
2.
给你两个闭区间,请判断这两个区间是否相交。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个样例。每个样例占两行,每行是两个整数,X,Y(0<=X<=Y<=1000),表示闭区间[X,Y]。
输出
每行输出一个样例的结果,如果相交,那么输出“Yes”,否则输出“No”。
写这个题目的时候,出现了Output Limit Exceed,在这里说了下意思,就是提示你的程序产生了过多的输出信息,一般是由于死循环造成的。
比如这个题,我用了while(n--)之后,还使用了for(i=0;i<n;i++),所以出现了过多的输出信息
还有就是这个题的判断过程,将两个端点分别和另一个区间去比较
#include<stdio.h>
int main()
{
int i,n;
int x1,y1,x2,y2;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
if((x2>=x1&&x2<=y1)||(y2>=x1&&y2<=y1)||(x1>=x2&&x1<=y2)||(y1>=x2&&y1<=y2))
printf("Yes\n");
else
printf("No\n");
}
}
3.
数码平方和
一个整数各个数码的平方和的个位数称为它的分类值。给你一个区间[a,b],和一个数码n,请求这个区间内多少数的分类值为n。
输入
第一行是一个整数K,表示样例的个数。每个样例占一行,为三个整数a,b,n(1<=a<=b<=100,000,0<=n<=9)。
输出
每行输出一个样例的结果。
这个题真的难,主要是,首先用个数组来存储1~100000所有数的数码归类,然后在输入输出的时候对从a~b的数给定的数码归类和数组的进行比较
真的脑洞大开,还有就是在判断数码归类的时候
con += (x%10)*(x%10);
con %= 10;
x/=10;
这一段真的很好
#include<stdio.h>
int main()
{
int i,out[100001];
int m,a,b,n;
for(i=1;i<=100000;i++)
{
int con=0;
int x = i;
while(x)
{
con += (x%10)*(x%10);
con %= 10;
x/=10;
}
out[i]=con;
}
scanf("%d",&m);
while(m--)
{
int s=0;
scanf("%d%d%d",&a,&b,&n);
for(i=a;i<=b;i++)
{
if(out[i]==n)
s++;
}
printf("%d\n",s);
}
}
4.
偶数的和
给你n个数,请输出其中偶数的累加和。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个数,如果N为0则表示输入结束。第二行是N个整数,每个整数之间用一个空格隔开。
输出
每行输出一个样例的结果,即偶数的累加和。(输入保证结果可以用32bit的int表示)。
这个题比较简单,用个数组然后判断是否偶数再相加就好
#include<stdio.h>
int main()
{
int i,n;
int a[101];
while(scanf("%d",&n))
{
int s=0;
if(n==0)
return 0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]%2==0)
s+=a[i];
}
printf("%d\n",s);
}
}
5.
三点共线
给你平面上三个点的坐标,请判断三点是否共线。
输入
有多组样例,第一行是一个整数N(1<=N<=100),表示有多少个样例。每个样例占三行,每行是两个整数,X,Y(-1000<=X,Y<=1000),表示一个点的坐标。
输出
每行输出一个样例的结果,如果三点共线,那么输出“Yes”,否则输出“No”。
这个题想到三点共线就是斜率的问题,将其中两个点的斜率和另外两点的斜率比较,交差相乘是因为有斜率为零或者斜率不存在的情况
然后简单试了下就过了
#include<stdio.h>
int main()
{
int n;
int x1,y1,x2,y2,x3,y3;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&x1,&y1);
scanf("%d%d",&x2,&y2);
scanf("%d%d",&x3,&y3);
if((y2-y1)*(x3-x2)==(y3-y2)*(x2-x1))
printf("Yes\n");
else
printf("No\n");
}
}
相关文章推荐
- 厦大小学期C语言程序设计实践(一)
- 厦大小学期C语言程序设计实践(二)
- 厦大小学期C语言程序设计实践(三)
- 厦大小学期C语言程序设计实践(四)
- C语言程序设计实践(OJ)-全局变量、文件操作
- XMU C语言程序设计实践(1)
- C语言程序设计实践 4.3 龟兔赛跑
- 厦大小学期C语言程序设计实践(五)
- C语言程序设计实践(OJ)-数组初步
- XMU C语言程序设计实践(2)
- C语言程序设计实践4.5 四边形
- XMU C语言程序设计实践(2)
- C语言程序设计实践4.7简单的运算Ⅱ
- C语言程序设计实践(OJ)-用循环解决问题(II)
- XMU C语言程序设计实践(3)
- C语言程序设计实践4.6 第几天
- C语言程序设计实践 4.8三角形和圆
- C语言程序设计实践(OJ)-算术运算与分支结构
- XTU 程序设计实践模拟考试题1
- C语言程序设计实践-C语言应用实践