7-1 A+B for Input-Output Practice (Ⅳ)
#include<stdio.h>
int main()
{
int n,a,b,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
return 0;
}
7-2 计算1到n的和(循环结构)
#include<stdio.h>
int main()
{
int n,sum=0,i=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("%d",sum);
return 0;
}
7-3 判断素数(循环结构)
#include<stdio.h>
int main()
{
int n,i=0;
int flag=1;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
if(n%i==0)
flag=0;
}
if(flag==0||n==1)
printf("This is not a prime.");
else
printf("This is a prime.");
return 0;
}
7-4 求阶乘(循环结构)
#include<stdio.h>
int main()
{
int n;
int sum=1,i=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum*=i;
}
printf("%d",sum);
return 0;
}
7-5 数位数
#include<stdio.h>
int main()
{
int n,i=0,a;
scanf("%d",&n);
while(n>0)
{
a=n%10;
n/=10;
i++;
}
printf("%d",i);
return 0;
}
7-6 数列求和
#include<stdio.h>
int main()
{
int a,n,s;
int i=0,c=0;
scanf("%d\n%d",&a,&n);
for(i=1;i<=n;i++)
{
c+=a;
s+=c;
a=a*10;
}
printf("%d",s);
return 0;
}
7-7 完美的素数
#include<stdio.h>
int main()
{
int n,i,j,k,a;
int flag=1;
int sum=0;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
if(n%i==0)
flag=0;
}
if(flag==1)
{
while(n>0)
{
a=n%10;
n/=10;
sum+=a;
j++;
}
for(k=2;k<=sum-1;k++)
{
if(sum%k==0)
flag=0;
}
}
if(flag==0)
printf("NO");
else
printf("YES");
return 0;
}
7-8 虎子的虎年理财计划
#include<stdio.h>
int main()
{
int n,a=1,i=0;
int sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=a;
a*=2;
}
printf("%d",sum);
return 0;
}
7-9 两个数的比较
#include<stdio.h>
int main()
{
int N,i,a,b;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d %d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
return 0;
}
7-10 求绝对值的最大值
#include<stdio.h>
int main()
{
int n,i=0;
int MAX, max;
int A, x;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &x);
if (x < 0)
A = -x;
else
A = x;
if (A > MAX)
{
max = x;
}
MAX = A;
}
printf("%d\n", max);
return 0;
}
7-11 平方数
#include<stdio.h>
#include<math.h>
int main()
{
int n, m, N;
int i, j, t;
int sum = 0;
scanf("%d", &N);
for (i = 1; i <= N; i++)
{
scanf("%d %d", &n, &m);
if (n > m)
{ t = m; m = n; n = t; }
for (j = n; j <= m; j++)
{
t = sqrt(j);
if (t * t == j)
{ sum += j; }
}
printf("%d\n", sum);
sum = 0;
}
return 0;
}
7-12 圆周率
#include<stdio.h>
int main()
{
int n, i = 0;
float a, sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
a = 1.0 / (4 * i - 3) - 1.0 / (4 * i - 1);
sum += 4 * a;
}
printf("%.5f", sum);
return 0;
}
7-13 做乘法
#include<stdio.h>
int main()
{
int N,i=0;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
printf("%d*%d=%d\n",N,i,N*i);
}
return 0;
}
7-14 简单计算
#include<stdio.h>
#include<limits.h>
int main()
{
int n, m;
int i = 0,sum=0;
int max = -0x3f3f3f3f;
int min = 0x3f3f3f3f;
scanf("%d\n", &n);
for (i = 1; i <= n; i++)
{
scanf("%d", &m);
if (m > max)
{
max = m;
}
if (m < min)
{
min = m;
}
sum += m;
}
printf("%d %d %d", max, min, sum / n);
return 0;
}
7-15 新判断素数(循环结构)
#include<stdio.h>
int main()
{
int n,i=0;
int flag=1;
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
if(n%i==0)
flag=0;
}
if(flag==0||n==1)
printf("NO.");
else
printf("YES.");
return 0;
}
7-16 分数序列
#include<stdio.h>
int main()
{
int n,i;
double sum=0;
double a=2,b=1,c=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=a/b;
c=a;
a=a+b;
b=c;
}
printf("%.6f",sum);
return 0;
}
7-17 计算阶乘和
#include<stdio.h>
int main()
{
int n,s=1,S=0;
int i=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s*=i;
S+=s;
}
printf("%d",S);
return 0;
}
7-18 水仙花数
#include <stdio.h>
int pow(int m,int n)
{ int j=1,s=1;
while(j<=n)
{
s=s*m;
j++;
}
return s;
}
int main()
{
int x,n,i;
scanf("%d",&n);
for(x=pow(10,n-1);x<pow(10,n);x++)
{
int b = x,a,sum=0;
for (i = 1; i <= n; i++)
{
a = b % 10;
b/=10;
sum+= pow(a, n);
}
if (sum == x)
{
printf("%d\n",x);
}
}
return 0;
}
7-19 输出整数各位数字
#include<stdio.h>
int main()
{
long num=0,t,c=1,a;
int i=0;
scanf("%ld",&num);
t=num;
while(t>9)
{
t/=10;
c*=10;
}
for(i=1;c>0;i++)
{
a=num/c;
printf("%ld ",a);
num%=c;
c/=10;
}
return 0;
}
7-20 打印九九乘法表
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%-4d",j,i,j*i);
}
printf("\n");
}
return 0;
}
7-21 找完数
#include<stdio.h>
int main()
{
int m,n,i,j,k,s;
int flag=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
{
int s=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{s+=j;}
}
if(s==i)
{
flag=1;
printf("%d = ",s);
for(k=1;k<s;k++)
{
if(s%k==0)
{
if(k==s/2)
printf("%d",k);
else
printf("%d + ",k);
}
}
printf("\n");
}
}
if(flag==0)
printf("None");
return 0;
}
7-22 编程打印空心字符菱形
#include<stdio.h>
#include<math.h>
int main()
{
char ch;
int h, i = 1, j = 1;//i为第几行,j=1为每行第一个字母出现开始为1序号
int space = 1;//前面的空格字符数
scanf("%c %d", &ch, &h);
int middle = (h / 2) + 1;
int num;//num的意思是关于middle(中间行)的对称 例:h=5,middle=3,那么num=1对应num=5,num=2对应num=4
for (i = 1; i <= h; i++)//从第一行开始i=1,假设h=5,middle=3
{
for (space = 1; space <= fabs(middle - i); space++)//1<=space<=2 在第一行循环两次打两次空格
{
printf(" ");
}
if (i <= middle)//第一行小于middle=3,所以所对应还为一,若i=4的话就对应num=2了
{
num = i;
}
else
{
num = h - i + 1;
}
for (j = 1; j <= 2 * num - 1; j++)//还是在第一行
{
if (j == 1 || j == 2 * num - 1)//打完空格(space)后开始输入字母,在开始和结束打字母
printf("%c", ch + num - 1);
else//字母之间打空格
printf(" ");
}
printf("\n");//第一层结束回车开始第二行即i=2再循环开始
}
return 0;
}