C程序设计

原创 2011年01月24日 15:18:00

 

 

题目:将一个正整数转换成二进制数据

 

程序分析:将一个十进制数转换为二进制,要将十进制数不断除2取余,一直到余数为0为止,然后,从下往上将余数写出即为其二进制形式的数。

    在程序中用一个长度为16的数组来存放二进制数(两个字节),因为是正整数所以始终最高位为0,也就是要用数组中的15个位置来存放每次取余的数据。

的应用,两侧均为整型数据。

的应用,两侧均为整型数据时所得结果为整形数据,运算中的两个数有一个数为实数,则结果是double型。

 

代码如下;

#include<stdio.h>

void main()

{

int i,j,n,m;

int a[16]={0};//定义数组a初始值为0

printf("输入一个正整数/n");

scanf("%d",&n);//输入一个正整数

for(m=0;m<15;m++)

{

i=n%2;//取余

j=n/2;//取商

n=j;//将商赋给n

a[m]=i;//将余数存入数组中

}

for(m=15;m>=0;m--)//倒序输出数组am的初值为15

{

printf("%d",a[m]);

if(m%4==0)

printf(" ");

}

printf("/n");

}

题目:将一个n进制的数转换为十进制

程序分析:因为是n进制数,如果大于10,,则表示时要用到ABC……这样的字符,所以要用字符数组来存放输入的n进制数,所以根据字符与ASCNII对照表

         如果是0~9之间的字符数据 

               t=a[i]-'0';

         如果是字母

               t=a[i]-'A'+10

代码如下:

#include<stdio.h>

#include<string.h>

void main()

{

long t1;

int i,n,t,t3;

char a[100];

printf("请输入一个数/n");

gets(a);//输入一个字符串到字符数组

strupr(a);//将字符串的小写字母换成大写字母

t3=strlen(a);//得到字符串的实际长度(不包括'/0')

t1=0;

printf("请输入该数的进制数/n");

scanf("%d",&n);

for(i=0;i<t3;i++)

{

if(a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n)//判断输入的数据是否在相应的进制中

{

printf("输入的数据错误,程序结束!/n");

return;//如果不在退出程序

}

if(a[i]>='0'&&a[i]<='9')//判断是否为数字

t=a[i]-'0';

else if(n>=11&&(a[i]>='A'&&a[i]<'A'+n-10))//判断为字母

t=a[i]-'A'+10;

t1=t1*n+t;//不断乘相应的进制数

}

printf("转换为十进制后的数为:%d/n",t1);

}

 

 

 

 

 

题目:输入32位的二进制数将其转换为十进制的得到IP地址(例:192.168.1.1

 

程序分析:即为将二进制的数转换为十进制,共32为二进制数,以每8位二进制数转换为十进制

 

代码如下:

#include<stdio.h>

int bin_dec(int x,int n)//递归函数

{

if(n==0)

{

return 1;

}

return x*bin_dec(x,n-1);

}

void main()

{

int i;

int ip[4]={0};//将数组初始化为0

char a[33];//输入32为二进制数,因为最后一位为/0,所以为32

printf("请输入一个二进制数:/n");

scanf("%s",a);//输入字符串

for(i=0;i<8;i++)//得出0-7转换的结果

{

if(a[i]=='1')

{

ip[0]+=bin_dec(2,7-i);

}

}

for(i=8;i<16;i++)//得出8-15转换的结果

{

if(a[i]=='1')

{

ip[1]+=bin_dec(2,15-i);

}

}

for(i=16;i<24;i++)//得出16-23转换的结果

{

if(a[i]=='1')

{

ip[2]+=bin_dec(2,23-i);

}

}

for(i=24;i<32;i++)//得出24-31转换的结果

{

if(a[i]=='1')

{

ip[3]+=bin_dec(2,32-i);

}

if(a[i]=='/0')

break;

}

printf("/nip:/n");

printf("%d.%d.%d.%d/n",ip[0],ip[1],ip[2],ip[3]);

}

 

 

 

 

 

题目:输入一个数,在这个数以内进行加减法运算,具体要计算的两个数值由计算机随机产生,由用户输入计算后的答案,计算机根据根据输入的结果判断是否正确。

 

分析:用到rand()函数来抽取随机数,a=rand()%m的具体含义就是产生吗以内的任意随机数(不含m本身)

为了每次运行程序得到的随机序列是不相同的,需用系统时间为种子来抽取随机数即

srand((unsigned long)time(0));

 

代码如下:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main()

{

int a,b,c,sign,m;

char sign1;

printf("请选择运算符号:1.'-'2.'+'/n");

while(1)//无穷循环

{

scanf("%d",&sign);

if(sign==1)

{

sign1='-';

break;//选择正确的运算符号后推出循环

}

else if(sign==2)

{

sign1='+';

break;//选择正确的运算符号后推出循环

}

else

{

printf("输入错误,请重新出入/n");//选择错误,重新输入

}

}

printf("请输入一个最大数:");

scanf("%d",&m);

srand((unsigned long)time(0));//设定系统时间为种子

a=rand()%m;//产生小于m的随机数

b=rand()%m;//产生小于m的随机数

while((a<b)&&(sign==1))//当是减法操作时,a必须大于b

{

a=rand()%m;

b=rand()%m;

}

printf("/n%d%c%d=",a,sign1,b);

scanf("%d",&c);

if((sign==1)&&(a-b==c)||(sign!=1)&&(a+b==c))//判断用户输入的结果是否正确

printf("OK!/n");

else

printf("结果错误!!!/n");

}

 

 

 

题目:输入一个数n,一此数为准输出以第n行为对称的菱形,例如:输入3,输入图形

         *

   ***

  *****

   ***

*

 

 

程序分析:

n=3

n

行数(i

1

2

3

规律

空格数

2

1

0

n-i

星号数

1

3

5

2*i-1

n-1

行数(i

42

51

规律

空格数

1

2

n-i

星号数

3

1

2*i-1

其实后n-1行就是以前n行的反序输出

代码如下:

#include<stdio.h>

void main()

{

int i,j,n;

printf("请输入一个数:/n");

scanf("%d",&n);

//n

for(i=1;i<=n;i++)

{

for(j=1;j<=n-i;j++)//输出每行空格,空格数为n-i

printf(" ");

for(j=1;j<=2*i-1;j++)//输出每行星号数,星号数位2*i-1

printf("*");

printf("/n");

}

//n-1

for(i-=2;i>=1;i--)/*此处i-=2的含义是上一个for循环结束后i又加了次1,再减次1//从第n+1行开始*/

{

for(j=1;j<=n-i;j++)//输出每行空格,空格数为n-i

printf(" ");

for(j=1;j<=2*i-1;j++)//输出每行星号数,星号数位2*i-1

printf("*");

printf("/n");

}

}

嵌入式实时程序设计中C/C++代码的优化

嵌入式实时程序设计中C/C++代码的优化   1 引言     计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用。...
  • ce123
  • ce123
  • 2011年08月12日 14:43
  • 1867

读《C程序设计语言》2E-3 [4~6]章

2016.02.22 - 04.05读《C程序设计语言》2E-3 [1~3]章1 练习02.22函数与程序结构练习4-1编写函数strrindex(s, t),它返回字符串t在s中最右边出现的位置、如...

程序设计之二:测试你活了多少天(C)

今天看到一个网页,其功能是计算一个人从出生到今天,共有多少天,然而多次尝试,均提示输入格式错误,便萌生了自己用C语言写这个程序的想法。本程序实现的基本思想:采用控制台方式输入生日,并将该数据赋给一个结...

程序设计基础(C&C++) 戴波、张东祥 第五章 指针 编程作业

1最大整数(25分)题目内容:输入3个整数,用指针指向最大整数并输出输入格式:输出格式:输入样例:1,2,3输出样例:3参考代码#include int main(){ int a,b,c;...

2015年第六届蓝桥杯C/C++程序设计本科B组省赛 移动距离(编程大题)

移动距离 X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3... 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下:   1   2 ...

C程序设计课程-2012电子信息 第三堂课后作业

作业题1提示: printf()函数是格式化输出函数, 一般用于向标准输出设备(如显示器)按规定格式输出信息,可以在"%"和字母之间插进数字表示最大场宽。详见“printf精解” 例如:对于整型类...

2014年第五届蓝桥杯C/C++程序设计本科B组省赛-六角填数

六角填数  如图所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?                       ...

Keil C51程序设计中几种精确延时方法

摘要 实际的单片机应用系统开发过程中,由于程序功能的需要,经常编写各种延时程序,延时时间从数微秒到数秒不等,对于许多C51开发者特别是初学者编制非常精确的延时程序有一定难度。本文从实际应用出发,讨论几...
  • Zhu__
  • Zhu__
  • 2012年05月18日 22:10
  • 988

2015年第六届蓝桥杯C/C++程序设计本科B组省赛 垒骰子(编程大题)

垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的...

c语言之消除注释函数的实现——我读《c程序设计语言》

#include void in_comment(void); void echo_quote(int d); void rcomment(int c); int main() { int c; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C程序设计
举报原因:
原因补充:

(最多只允许输入30个字)