谭浩强的第六章是循环,拿来练练手,程序是亲手写的,不一定是最优的,但一定对。另外12、13、15感觉比较扯就没写。
下面是代码:
//1.cpp
#include <stdio.h>
#define MAX(m,n) (((m) > (n) ? (m) : (n)))
#define MIN(m,n) (((m) < (n) ? (m) : (n)))
int main(void)
{
int m, n;
int i;
int a, b;
printf("Input m and n:\n");
scanf("%d %d",&m,&n);
for(i=MIN(m,n);i>0;i--)
{
if(!(m%i) && !(n%i))
break;
}
a=i;
for(i=MAX(m,n);;i++)
{
if(!(i%m) && !(i%n))
break;
}
b=i;
printf("a=%d\tb=%d\n",a,b);
return 0;
}
//2.cpp
#include <stdio.h>
int main(void)
{
char c;
int num=0, letter=0, blank=0, digit=0, other=0;
while((c=getchar()) != '\n')
{
num++;
if((c>='a' && c <='z') || (c>='A' && c<='Z'))
letter++;
else if(c>='0' && c <='9')
digit++;
else if(c==' ')
blank++;
else
other++;
}
printf("There are %d characters,%d letters,%d digits, %d blanks,%d other characters.\n)"
,num,letter,digit,blank,other);
return 0;
}
//3.cpp
#include <stdio.h>
int main(void)
{
int a, n, tmp, sum;
a=n=sum=tmp=0;
printf("input a and n:\n");
scanf("%d %d", &a, &n);
for(int i=0; i<n; i++)
{
tmp = tmp * 10 + a;
sum += tmp;
}
printf("sum = %d\n", sum);
return 0;
}
//4.cpp
#include <stdio.h>
int main(void)
{
int n;
long tmp=1, sum=0;
printf("input n:\n");
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
tmp = tmp * i;
sum +=tmp;
}
printf("sum = %d\n", sum);
return 0;
}
//5.cpp
#include <stdio.h>
int main(void)
{
int k, sum1=0;
float sum=0;
k = 100;
for(int i=1; i<=k; i++)
{
sum1 += i;
}
k = 50;
for(i=1; i<=k; i++)
{
sum1 += i * i;
}
k = 10;
for(i=1; i<=k; i++)
{
sum += 1.0 / i;
}
sum += sum1;
printf("sum = %.2f\n", sum);
return 0;
}
//6.cpp
#include <stdio.h>
int main()
{
int num, tmp;
for(num=100; num<1000; num++)
{
tmp = (num/100)*(num/100)*(num/100) + (num%100/10)*(num%100/10)*(num%100/10) + (num%10)*(num%10)*(num%10);
if(num == tmp)
printf("%d\t",num);
}
printf("\n");
return 0;
}
//7.cpp
#include <stdio.h>
int main()
{
int i, j, k=0;
int num, sum=0;
int p[5]; //先运行一次根据k的值设置数组p的元素个数
printf("Input the max num:\n");
scanf("%d",&num);
for (i=1; i<=num; i++)
{
for (j=1; j<=i/2; j++)
{
if (!(i%j))
{
sum += j;
}
if(sum > i)
break;
}
if (sum == i)
{
p[k++] = i;
}
sum = 0;
}
for (i=0; i<k; i++)
{
printf("%d its factors are",p[i]);
for (j=1; j<=p[i]/2; j++)
{
if (!(p[i]%j))
{
printf(" %d,",j);
}
}
printf("\n");
}
//printf("k=%d",k);
//printf("\n");
return 0;
}
//8.cpp
#include <STDIO.H>
#define NUM 20
int main()
{
int a[NUM]={2,3};
int b[NUM]={1,2};
float sum=2.0+3.0/2;
for (int i=2; i<NUM; i++)
{
a[i] = a[i-1] + a[i-2];
b[i] = a[i-1];
sum += (float)a[i] / b[i];
}
printf("sum=%.3f\n",sum);
return 0;
}
//9.cpp
#include <STDIO.H>
#define HIGHT 100
int main()
{
float h=HIGHT;
float sum=0.0;
for (int i=0; i<10; i++)
{
sum += h;
h = h / 2;
}
printf("sum=%.2fm,h=%.2fm\n",sum,h);
return 0;
}
//10.cpp
#include <STDIO.H>
int main()
{
int num=1;
for (int i=1; i<10; i++)
{
num = (num + 1) * 2;
}
printf("num=%d\n",num);
return 0;
}
//11.cpp
#include <math.h>
#include <stdio.h>
int main()
{
float x1,x2, a;
printf("Input a:\n");
scanf("%f",&a);
x1 = a / 2;
x2 = (x1 + a/x1) / 2;
while (fabs(x1-x2) >= 1e-5)
{
x1 = x2;
x2 = (x1 + a / x1) / 2;
}
printf("x=%.3f\n",x2);
return 0;
}
//14.cpp
#include <STDIO.H>
int main()
{
int a,i,j,k;
for (i=0; i<4; i++)
{
for (j=0;j<3-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("* ");
printf("\n");
}
for(i=0; i<3; i++)
{
for (j=0; j<i+1; j++)
printf(" ");
for (k=0; k<5-2*i; k++)
printf("* ");
printf("\n");
}
return 0;
}