題目一:通過編程實現,統計1~n有多少個9
提示:n通過參數傳入
#include <stdio.h>
int main()
{
int n;
int num=0;
int t,i,a;
printf("PLease input a number:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
a=i;
if(i<10)
{
t=i%10;
if(t==9)
num++;
}
else
{
while(i!=0)
{
t=i%10;
i=i/10;
if(t==9)
num++;
}
}
i=a;
}
printf("the number of nine is %d.\n",num);
return 0;
}
題目二:有n個人圍成一圈,順序排號,從第一個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位.
提示:用數組完成
#include <stdio.h>
int main()
{
int a[100];
int i,n,q;
int p=0;
printf("Input number:\n");
scanf("%d",&n);
q=n;
for(i=0;i<n;i++)
a[i]=i+1;
for(i=0;;i++)
{
if(i==n)
i=0;
if(a[i]!=0)
p++;
if(p%3==0)
{
a[i]=0;
q--;
}
if(q==1)
break;
}
for(i=0;i<n;i++)
if(a[i]!=0)
printf("spare:%d\n",a[i]);
return 0;
}
題目三:輸入5個數(含負數、小數)將它們按由小到大的順序排列起來
提示:需要排數的數字通過參數傳遞進來,
例如:輸入:./a.out -1 2.1 -3 5 7輸出: -3 -1 2.1 5 7
#include <stdio.h>
int main()
{
float a[5];
float t;
int i,n;
printf("Please input five number:\n");
for(n=0;n<5;n++)
scanf("%f",&a[n]);
for(n=0;n<5;n++)
{
for(i=0;i+n<4;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(n=0;n<5;n++)
printf("%8.2f ",a[n]);
printf("\n");
return 0;
}
題目四:求100以內的素數,全部打印出來
#include <stdio.h>
int main()
{
int i,n;
i=2;
printf("the prime from one to hundread are:\n");
for(n=0;n<=100;n++)
{
while(n>i)
{
if(n%i==0)
break;
else
i+=1;
}
if(n==i||n==1)
printf("%4d",n);
i=2;
}
printf("\n");
return 0;
}
題目五:一個數如果恰好等於它的因子之和,這個數被成爲”完數”,例如:6=1+2+3.請編程找出1000以內的完數
#include <stdio.h>
int main()
{
int n,r,t;
r=0;
printf("the wanshu of 1 to 1000 are:\n ");
for(n=1;n<=1000;n++)
{
for(t=1;t<n;t++)
{
if(n%t==0)
r+=t;
}
if(r==n)
printf("%5d",n);
r=0;
}
printf("\n");
return 0;
}
題目六:打印菱形星號組合
* *** ***** ******* ***** *** * |
* * * * * * * * * * * * |
第i行: 空格數? 星號數? |
#include <stdio.h>
int main()
{
char a='*';
char b=' ';
int n,i;
for(n=0;n<7;n++)
{
if(n<4)
{
for(i=1;i<=10-n;i++)
{
printf("%c",b);
}
for(i=1;i<=2*n+1;i++)
{
printf("%c",a);
}
printf("\n");
}
else
{
for(i=1;i<5+n;i++)
printf("%c",b);
for(i=1;i<=13-2*n;i++)
printf("%c",a);
printf("\n");
}
}
for(n=7;n<14;n++)
{
if(n<11)
{
for(i=1;i<10-n+8;i++)
printf("%c",b);
printf("%c",a);
if(n==7)
printf("\n");
else
{
for(i=0;i<2*(n-7)-1;i++)
printf("%c",b);
printf("%c",a);
printf("\n");
}
}
else
{
for(i=1;i<n-2;i++)
printf("%c",b);
printf("%c",a);
if(n==13)
printf("\n");
else
{
for(i=1;i<=2*(13-n)-1;i++)
printf("%c",b);
printf("%c\n",a);
}
}
}
return 0;
}
題目七:求a和b的最大公約數
gcd(a ,b)= gcd(b, a%b)
例:gcd(36,24) =gcd(24, 12 ) =gcd(12,0 )
#include <stdio.h>
void gcd (int,int);
int main()
{
int a,b;
printf("Please input two number:\n");
scanf("%d %d",&a,&b);
gcd(a,b);
return 0;
}
void gcd (int a, int b)
{
int t,m;
if(a<b)
{
t=a;
a=b;
b=t;
}
while(a>b&&b>0)
{
m=a;
a=b;
b=m%b;
}
printf("the commoniser is %d.\n",a);
return;
}
題目八:已知,求π?
#include <stdio.h>
int main()
{
int n,m;
float t,pi;
t=0;
for(n=1;n<1e+9;n++)
{
if(n%2==0)
m=-1;
else
m=1;
t+=1.0/((-1)*m*(2*n-1));
}
pi=4.0*t;
printf("pi = %.6f\n",pi);
return 0;
}
題目九:計算前20項的和?
#include <stdio.h>
int main()
{
float a[21];
float t;
int n;
for(n=0;n<21;n++)
{
if(n==0)
a[n]=1;
else if(n==1)
a[n]=2;
else
a[n]=a[n-1]+a[n-2];
}
for(n=1;n<21;n++)
{
t+=a[n]/a[n-1];
}
printf("2/1+3/2+5/3+8/5+13/8`````=%.6f\n",t);
return 0;
}
題目十:求100~200間的所有素數,每行打印5個素數
#include <stdio.h>
int main()
{
int i,n,num;
i=2;
num=0;
printf("the prime from one to hundread are:\n");
for(n=100;n<=200;n++)
{
while(n>i)
{
if(n%i==0)
break;
else
i+=1;
}
if(n==i||n==1)
{
printf("%4d",n);
num++;
}
if(num==5)
{
printf("\n");
num=0;
}
i=2;
}
printf("\n");
return 0;
}
題目十一:計算字符串中的單詞數。
單詞:由空格分開的連續字母數字串。
#include <stdio.h>
char *my_gets(char *a);
int main()
{
char a[50];
int num=0;
int n;
printf("輸入一串字符串:\n");
my_gets(a);
for(n=0;n<50;n++)
{
if(a[n]==' ')
num++;
}
printf("字符串中的字符數爲%d.\n",num);
return 0;
}
char *my_gets(char *a)
{
int i = 0;
while((a[i]=getchar())!='\n')
{
i++;
}
a[i]='\0';
}
題目十二:將整數轉換爲10進制、2進制、16進制的數字串
#include <stdio.h>
void decimalism (int);
void binary (int);
void hex (int);
int main()
{
int n;
printf("Please input a number:\n");
scanf("%d",&n);
decimalism(n);
printf(" ");
binary(n);
printf(" ");
hex(n);
printf("\n");
return 0;
}
void decimalism (int n)
{
int t;
t=n%10;
if(n>=10)
decimalism(n/10);
putchar('0'+t);
return;
}
void binary (int n)
{
int t;
t=n%2;
if(n>=2)
binary(n/2);
putchar('0'+t);
return;
}
void hex (int n)
{
int t;
t=n%16;
if(n>=16)
hex(n/16);
/*switch(t)
{
case 10:
t='A';
break;
case 11:
t='B';
break;
case 12:
t='C';
break;
case 13:
t='D';
break;
case 14:
t='E';
break;
case 15:
t='F';
break;
defalt:break;
} */
if(t>=10)
putchar('7'+t);
else
putchar('0'+t);
/*if(t<10)
putchar('0'+t);
else
putchar(t);*/
}
題目十三:打印字符串、複製字符串、連接字符串
#include <stdio.h>
#include <string.h>
//void printing ( char *, char *);
int main()
{
char put1[100]="Welcome to nanjing!";
char put2[100]="Nice to meet you!";
char put3[100];
printf("打印字符串:\n");
// printing(put1,put2);
puts(put1);
puts(put2);
printf("複製字符串:\n");
strcat(put3,put1);
puts(put3);
printf("連接字符串:\n");
strcat(put1,put2);
puts(put1);
return 0;
}
/*
void printing( char *put1, char *put2)
{
int t=1;
while(*put1)
{
putchar(*put1);
*put1=*(put1+t);
t+=1;
}
printf("\n");
t=1;
while(*put2)
{
putchar(*put2);
*put2=*(put2+t);
t+=1;
}
printf("\n");
return;
}*/
/*
void copy (char *put1,char *put2)
void connect (char *put1, char *put2)
*/
題目十四:整數數組的冒泡排序(從小到大)
#include <stdio.h>
#define MAX 10
int main()
{
int n,m,temp;
int a[MAX];
for(n=0;n<MAX;n++)
scanf("%d",&a[n]);
for(n=0;n<MAX;n++)
{
for(m=0;m+n<MAX-1;m++)
{
if(a[m]>a[m+1])
{
temp=a[m];
a[m]=a[m+1];
a[m+1]=temp;
}
}
}
for(n=0;n<MAX;n++)
{
printf("%5d",a[n]);
}
printf("\n");
return 0;
}
題目十五:對於任意正整數都可以找出至少一串連續奇數,它們的和等於該整數的立方。以下程序驗證[2,20]之間的數滿足這一性質。
#include <stdio.h>
int main()
{
int n,m,i,j,sum = 0;
int flag=0;
for(i=2;i<=20;i++)
{
sum=0;
n=1;
while(n<i*i*i)
{
j=n;
while(j<i*i*i)
{
sum+=j;
if(sum==i*i*i)
{
printf("%d*%d*%d=",i,i,i) ;
for(m=n;m<=j-2;m+=2)
printf("%d+",m);
printf("%d",m);
printf("\n");
flag=1;
break;
}
j +=2;
}
if(flag==1)
{
flag=0;
break;
}
sum=0;
n+=2;
}
}
return 0;
}