1.打印菱形星號組合
代碼:
#include <stdio.h>
int main()
{
int i,j,k,t;
for(i=1;i<5;i++)//打印前五行空格和'*'號
{
for(k=3-i;k>=0;k--)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
printf("*");
}
printf("\n");
}
for(i=1;i<4;i++)
{
for(k=1;k<=i;k++)
{
printf(" ");
}
for(j=7-2*i;j>0;j=j--)
{
printf("*");
}
printf("\n");
}
for(i=1;i<5;i++)
{
for(k=3-i;k>=0;k--)
{
printf(" ");
}
printf("*");
for(j=2;j<2*i-1;j++)
{
printf(" ");
}
if(i>=2)
{
printf("*");
}
printf("\n");
}
for(i=1;i<4;i++)
{
for(k=1;k<=i;k++)
{
printf(" ");
}
printf("*");
for(j=5-2*i;j>0;j=j--)
{
printf(" ");
}
if(i<3)
{
printf("*");
}
printf("\n");
}
return 0;
}
運行結果:
2.求a和b的最大公約數
gcd(a ,b)= gcd(b, a%b)
例:gcd(36,24) =gcd(24, 12 ) =gcd(12, 0 )
代碼:
#include <stdio.h>
int main()
{
int i,j,k,t=0;
printf("please input first number:\n");
scanf("%d",&i);
printf("please input second number:\n");
scanf("%d",&j);
if(j>i)
{
t = i;
i = j;
j = t;
}
while(k != 0)
{
k = i%j;
i = j;
j = k;
}
printf("the great common diviser is :%d\n",i);
return 0;
}
運行結果:
3已知 ,求π?
代碼:
#include <stdio.h>
#include <math.h>
int main()
{
int s;
double t,n,pi;
s=-1,t=1,n=1.0,pi=0;
for(t = 1;fabs(t) >= 1e-6;n = n +2)
{
s = -s;
t = s/n;
pi = pi +t;
}
pi = pi * 4;
printf("pai is %.6f\n",pi);
return 0;
}
運行結果:
4、計算 前20項的和?
代碼:
#include <stdio.h>
#define N 20
static double a = 1.0 , b = 2.0;
double sum(double sum) //遞歸求和函數
{
sum += b / a;
double c;
c = b;
b = a +b;
a = c;
return sum;
}
int main()
{
double res = 0;
int i ;
for(i = 0; i < N; i++)
{
res = sum(res); //運用遞歸求和
}
printf("%f\n", res);
return 0;
}
結果:
5、求100~200間的所有素數,每行打印5個素數
代碼:
#include <stdio.h>
int main()
{
int i , j , k=0 ;
for(i = 100 ;i <= 200; i++)
{
for(j = 2; j <= 200; j++)
{
if(i % j == 0)
{
break;
}
}
if( i == j)
{
k ++;
printf("%5d",i);
if(k % 5 ==0)
{
printf("\n");
}
}
}
printf("\n");
return 0;
}
結果:
6、計算字符串中的單詞數單詞:由空格分開的連續字母數字串。
代碼:
#include <stdio.h>
#include <string.h>
int main()
{
char input[50] = {0};
int i , k=0;
printf("please input some words:\n");
gets(input);
for(i = 0; i < 50; i++)
{
if(input[i] == 32)
{
k++;
}
if(input[i] == '\0')
{
k++;
break;
}
}
printf("The number of words is :%d\n",k );
return 0;
}
運行結果:
7、將整數轉換爲10進制、2進制、16進制的數字串
代碼:
#include <stdio.h>
void ten_s(int n , int s)
{
int b[8] = {0};
int i, t = n, k = 0;
for(i = 0; i < 8; i++ )
{
t = t/s;
if(t > 0)
{
k++;
}
else break;
}
for(i = k;i >= 0;i--)
{
b[i] = n%s;
n = n/s;
}
for(i = 0 ; i <= k; i++)
{
printf("%d",b[i]);
}
printf("\n");
}
void ten_h(int n , int s)
{
char b[8] = {0};
int i, t = n,k = 0;
for(i = 0 ; i < 8; i++)
{
t = t/s;
if(t>0)
{
k++;
}
else break;
}
for(i = k;i >= 0; i--)
{
t=n;
t=t%s;
switch(t)
{
case 10: b[i]='A';break;
case 11: b[i]='B';break;
case 12: b[i]='C';break;
case 13: b[i]='D';break;
case 14: b[i]='E';break;
case 15: b[i]='F';break;
}
if(t < 10 && t >= 0)
{
b[i]=t;
}
n=n/s;
}
for(i = 0; i <= k; i++)
{
if(b[i] >= 65 && b[i] <= 70)
{
printf("%c",b[i]);
}
else
{
printf("%d",b[i]);
}
}
printf("\n");
}
int main()
{
int a , s;
while(1)
{
printf("please input an int and hexadecimal:\n");
scanf("%d%d",&a, &s);
if(s == 2 || s==8)
{
ten_s(a,s);
}
if(s==16)
{
ten_h(a,s);
}
}
return 0;
}
結果:
8、打印字符串、複製字符串、連接字符串
打印:
複製:
連接:
9、整數數組的冒泡排序(從小到大)
代碼:
#include <stdio.h>
#define N 5
int main()
{
int i,j,t=0,a[N];
printf("please input :\n");
for(i = 0; i < N; i++)
{
scanf("%d", &a[i]);
}
for(j = 0; j < N-1; j++)
for(i = 0; i < N-1-j; i++)
{
if(a[i] > a[i +1])
{
t = a[i];
a[i] = a[i +1];
a[i +1] = t;
}
}
for(i = 0; i < N; i++)
{
printf("%d\t" ,a[i]);
}
printf("\n");
return 0;
}
結果:
10、對於任意正整數都可以找出至少一串連續奇數,它們的和等於該整數的立方。以下程序驗證[2,20]之間的數滿足這一性質。
#include<stdio.h>
int main()
{
int i,j = 0,n,k,sum = 0,num,p = 1,a[500],f = 0,T = 1;
printf("輸入一個數在2到20之間\n");
scanf("%d",&num);
n=num*num*num;
for( i = p;i < n;i += 2 )
{
if(sum < n)
{
sum += i;
a[j++] = i;
f = 0;
}
if(sum == n&&f == 0)
{
printf("第%d種\n",T++);
for(k = 0;k < j;k++)
{
printf("%5d",a[k]);
}
printf("\n");
f++;
j = 0;
i = p += 2;
sum = 0;
i -= 2;
}
if(sum > n)
{
j = 0;
i = p += 2;
sum = 0;
i -= 2;
}
}
return 0;
}
結果: