1.奇数偶数算法
#include <stdio.h>
int main()
{
int a;
int b;
printf(“please input an number: “);
scanf(”%d”,&a);
b=a%2;
if(b=0)
printf(“This is an even number\n”);
else
printf(“This is an old number\n”);
return(0);
}
2.阶乘vi
#include <stdio.h>
int main()
{
int i,p,n;
printf(“please input an integer: “);
scanf(”%d”,&n);
p=1;
for(i=2;i<=n;i=i++)
{
p=p*i;
}
printf("%d",p);
return (0);
}
3.100以内素数
#include <stdio.h>
int main()
{
int i,n,s;
printf(“2 “);
for(n=3;n<=100;n++)
{
for(i=2;i<n;i++)
{
s=n%i;
if(s==0)
break;
}
if(s!=0)
printf(”%d “,n);
}
return 0;
}
4.1~100和
#include <stdio.h>
int main()
{
int i,n,s;
printf(“please input an integer : “);
scanf(”%d”,&n);
s=0;
for(i=1;i<=n;i++)
{
s+=i;
}
printf(”%d”,s);
return 0;
}
5.比较6个数大小
#include <stdio.h>
int main()
{
int a,b,c,d,e,f;
int max;
printf(“please input six integer: “);
scanf(”%d”,&a);
scanf("%d",&b);
scanf("%d",&c);
scanf("%d",&d);
scanf("%d",&e);
scanf("%d",&f);
max=0;
if(a>max) max=a;
if(b>max) max=b;
if(c>max) max=c;
if(d>max) max=d;
if(e>max) max=e;
if(f>max) max=f;
printf("%d",max);
return 0;
}
一样的
#include <stdio.h>
int main()
{
int a,b,c,d,e,f;
int max;
printf(“please input six integer: “);
scanf(”%d %d %d %d %d %d”,&a,&b,&c,&d,&e,&f);
max=0;
if(a>max) max=a;
if(b>max) max=b;
if(c>max) max=c;
if(d>max) max=d;
if(e>max) max=e;
if(f>max) max=f;
printf("%d",max);
return 0;
}
6.10个数冒泡排序
#include <stdio.h>
int main()
{
int i,j,s;
int a[10];
printf(“please input ten integers: \n”);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i;j>0;j–)
{
if(a[j]<a[j-1])
{
s=a[j-1];
a[j-1]=a[j];
a[j]=s;
}
}
}
for(i=0;i<10;i++)
printf("%d “,a[i]);
return 0;
}
7. 费式数列前20项
#include <stdio.h>
int main()
{
int f[20];
int i;
f[0]=1,f[1]=2;
for(i=2;i<20;i++)
f[i]=f[i-1]+f[i-2];
for(i=0;i<20;i++)
printf(”%d “,f[i]);
printf(”\n");
return 0;
}
8.巴斯卡三角形 13
#include <stdio.h>
int main()
{
int i,j;
int a[13][25]={};
j=12;
a[0][j]=1;
for(i=1;i<13;i++)
{
for (j=0;j<25;j++)
{
if((j0||j24)&i!=12)
a[i][j]=0;
else if((j0||j24)&i12)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
}
for(i=0;i<13;i++)
{
for(j=0;j<25;j++)
{
printf("%5d “,a[i][j]);
}
printf(”\n");
}
return 0;
}
9.巴斯卡三角形 n
#include <stdio.h>
int main()
{
int i,j,m,n;
printf(“please input an integer: “);
scanf(”%d”,&m);
n=2*m-1;
int a[m][n];
for(i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
a[i][j]=0;
}
}
a[0][m-1]=1;
for(i=1;i<m;i++)
{
for (j=0;j<n;j++)
{
if((j0||jn-1)&i!=m-1)
a[i][j]=0;
else if((j0||jn-1)&im-1)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%5d “,a[i][j]);
}
printf(”\n");
}
return 0;
}
10.编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12
#include<stdio.h>
#include<math.h>
int main()
{
int s, a, b, c, d;
int i, max, min;
s = sqrt(1000);
min = s;
s= sqrt(9999);
max = s;
for (i=min; i<=max; i++)
{
s = i*i;
a = s/1000;
b = s%1000/100;
c = s%1000%100/10;
d = s%10;
a = a+c;
b = b*d;
if ((a == 10) && (b == 12))
{
printf("%d ",s);
}
}
printf("\n");
return 0;
}
11、快速找出一个数组中的最大数、第二大数。(笔试题)
#include<stdio.h>
int main()
{
int a[10];
int i;
int max1;
int max2;
printf("please input ten integers : ");
for (i=0; i<10; i++)
{
scanf("%d ", &a[i]);
}
if (a[1] < a[0])
{
max1 = a[0];
max2 = a[1];
}
else
{
max1 = a[1];
max2 = a[0];
}
for (i=2;i<10; i++)
{
if ((a[i] >= max2) && (a[i] >= max1))
{
max2 = max1;
max1 = a[i];
}
else if ((a[i] >= max2) && (a[i] < max1))
{
max2 = a[i];
}
}
printf("%d %d",max1,max2);
printf("\n");
return 0;
}
12、通过编程实现,统计1~n有多少个9?(提示:n通过参数传入)(错误)见24题
#include<stdio.h>
int main()
{
int n;
int i;
int s = 1;
int sum = 0;
int rem;
int quot;
printf("please input an integer : ");
scanf("%d",&n);
for (i=0; ; i++)
{
rem = n%10;
quot = n/10;
n = quot;
if (i > 0)
{
sum += rem*s;
}
if (i >= 1)
{
s = s*10;
}
if (i == 0 && rem >= 9)
{
sum++;
}
if (quot == 0)
{
break;
}
}
printf("%d",sum);
printf("\n");
return 0;
}
13、输入5个数(含负数、小数)将它们按由小到大的顺序排列起来
提示:需要排数的数字通过参数传递进来,
例如:输入:./a.out -1 2.1 -3 5 7 输出: -3 -1 2.1 5 7
#include<stdio.h>
int main()
{
float a[5];
int i;
int j;
float s;
printf("please input five numbers : ");
for (i=0; i < 5; i++)
{
scanf("%f",&a[i]);
}
for (i=1; i < 5; i++)
{
for (j=i; j > 0; j--)
{
if (a[j] < a[j-1])
{
s = a[j-1];
a[j-1] = a[j];
a[j] = s;
}
}
}
for (i=0; i < 5; i++)
{
printf("%f ",a[i]);
}
printf("\n");
return 0;
}
14、一个数如果恰好等于它的因子之和,这个数被成为”完数”,例如:6=1+2+3.请编程找出1000以内的完数
#include<stdio.h>
int main()
{
int i, j;
int sum=0, rem;
for (i=1; i<=1000; i++)
{
for (j=1; j<i; j++)
{
rem = i%j;
if (rem == 0)
{
sum +=j;
}
}
if (sum == i)
{
printf("%d ",i);
}
sum = 0;
}
printf("\n");
return 0;
}
15、有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
#include<stdio.h>
int main()
{
int n;
printf("please input an integer : ");
scanf("%d",&n);
int a[10000] = {0};
int i, j;
int q, m = 0, s = 0;
for (j=1; ;j++)
{
if (m == n)
{
break;
}
for (i=0; i<n; i++)
{
if (a[i] == 1)
{
continue;
}
s = s+1;
q = i+1;
if (m == n)
{
printf("%d ", q);
break;
}
if (s%3 == 0)
{
a[i] = 1;
m += 1;
s = 0;
}
}
}
printf("%d ", q);
printf("\n");
return 0;
}
16.分行排列
#include <stdio.h>
int main()
{
int sum = 0;
int p;
int i;
printf("please input an integer : ");
scanf("%d",&p);
for (i=0; i<=100; i++)
{
sum = sum + 1;
printf("%3d ", i);
if (sum == p)
{
printf("\n");
sum = 0;
}
}
printf("\n");
return 0;
}
17.选择排序
#include<stdio.h>
int main()
{
int i;
int j;
int min;
int a[10];
printf("please input ten numbers: ");
for (i=0; i<10; i++)
{
scanf("%d",&a[i]);
}
for (i=0; i<10; i++)
{
for (j=i; j<9; j++)
{
if (a[i] > a[j+1])
{
min = a[j+1];
a[j+1] = a[i];
a[i] = min;
}
}
}
for (i=0; i<10; i++)
{
printf("%d ",a[i]);
}
return 0;
}
18.九九乘法表
#include<stdio.h>
int main()
{
int i;
int j;
int mul;
for (i=1; i<10; i++)
{
for (j=1; j<=i; j++)
{
mul = i * j;
printf("%d*%d=%d ", i, j, mul);
}
printf("\n");
}
printf("\n");
return 0;
}
19.十进制转八进制
#include<stdio.h>
int main()
{
int i;
int rem;
int quot;
int n;
int a[10]={0};
printf("please input an integer : ");
scanf("%d",&n);
for(i=1; ;i++)
{
rem = n%8;
quot = n/8;
n = quot;
a[i-1] = rem;
if(n == 0)
{
break;
}
}
for(i=9; i>=0; i--)
{
if(a[i] != 0)
{
printf("%d",a[i]);
}
}
printf("\n");
return 0;
}
20.题目:编写程序,打印出9×9乘法表
#include<stdio.h>
int main()
{
int i;
int j;
int mul;
for (i=1; i<10; i++)
{
for (j=1; j<=i; j++)
{
mul = i * j;
printf("%d*%d=%d ", i, j, mul);
}
printf("\n");
}
printf("\n");
return 0;
}
21.题目:编写程序,实现strcmp()相同功能myStrcmp()函数
#include<stdio.h>
int main()
{
char ch1[10];
char ch2[10];
int i;
int s;
for(i=0; i<10; i++)
{
scanf("%s", &ch1);
}
for(i=0; i<10; i++)
{
scanf("%s", &ch2);
}
for (i=0; i<10; i++)
{
if (ch1[i] < ch2[i])
{
s = -1; //printf("-1");
}
else if (ch1[i] == ch2[i])
{
s = 0; //printf("0");
}
else
{
s = 1; //printf("1");
}
}
printf("%d",s);
return s;
}
22.题目:编写程序,将十进制转换为8进制并输出(不允许使用printf("%o"))
#include<stdio.h>
int main()
{
int i;
int rem;
int quot;
int n;
int a[10]={0};
printf("please input an integer : ");
scanf("%d",&n);
for(i=1; ;i++)
{
rem = n%8;
quot = n/8;
n = quot;
a[i-1] = rem;
if(n == 0)
{
break;
}
}
for(i=9; i>=0; i--)
{
if(a[i] != 0)
{
printf("%d",a[i]);
}
}
printf("\n");
return 0;
}
23.题目:编写程序,打印菱形星号组合
*
* *
-
-
*
-
-
#include<stdio.h>
int main()
{
char a[7][7];
int i;
int j;
int s = 3;
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (j != i)
{
continue;
}
if (i <= 3)
{
a[i][s-j] = '*';
a[i][s+j] = '*';
}
else
{
a[i][s-(6-j)] = '*';
a[i][s+(6-j)] = '*';
}
}
}
for (i=0; i<7; i++)
{
for (j=0; j<7; j++)
{
if (a[i][j] == '*')
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
return 0;
}
24.题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。(google面试题)
例如 输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。
分析:这是一道广为流传的google面试题
#include<stdio.h>
int main()
{
int n;
int i;
int sum1 = 0;
int sum2 = 0;
int rem;
int quot;
int a[10] = {0};
a[0] = 0;
a[1] = 1;
printf("please input an integer : ");
scanf("%d",&n);
if (n != 1)
{
for (i=2; ; i++)
{
rem = n%10;
quot = n/10;
a[i] = 10*a[i-1];
if (i > 2)
{
sum2 = a[i-2]+10*sum2;
}
if (rem > 1)
{
sum1 = sum1+a[i-1]+(rem*a[i-2]);
}
if ((rem == 1) && (i > 2))
{
sum1 = sum1+sum2;
}
if ((rem == 1) && (i == 2))
{
sum1+=1;
}
if (quot == 0)
{
break;
}
n = quot;
}
if (n == 1)
{
sum1+=1;
}
printf("%d",sum1);
}
else
{
printf("1");
}
printf("\n");
return 0;
}
25.题目请编写一个c函数,该函数给出一个字节中被置为1的位的个数
#include<stdio.h>
int main()
{
int i;
int sum = 0;
int quot;
int rem;
int n;
printf("please input an integer: ");
scanf("%d",&n);
for (i=0; ; i++)
{
rem = n%2;
quot = n/2;
n = quot;
if (rem == 1)
{
sum+=1;
}
if (quot == 0)
{
break;
}
}
printf("%d",sum);
printf("\n");
return 0;
}
26.题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
#include<stdio.h>
int main()
{
int b[32] = {0};
int i;
int a;
int m;
int n;
int rem;
int quot;
int sum;
int s1;
int s2;
printf("please input an integer : ");
scanf("%d",&a);
printf("please input two integers(p1,p2<32) : ");
scanf("%d%d",&m,&n);
for (i=31; ;i--)
{
rem = a%2;
quot = a/2;
a = quot;
if (rem == 1)
{
b[i] = 1;
}
if (quot == 0)
{
break;
}
}
if (m >= n)
{
s1 = 32-n;
s2 = 32-m;
for (i=s1; i>=s2; i--)
{
printf("%d",b[i]);
}
}
else
{
s1 = 32-m;
s2 = 32-n;
for (i=s1; i>=s2; i--)
{
printf("%d",b[i]);
}
}
printf("\n");
return 0;
}
27.题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
#include<stdio.h>
int main()
{
int b[32] = {0};
int i;
int a;
int m;
int n;
int rem;
int quot;
int sum;
int s1;
int s2;
printf("please input an integer : ");
scanf("%d",&a);
printf("please input two integers(p1,p2<32) : ");
scanf("%d%d",&m,&n);
for (i=31; ;i--)
{
rem = a%2;
quot = a/2;
a = quot;
if (rem == 1)
{
b[i] = 1;
}
if (quot == 0)
{
break;
}
}
if (m >= n)
{
s1 = 32-n;
s2 = 32-m;
for (i=s1; i>=s2; i--)
{
if (b[i] == 0)
{
b[i] = 1;
}
else
{
b[i] = 0;
}
printf("%d",b[i]);
}
}
else
{
s1 = 32-m;
s2 = 32-n;
for (i=s1; i>=s2; i--)
{
if (b[i] == 0)
{
b[i] = 1;
}
else
{
b[i] = 0;
}
printf("%d",b[i]);
}
}
printf("\n");
return 0;
}
28.题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
#include<stdio.h>
int main()
{
int b[32] = {0};
int i;
int a;
int m;
int n;
int rem;
int quot;
int sum;
int s;
printf("please input an integer : ");
scanf("%d",&a);
printf("please input two integers(p<32,v(0|1) : ");
scanf("%d%d",&m,&n);
for (i=31; ;i--)
{
rem = a%2;
quot = a/2;
a = quot;
sum = i;
if (rem == 1)
{
b[i] = 1;
}
if (quot == 0)
{
break;
}
}
s = 32-m;
b[s] = n;
for (i=sum; i<32; i++)
{
printf("%d",b[i]);
}
printf("\n");
return 0;
}
29.题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
#include<stdio.h>
int main()
{
int b[32] = {0};
int c[32] = {0};
int i;
int a;
int rem;
int quot;
printf("please input an integer : ");
scanf("%d",&a);
for (i=31; i>=0; i--)
{
rem = a%2;
quot = a/2;
a = quot;
if (rem == 1)
{
b[i] = 1;
c[i] = 1;
}
if (quot == 0)
{
break;
}
}
b[0] = c[1]^c[31];
b[31] = c[0]^c[30];
for (i=30; i>0; i--)
{
b[i] = c[i-1]^c[i+1];
}
for (i=0; i<32; i++)
{
printf("%d",b[i]);
}
printf("\n");
return 0;
}