c 十进制转k进制
- 格式:doc
- 大小:11.50 KB
- 文档页数:1
#include<stdlib.h>#include<string.h>#define MaxSize 50#define FALSE 0#define TRUE 1typedef int BOOL;typedef int T;typedef struct stack{int Top,MaxStack;T Elements[MaxSize];}Stack;/*typedef struct stacksixteen{int Top,MaxStack;char Elements[MaxSize];}Stacksixteen;*/void CreateStack(Stack *s,int maxsize) {s->Top=-1;s->MaxStack=maxsize;}BOOL IsEmpty(Stack s){return s.Top<0;}BOOL IsFull(Stack s){return s.Top>=s.MaxStack-1;}void Push(Stack *s,T x){if(IsFull(*s))printf("数据过长,无法显示");elses->Elements[++s->Top]=x;}void getTopsixteen(Stack *s,char *X) {if(IsEmpty(*s))printf("无数据");else* X=s->Elements[s->Top];s->Top--;}void Pushsixteen(Stack *s,char x)//十六进制压栈{if(IsFull(*s))printf("数据过长,无法显示");elses->Elements[++s->Top]=x;}void Pop(Stack * s){if(IsEmpty(*s))printf("无数据");elses->Top--;}void PrintStack(Stack s){while(s.Top>=0){printf("%d",s.Elements[s.Top]);s.Top--;}}void PrintStacksixteen(Stack s){while(s.Top>=0){switch(s.Elements[s.Top]){case 10 : printf("A"); break;case 11 : printf("B"); break;case 12 : printf("C"); break;case 13 : printf("D"); break;case 14 : printf("E"); break;case 15 : printf("F"); break;default : printf("%d",s.Elements[s.Top]);break;}s.Top--;}}{if((*X>='0'&&*X<='9')||*X=='A'||*X=='B'||*X=='C'||*X=='D'||*X=='E'||*X=='F') {switch(*X){case '0': *X=0; break;case '1': *X=1; break;case '2': *X=2; break;case '3': *X=3; break;case '4': *X=4; break;case '5': *X=5; break;case '6': *X=6; break;case '7': *X=7; break;case '8': *X=8; break;case '9': *X=9; break;case 'A': *X=10; break;case 'B': *X=11; break;case 'C': *X=12; break;case 'D': *X=13; break;case 'E': *X=14; break;case 'F': *X=15; break;default : break;}}else{printf("你输入非法数据,请重新输入\n");printf("按任意键继续");return FALSE;}return TRUE;}char Checkchar(char *p){char a;printf("str1检查中=%s\n",p);/////if(strcmp("000",p)==0)a='0';if(strcmp("100",p)==0)a='1';if(strcmp("010",p)==0)a='2';if(strcmp("110",p)==0)a='3';if(strcmp("001",p)==0)a='4';if(strcmp("101",p)==0)a='5';if(strcmp("011",p)==0)a='6';if(strcmp("111",p)==0)a='7';return a;}/*char Checkchar(char str1[3]){char c;int i;printf("str1检查中=%s\n",str1);/////for(i=0;i<=2;i++){if(str1[i]>='0'&&str1[i]<='1'){if(str1[0]=='0'&&str1[0]=='0'&&str1[2]=='0')c='0';if(str1[0]=='1'&&str1[1]=='0'&&str1[2]=='0')c='1';if(str1[0]=='0'&&str1[1]=='1'&&str1[2]=='0')c='2';if(str1[0]=='1'&&str1[1]=='1'&&str1[2]=='0')c='3';if(str1[0]=='0'&&str1[1]=='0'&&str1[2]=='1')c='4';if(str1[0]=='1'&&str1[1]=='0'&&str1[2]=='1')c='5';if(str1[0]=='0'&&str1[1]=='1'&&str1[2]=='1')c='6';if(str1[0]=='1'&&str1[1]=='1'&&str1[2]=='1')c='7';}else{printf("你输入非法数据,请重新输入\n");break;}}//if(str1[])return c;}*/void ten_to_two(){/*unsigned short a,b,c=0x8000,i;scanf("%hd",&a);for(i=1;i<=16;i++){b=a&c?1:0;printf("%d",b);c>>=1;}*/unsigned short num;T iZ=0,iy=0;BOOL flag=FALSE;Stack s;CreateStack(&s,MaxSize);printf("请输入一个十进制的整数:");scanf("%hd",&num);do{iZ=num/2;iy=num%2;Push(&s,iy);num=iZ;if(iZ!=0){flag=TRUE;}else{flag=FALSE;}}while(flag);printf("转换后的二进制数");PrintStack(s);printf("B\n");}void ten_to_eight(){unsigned short num;T iZ=0,iy=0;BOOL flag=FALSE;Stack s1;CreateStack(&s1,MaxSize);printf("请输入一个十进制的整数:");scanf("%hd",&num);do{iZ=num/8;iy=num%8;Push(&s1,iy);num=iZ;if(iZ!=0){flag=TRUE;}else{flag=FALSE;}}while(flag);printf("转换后的八进制数");PrintStack(s1);printf("O\n");}void ten_to_sixteen(){unsigned short num;T iZ=0,iy=0;BOOL flag=FALSE;Stack s2;CreateStack(&s2,MaxSize);printf("请输入一个十进制的整数:");scanf("%hd",&num);do{iZ=num/16;iy=num%16;Push(&s2,iy);num=iZ;if(iZ!=0){flag=TRUE;}else{flag=FALSE;}}while(flag);printf("转换后的十六进制数");PrintStacksixteen(s2);printf("H\n");printf("按任意键继续");}void sixteen_to_ten(){int i,j,len,tennum=0,tenshuLst=0,tenshu=0,temp=1;char str[100];BOOL flagCheck;Stack s3;char x;CreateStack(&s3,MaxSize);printf("请输入一个十六进制的整数:");getchar();gets(str);//因为十六进制数可能带字符,所以用字符串接收len=strlen(str);// printf("str=%s\n",str);/////////printf("len=%d\n",len);///////for(i=0;i<=len-1;i++){//printf("str[%d]=%c\n",i,str[i]);///////Pushsixteen(&s3,str[i]);// 挨个把数据圧栈}for(i=0;i<=len-1;i++){getTopsixteen(&s3,&x);// printf("x-出栈后=%d\n",x);/////flagCheck=Checknum(&x);//printf("x-检查后=%d\n",x);/////if(flagCheck==FALSE){return;}if(i==0){tenshuLst+=x;//printf("末位=%d\n",tenshuLst);////}else{for(j=1;j<=i;j++){temp*=16;//printf("新十值=%d\n",temp);////}tenshu+=x*temp;// printf("十值=%d\n",tenshu);/////}}tennum=tenshuLst+tenshu;printf("转换后的十进制数为");printf("%d",tennum);printf("D\n");printf("按任意键继续");}void two_to_eight(){int i,j=0,k,t,len;char a,b,c,str[100];char str1[3]={'0','0','0'};//清空str1Stack s4,s5;CreateStack(&s4,MaxSize);CreateStack(&s5,MaxSize);printf("请输入一个二进制的整数:");getchar();gets(str);len=strlen(str);printf("str=%s\n",str);///////printf("len_str=%d\n",len);///////i=len/3;j=len%3;printf("i=%d,j=%d\n",i,j);///////for(k=0;k<=len-1;k++){//printf("str[%d]=%c\n",k,str[k]);///////Pushsixteen(&s4,str[k]);}if(j!=0){if(j==1){str1[0]=str[len-i*3-1];str1[1]='0';str1[2]='0';}if(j==2){str1[0]=str[len-i*3-1];str1[1]=str[len-i*3-2];str1[2]='0';}str1[3]='\0';///////////////////////printf("检查前str1=%s\n",str1);///////c=Checkchar(str1);printf("c==%c\n",c);/////}else{//不做任何事}//if(len>=3)for(k=0;k<=i-1;k++){for(t=0;t<=3-1;t++){getTopsixteen(&s4,&a);printf("a=出栈后=%c\n",a);/////str1[t]=a;printf("检查前str1[%d]=%c\n",t,str1[t]);/////// }str1[3]='\0';///////////////////////printf("str1检查前=%s\n",str1);/////b=Checkchar(str1);//检验应转换的字符printf("b=检查后=%c\n",b);/////Pushsixteen(&s5,b);}if(j!=0){Pushsixteen(&s5,c);}printf("转换后的八进制数");while(s5.Top>=0){printf("%c",s5.Elements[s5.Top]);s5.Top--;}printf("O\n");printf("按任意键继续");}int main(){int GongN=0,flagXH=0;BOOL flagTc=FALSE;char Isgo_on;do{printf("请输入您想选择的功能序号");printf("-=-----------------------------------\n");printf("-=-----1 十进制转二进制--------------\n");printf("-=-----2 十进制转八进制--------------\n");printf("-=-----3 十进制转十六进制------------\n");printf("-=-----4 十六进制转十进制------------\n");printf("-=-----5 二进制转八进制--------------\n");printf("-=-----6 退出------------------------\n");printf("-=-----------------------------------\n");GongN=0;printf("请输入您想选择的功能序号(1~6)");scanf("%d",&GongN);switch(GongN){case 1: ten_to_two(); break;case 2: ten_to_eight(); break;case 3: ten_to_sixteen(); break;case 4: sixteen_to_ten(); break;case 5: two_to_eight(); break;case 6: flagTc=TRUE; break;default : break;}if(flagTc){break;}getchar();printf("请问是否继续输入运算?y/n\n");scanf("%c",&Isgo_on);if(Isgo_on=='y'||Isgo_on=='Y'){flagXH=0;}else if(Isgo_on=='n'||Isgo_on=='N')flagXH=1;system("cls");//清屏!!getchar();}while(flagXH==0);return 0;}。
C语言之十二转换在C语言程序中,各种类型的变量大多是以十进制的形式描述的,但是实际上这些变量在C语言中是以二进制的形式储存的,那么有些朋友就问了,数据的十进制和二进制之间是怎么进行互换的呢?我们首先来看整形数的二进制表示:对于整型数据而言,分为有符号和无符号两种,有符号的整型数既可以是正数又可以是负数,正负号由字节的最高位来表示,0表示正数,1表示负数。
我们来看有符号的二进制整型数:在学习之前我们要知道,一个字节表示的数据在二进制中是8位。
例如:一个字节表示的数:10110100,将这个二进制数据转换为十进制数据。
解:我们知道这个数据是有符号型数据,所以二进制数据的第一位是符号位,1表示负数,所以我们知道了这个十进制数是一个负数。
剩下的我们从右往左进行“遇一,二次幂相加”,这是什么意思呢?就是遇见1的时候就看看是2的几次幂,这就是数学上的计算,只不过是将数学上的十的几次幂换成了,二的几次幂,因为十进制是逢十进一,二进制顾名思义就是逢二进一了。
所以剩下的0110100就是这样的:从右往左数第三位上出现了1,这时是2^2,依次类推,2^4,2^5,最后进行相加:2^2+2^4+2^5=52,加上前面的符号位:就是十进制整型数:-52.下面我们再来看看无符号的二进制整型数据:无符号的二进制整型数据其最高位的0和1表示的不在是符号位,而是代表具体的数值。
下面我们还是以实际例子来说明:例如:一个字节表示的数10110100,他的十进制数的计算方法还是使用“遇一,二次幂相加”。
解:从右往左第一个1出现的位置是在第三位上出现:2^2,依次类推:2^2+2^4+2^5+2^7=180。
我们知道了二进制转换为十进制的方法之后,我们在来看看十进制转换为二进制:与上面的类似:十进制转化为二进制的方法是利用“短除二法”。
下面我们具体来看看这种方法。
所谓短除二法就是用这个数据一直除二,知道商为0为止。
下面我们来看一个实例:十进制数-52转化为二进制数。
B试卷1、以下程序的功能是:输入任意整数n〔0<n<10〕,输出n行由大写字母A开始构成的三角形字符阵列图形,例如,输入整数6时,程序运行结果如下:请填空完成该程序。
#include <stdio.h>main(){int i,j,n;char (1) ;printf("Please input n:");scanf("%d",&n);for(i=1;i<=n;i++){for(j=1; (2) ;j++){ printf("%2c",ch);(3) ;}(4) ;}}2. 以下程序的功能是:从一个字符串中截取前面给定长度的子字符串。
其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。
例如,str1="ABCDEF",n=4,截取后的字符数组str2="ABCD"。
请填空完成该程序。
#include <stdio.h>#include <conio.h>#define LEN 80main(){char str1[LEN],str2[LEN];int n,i;printf("输入字符串:\n");gets(str1);printf("输入子字符串的长度:");scanf( "%d", (1) );for(i=0;i<n;i++)(2) ;str2[i]= (3) ;printf("子字符串是:%s\n", (4) );}〔一〕程序调试题〔3小题,第1、2小题各3处错,第3小题4处错,每改正1处得3分,共30分〕1. 程序调试题1调试要求:以下程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/***/字样的注释),使其运行能得到正确的结果。
转换进制程序C语⾔,C语⾔各进制转换源代码#include#include#includevoid ten_two(int);void ten_eight(int);void ten_sixten(int);void two_ten(int);void two_eight(int);void two_sixten(int);void eight_two(int);void eight_ten(int);void eight_sixten(int);void sixten_two(char r[], int k);void sixten_ten(char r[], int k);void sixten_eight(char r[], int k);int main(void){int i, j, number = 0;int temp;char change[10];printf("=============================================================\n");printf(" 欢 迎 使 ⽤ 进 制 转 换 程 序 \n");printf(" 作 者:李 研 时 间:2009 年7 ⽉5 ⽇ \n");printf("=============================================================\n");do{temp = 0;//fflush(stdin);printf("\n请选择转换前的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");printf("转换前的进制是:");scanf("%d", &i);case 2:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);switch(j){case 2:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_eight(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);two_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;printf("转换后的进制是:");scanf("%d", &j);switch(j){case 8:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_two(number);temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_ten(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);eight_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 10:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n");{case 10:printf("\n同进制之间不⽤转化!\n");temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_two(number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_eight(number);temp = 1;break;case 16:printf("\n请输⼊您想要转化的数:");scanf("%d", &number);ten_sixten(number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 16:printf("\n请选择转换后的进制:\n2⼆进制\n8⼋进制\n10⼗进\n16⼗六进制\n0退出\n"); printf("转换后的进制是:");scanf("%d", &j);printf("\n同进制之间不⽤转化!\n"); temp = 1;break;case 2:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_two(change, number);temp = 1;break;case 8:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);for(number = 0;; number++){if(change[number] == '\0') break;}sixten_eight(change, number); temp = 1;break;case 10:printf("\n请输⼊您想要转化的数:"); fflush(stdin);gets(change);if(change[number] == '\0')break;}sixten_ten(change, number);temp = 1;break;case 0:printf("谢谢使⽤!!");}break;case 0:printf("\n谢谢使⽤!\n");}}while(temp == 1);return 0;}/*以下为: ⼆进制转换为⼗进制,⼋进制,⼗六进制.*/ void two_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;}if(s == 1)printf("您的输⼊有误!请重新输⼊\n"); elseprintf("\n转换后的数为:%d\n", result); }void two_eight(int a){int i, j, k, s = 0;int p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");elsefor(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}printf("\n");}}void two_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 2){if(a % 10 > 1){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if (p[j] > 10){switch(p[j])p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}else p[j] += 48;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}void eight_two(int a){int i, j, k, s = 0;int result = 0;int p[30];for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n"); else{printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%d", p[k]);}}void eight_ten(int a){int i, s = 0;int result = 0;for(i = 1; a != 0; i *= 8){if(a % 10 > 7){s = 1;break;}else{result += (a % 10) * i;a = a / 10;}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d\n", result); }}void eight_sixten(int a){int i, j, k, s = 0;char p[30];int result = 0;for(i = 1; a != 0; i *= 8){}else{result += (a % 10) * i;a = a / 10;}}for(j = 0; result != 0; j++) {p[j] = result % 16;result = result / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:}}}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%c", p[k]);}printf("\n");}}/*以下为: ⼗六进制转换为⼗进制,⼆进制,⼋进制.*/ void sixten_ten(char a[], int k){int i, j, s = 0;int result = 0;int b[50];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1'){b[i] = a[i] - 48;}else{case 'B': b[i] = 11; break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14;s = 1;}}}for(i = 1, j = k - 1; j >= 0; j--, i *= 16) {result += b[j] * i;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:%d", result); }}void sixten_two(char a[], int k){int i, j, s = 0;int result = 0;int b[50];int p[30];for(i = 0; i{if(a[i] <= '9' && a[i] >= '1')b[i] = a[i] - 48;else{switch(a[i]){break; case 'C': b[i] = 12; break; case 'D': b[i] = 13; break; case 'E': b[i] = 14; break; case 'F': b[i] = 15; break; case 'a': b[i] = 10; break; case 'b': b[i] = 11; break; case 'c': b[i] = 12; break; case 'd': b[i] = 13; break; case 'e': b[i] = 14; break; case 'f':}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 2;result = result / 2;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}}void sixten_eight(char a[], int k){int i, j, s = 0;int result = 0;int b[30];int p[30];if(a[i] <= '9' && a[i] >= '1') b[i] = a[i] - 48;else{switch(a[i]){case 'A':b[i] = 10;break;case 'B':b[i] = 11;break;case 'C':b[i] = 12;break;case 'D':b[i] = 13;break;case 'E':b[i] = 14;break;case 'F':b[i] = 15;break;case 'a':b[i] = 10;break;case 'b':b[i] = 11;break;case 'c':b[i] = 12;b[i] = 13;break;case 'e':b[i] = 14;break;case 'f':b[i] = 15;break;default:s = 1;}}}for(j = k - 1, i = 1; j >= 0; j--, i *= 16) {result += b[j] * i;}for(j = 0; result != 0; j++){p[j] = result % 8;result = result / 8;}if(s == 1)printf("It is wrong\n");else{printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");/*以下为: ⼗进制转换为⼆进制,⼋进制,⼗六进制.*/ void ten_two(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 2;a = a / 2;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");}void ten_eight(int a){int j, k;int p[30];for(j = 0; a != 0; j++){p[j] = a % 8;a = a / 8;}printf("\n转换后的数为:");for(k = j - 1; k >= 0; k--){printf("%d", p[k]);}printf("\n");{int j, k;int p[30];for(j = 0; a != 0; j++) {p[j] = a % 16;a = a / 16;if(p[j]p[j] += 48;else{switch(p[j]){case 10:p[j] = 'A';break;case 11:p[j] = 'B';break;case 12:p[j] = 'C';break;case 13:p[j] = 'D';break;case 14:p[j] = 'E';break;case 15:p[j] = 'F';break;}}}printf("\n转换后的数为:"); for(k = j - 1; k >= 0; k--) {printf("%c", p[k]);}printf("\n");}。
1. 计算并输出下列级数和:1 1 1S = ── + ── + … + ───1×2 2×3 n(n+1)例如: 当n = 15时, 函数值为: 0.9375002. 已知一个数列的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。
计算并输出该数列前n项的平方根之和sum。
n的值通过键盘输入。
例如, 当n=10时, 程序的输出结果应为: 23.197745。
3. 定义了N×N的二维数组, 输入该数组的值。
编写程序使数组上半三角元素中的值全部置成0。
例如:a数组中的值为| 1 9 7 | | 0 0 0 |a = | 2 3 8 | 则返回主程序后a数组中的值应为| 2 0 0 || 4 5 6 | | 4 5 0 |4. 编写程序把a数组中的n个数和b数组中逆序的n个数一一对应相加,结果存在c数组中。
例如: 当a数组中的值是: 1、3、5、7、8, b数组中的值是: 2、3、4、5、8, c数组中存放的数据是9、8、9、10、105.给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出。
例如, 若输入8和2, 则应输出1000(即十进制数8转换成二进制表示是1000)。
6.读入一个长度小于63个字符的英文句子,将其中每个单词的最后一个字母改成大写,然后输出此句子(这里的“单词”是指由空格隔开的字符串)。
例如, 若输入"I am a student to take the examination.",则应输出"I aM A studenT tO takE thE examination."。
7.定义了N×N的二维数组, 并在主函数中自动赋值。
编写程序使数组中第一行元素中的值与倒数第一行元素中的值对调、第二行元素中的值与倒数第二行元素中的值对调、……、其他依次类推。
例如: a数组中的值为|0 11 12 7 9||1 9 7 4 5|a = |20 13 18 3 1||14 5 6 8 2||15 9 17 4 1||15 9 17 4 1||14 5 6 8 2|则返回主程序后a数组中的值应为|20 13 18 3 1||1 9 7 4 5||0 11 12 7 9|8.将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,但去掉重复字符。
c语言各种进制转换计算机中常用的数的进制主要有:二进制、八进制、十六进制。
2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。
以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100 ←二进制数6543210 ←排位方法例如二进制换算十进制的算法:1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20↑ ↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010 110 111 011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010 = 2110 = 4+2 = 6111 = 4+2+1 = 7011 = 2+1 = 3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:0101 1011 1011运算为:0101 = 4+1 = 51011 = 8+2+1 = 11(由于10为A,所以11即B)1011 = 8+2+1 = 11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:计算:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100五、八进制数转换为十进制数八进制就是逢8进1。
十进制、二进制和十六进制为什么使用二进制和十六进制计算机作为一种电子计算工具,是由大量的电子器件组成的,在这些电子器件中,电路的通和断、电位的高和低,用两个数字符号“1”和“0”分别表示容易实现。
同时二进制的运算法则也很简单,因此,在计算机内部通常用二进制代码来作为内部存储、传输和处理数据。
目前计算机中所有的信息都用“0”和“1”两个数字符号组合的二进制数来表示。
数值、图形、文字等各种形式的信息,需要计算机加工处理时,首先必须按一定的法则转换成二进制数。
用二进制数表示一个数值时,位数比较长,不便书写和记忆,所以人们常用十六进制数来表示二进制数。
编程中,我们常用的还是十进制,十六进制会经常用到,二进制基本上不用。
特征十进制(Decimal)日常生活中使用的数是十进制数,它的特征是:有10个数字:0、1、2、3、4、5、6、7、8、9。
运算时逢十进一。
二进制(Binary)有2个数字:0,1。
运算时逢二进一。
十六进制(Hex)(1)有十六个数字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
(2)运算时逢十六进一。
在十六进制中,分别用A、B、C、D、E和F来表示十进制数的10、11、12、13、14和15。
数值对照表十进制0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...二进制0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 ...十六进制0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ...十进制32 64 128 256 512 1024(1K) 1M(1024K) 1G(1024M)十六进制20 40 80 100 200 400 100000 40000000十六进制数的表达方法如果不使用特殊的书写形式,16进制数也会和10进制相混。