1.题目:编写程序,打印出9×9乘法表(这道题相对而言比较简单,用两次for循环就行了,我写了三种不同样式的)
(1)代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
int i,j;
int a;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
结果图:
(2)代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
结果图:
(3)代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
if(j<i)
{
printf(" ");
}
else
printf("%d*%d=%2d",i,j,i*j);
}
printf("\n");
}
return 0;
}
结果图:
2.题目:编写程序,实现strcmp()相同功能myStrcmp()函数。(首先我们要知道strcmp()的功能,strcmp是比较两个字符串的,但是是从左向右追个进行比较,直到出现两个不同的字符时开始比较,前者大于后者是输出一个正数,后者大于前者时输出一个负数,如果两个字符串相等时则输出0,因此知道了这个strcmp的功能后就不难写出这个代码了。)
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
char a[100],b[100];
int i,p=0;
gets(a);
gets(b);
for(i=0;a[i]!='\0'&&b[i]!='\0';i++)
{
if(a[i]==b[i])
{
continue;
}
if(a[i]>b[i])
{
p=1;
break;
}
if(a[i]<b[i])
{
p=-1;
break;
}
if(a[i]=='\0'&&b[i]=='\0')
{
p=0;
}
else if(a[i]=='\0')
{
p=-1;
}
else
{
p=1;
}
}
printf("%d\n",p);
return 0;
}
结果:
3.题目:编写程序,将十进制转换为8进制并输出(不允许使用printf("%o"))。(这道题目要求我们把一个十进制数转换为八进制输出,还不允许我们使用%o,因此我们就得想其他的办法了,十进制转化为八进制有一个公式就是求他的余数,也就是n%8,n/8不停的循环,然后把余数存进一个数组,最后n=0的时候停止循环并退出。)
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <math.h>
int main()
{
int n,m,i,sum;
sum=0;
i=0;
printf("请输入一个十进制数:");
scanf("%d",&n);
while(n)
{
m=n%8;
n=n/8;
sum+=m*pow(10,i);
i++;
}
printf("这个十进数的八进制数为:%d\n",sum);
return 0;
}
结果:
4.题目:编写程序,打印菱形星号组合
*
* *
-
-
*
-
-
*(这道题我使用的笨办法做的,找规律就行)
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
int i,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=7;j++)
{
if(j-i==3||j+i==5)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
for(i=5;i<8;i++)
{
for(j=1;j<8;j++)
{
if(i-j==3||j+i==11)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
return 0;
}
结果:
5.题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。(google面试题)(这道题目我之前有过一个类似的是算9出现的次数的,关键是算法,可以用do while或者while来写,先是对a%10的余数进行跟1比较,相等就+1,不等就a/10,毕竟有时候a不可能是一位数,可能是两位三位四位等等,所以逐步/10,再求余直到a=0退出循环,这样每位数都能计算到内)
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int Find(int n)
{
int i,nu,t=0;
for(i=1;i<=n;i++)
{
nu=i;
do{
if(nu%10==1)
{
t++;
}
nu=nu/10;
}while(nu!=0);
}
return t;
}
int main()
{
int n,m;
printf("请输入n:");
scanf("%d",&n);
m=Find(n);
printf("1-n之间1的个数:%d\n",m);
return 0;
}
结果:
6.题目请编写一个c函数,该函数给出一个字节中被置为1的位的个数。(一个字节那我们可以理解为输入一个字符型的量,因为字符型所占的就是一个字节,而且字符都有各自的ascii码值,所以将这个字符的ascii值赋值给一个整型变量,那么这个整型变量就得到这个字符的acii值,然后再将这个十进制的数转化为二进制,将每一位存入数组中,然后在统计一的个数)
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int fun(char n)
{
int i,m,t=0;
for(i=0;i<8;i++)
{
m=(n>>i)&1;
if(m==1)
{
t++;
}
}
return t;
}
int main()
{
char n;
int m;
printf("请输入一个字符:");
scanf("%c",&n);
m=fun(n);
printf("被置1的位的个数:%d\n",m);
return 0;
}
结果:
7.题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
void fun(int a,int p1,int p2)
{
int i,t;
for(i=p2;i>=p1;i--)
{
t=(a>>i)&1;
if(t==1)
{
printf("1");
}
else
{
printf("0");
}
}
printf("\n");
}
int main()
{
int a,p1,p2;
printf("请输入一个整数:");
scanf("%d",&a);
printf("请输入p1,p2(p1<p2<32):");
scanf("%d%d",&p1,&p2);
fun(a,p1,p2);
return 0;
}
结果:
8.题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
void fun(int a,int p1,int p2)
{
int i;
int t,m=0;
int p[32];
if(a>=0)
{
for(i=p2;i>=p1;i--)
{
t=(a>>i)&1;
if(t==0)
{
printf("1");
}
else
{
printf("0");
}
}
}
else
{
i=0;
a=abs(a);
while(i<32)
{
m=a%2;
a=a/2;
p[i]=m;
i++;
}
p[31]=1;
for(i=p2;i>=p1;i--)
{
p[i]=1-p[i];
printf("%d",p[i]);
}
}
printf("\n");
}
int main()
{
int a,p1,p2;
printf("请输入一个整数a:");
scanf("%d",&a);
printf("请输入两个整数p1,p2(p1,p2<32):");
scanf("%d%d",&p1,&p2);
fun(a,p1,p2);
return 0;
}
结果:
9.题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
int main()
{
int a,p,v,m,i,n;
int num[32];
printf("请输入一个整数a:");
scanf("%d",&a);
printf("请输入一个p(p<32)和一个v(0或1):");
scanf("%d%d",&p,&v);
if(a>=0)
{
for(i=31;i>=0;i--)
{
num[i]=(a>>i)&1;
}
}
else
{
a=abs(a);
for(i=31;i>=0;i--)
{
num[i]=(a>>i)&1;
}
num[31]=1;
}
num[p]=v;
printf("p位置为v之后:\n");
for(i=31;i>=0;i--)
{
printf("%d",num[i]);
}
printf("\n");
return 0;
}
结果:
10.题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
代码:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <math.h>
int main()
{
int a,anum[32],bnum[32],b=0,i;
printf("请输入一个整数a:");
scanf("%d",&a);
for(i=31;i>=0;i--)
{
anum[i]=(a>>i)&1;
}
for(i=31;i>=0;i--)
{
bnum[i]=anum[i]^anum[i-1];
}
for(i=31;i>=0;i--)
{
b+=bnum[i]*pow(2,i);
}
printf("b=%d\n",b);
return 0;
}
结果: