1.
第一行是一个整数n(1<=n<=1000),表示有多少个数求和;
第二行是n个整数,每个整数都在-10^5到10^5之间,每个整数之间用空格隔开。
输出和的值(不要输出回车)
这个题其实思路很简单就是建一个数组然后累加;但是在累加的过程中我还是出了一些问题,就是我忘记把初始值设置为0;
然后加出来的数特别大让我以为是程序写错了,设为0之后就没问题了;
#include<stdio.h>
int main()
{
int i,n,a[1000];
int s = 0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
s+= a[i];
}
printf("%d",s);
}
2.
有多个测试用例,每行两个正整数x,y,保证x*y不超过2^31-1。如果x与y都为0,则输入结束。
每行输出一个测试用例的结果,即x与y的最小公倍数。(最后一行有回车)
这个题吧,主要是有多组样例这里用while(scanf("%d%d",&x,&y))表示,x与y都为0用个if表示
然后就是算法问题了,这里判断怎么求最大公约数用的是判断y
#include<stdio.h>
int main()
{
int x,y;
while(scanf("%d%d",&x,&y))
{
int c,s;
s= x*y;
if(x==0&&y==0)
return 0;
else
while(y!=0)
{
c = x%y;
x = y;
y = c;
}
printf("%d\n",s/x);
}
}
3
请求N!(N<=10000),输出结果对10007取余
输入
每行一个整数n,遇到-1结束。
输出
每行一个整数,为对应n的运算结果。
这个题求阶乘倒是,没什么问题,主要是那一句输出结果对10007取余,我们知道Int型是不够满足求阶乘,会产生溢出,所以要用长整型long
但是这个题由于对10007取余了,所以还是可以用int
#include<stdio.h>
int main()
{
int i,n,s;
while(scanf("%d",&n))
{
s=1;
if(n==-1)
return 0;
for(i=1;i<=n;i++)
{
s=(s*i)%10007;
}
printf("%d\n",s);
}
}
4.
青蛙王子
这个题有点复杂
以后再更新
5.
给出一个三角形的底长和高,求三角形的面积。 输入 第一行是一个整数N,表示样例的个数,以后每行两个整数B和H,1<=B,H<=10,000。 输出 每行输出一个三角形的面积,保留一位小数。
这个题吧,首先就是样例的问题,用循环就可以
然后,乘积s是double型而不是float型的,以后要是用float一直错可以换double试试,还有,题目有点错误
题目说的是两个整数,但是事实是浮点数,而且也是double型;
#include<stdio.h>
int main()
{
int n;
double b,h;
double s;
scanf("%d",&n);
while(n--)
{
scanf("%lf%lf",&b,&h);
s = b*h/2;
printf("%.1lf\n",s);
}
}
6.
#include<string.h>
int main()
{
int n;
int i,h;
char a[201];
scanf("%d",&n);
getchar();
while(n--)
{
gets(a);
h = strlen(a);
for(i=0;i<h;i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
else if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
}
printf("%s\n",a);
}
}
7.
海明距离是在指二进制情况下,一个整数变成另外一个整数需要翻转的位数。比如2转换到3需要翻转1位,所以2到3的海明距离是1。给你两个正整数x和y,(x,y<=1,000,000,000)求它们的海明距离。 输入 第一行是一个整数N,表示样例的个数。以后每行两个整数x和y。 输出 每行输出一个整数,及对应样例的结果。
|
||
这一题不怎么会,抄了一点
#include<stdio.h>
int main()
{
int n,i,a,b;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);
a^=b; //a,b的异或运算,把运算结果储存在a中;
b=0; //把b重置为0,用于计数;
while(a)
{
if(a&1) //二进制a于(二进制)...00001的且运算,同1为1,其余为0;即异或运算后的结果最后一位为1时计数+1
b++;
a>>=1; //对a进行右移位运算,去掉最低位,下一次循环比较上一位,直至a的值为0;
}
printf("%d\n",b); //输出异或运算后结果为1的位数有几位,即两个数的海明距离;
}
return 0;
}
8.
计算机中存储的整数都是按补码的型式,一个32位有符号整数的补码的定义为:如果x>=0,则x的补码等于x的二进制表示;如果x<0,那么x的补码为2^32+x的二进制表示。请根据给定的整数,求出它的补码包含有多少位为1。
#include<stdio.h>
int main()
{
int t,b;
while(scanf("%d",&b)!=EOF)
{
int a=0;
for(t=0;t<32;t++)
{
if (b&1)
a++;
b=b>>1;
}
printf("%d\n",a);
}
}