c語言nr
『壹』 求十進制轉換二進制c語言代碼
求十進制轉換二進制C語言代碼代碼如下:
#include<stdio.h>
#defineNR(sizeof(int)*8)//二進制位的個數
voiddeciToBin(intnum);//十進制轉換為二進制函數聲明
/*主函數*/
intmain(void)
{
intnum;
fprintf(stdout,"請輸入一個正整數:");
/*獲取並檢查用戶輸入*/
while(1)
{
if(fscanf(stdin,"%d",&num)!=1)
{
fprintf(stderr,"輸入錯誤!請重新輸入:");
while(getchar()!=' ');//去掉多餘的非法字元
continue;
}
elseif(num<0)//輸入的數不能為負數
{
fprintf(stderr,"請輸入錯誤!請輸入正整數:");
continue;
}
else
break;
}
fprintf(stdout,"對應二進制為:");
#if1/*方法一:不使用遞歸*/
charbitArr[NR];
inti=-1;
/*演算法:棧的數學模型*/
do{
i+=1;
bitArr[i]=num%2;
num/=2;
}while(num!=0);
/*逆序列印*/
for(i;i>=0;i--)
{
fprintf(stdout,"%d",bitArr[i]);
}
fputc(' ',stdout);
#else/*方法二:使用遞歸*/
if(num==0)
{
fprintf(stdout,"0 ");
}
else
{
deciToBin(num);//調用第歸函數
fputc(' ',stdout);
}
#endif
return0;
}
/*
*@函數名:deciToBin
*@函數功能:實現十進制轉換為二進制
*@參數:需要轉換的十進制整數
*/
voiddeciToBin(intnum)
{
/*第歸結束條件*/
if(num==0)
{
return;
}
/*第歸調用*/
deciToBin(num/2);
/*逆序列印*/
fprintf(stdout,"%d",num%2);
}
(1)c語言nr擴展閱讀:
使用C語言編程實現任意進制數(2-16進制)轉換為其他任意進制數(2-16進制)方法:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intTenNum(chara[],intB);
voidNumchange(intm,intB);
intTenNum(chara[],intB)
{
intlen,i,num;
intsum=0;
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]>='0'&&a[i]<='9')
num=a[i]-'0';
elseif(a[i]>='A'&&a[i]<='F')
num=a[i]-'A'+10;
sum=sum*B+num;
}
returnsum;
}
voidNumchange(intm,intB)
{
intn;
if(m)
{
Numchange(m/B,B);
n=m%B;
if(n<10)
printf("%d",n);
else
printf("%c",n+55);
}
}
intmain()
{
intB,b;
chara[20];
printf("請輸入待轉換數的進制(2-16):");
do{
scanf_s("%d",&B);
}while(B<2&&B>16);
printf("請輸入待轉換數:");
getchar();
gets_s(a);
intm=TenNum(a,B);
printf("請輸入需要轉成幾進制數(2-16):");
do{
scanf_s("%d",&b);
}while(B<2&&B>16);
printf("%d進制數%s轉換為%d進制數的結果為:",B,a,b);
Numchange(m,b);
printf(" ");
system("pause");
return0;
}
『貳』 C語言如何動態分配二維數組
動態分配二維數組:
void main(int argc, char * argv[])
{
int NC=100, NR=200;
int i,j;
char **a; // a[NR][NC] -- *a[NR] -- a[j][i]
a = (char **) malloc(sizeof(char *) * NR);
for (j=0;j<NR;j++){
a[j] = (char *) malloc(sizeof(char) * NC);
}
// 釋放空間: free(a);
編譯錯誤是因為p[j]=(char *)malloc,而不是題目的(char *)malloc(n*sizeof(char))。
(2)c語言nr擴展閱讀:
二維數組的動態分配
二維數組A[m][n],這是一個m行,n列的二維數組。設a[p][q]為A的第一個元素,即二維數組的行下標從p到m+p,列下標從q到n+q,按「行優先順序」存儲時則元素a[i][j]的地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按「列優先順序」存儲時,地址計算為:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放該數組至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組。
『叄』 用C語言編寫:輸入半徑R,求圓的周長、面積和球的體積。
#define PI 3.14
#include<stdio.h>
void main(void)
{ float r,l,s,v;
printf("please input r r=");
scanf("%f",&r);
l=2*PI*r;
s=PI*r*r;
v=4*PI*r*r/3;
printf("the result :");
printf(" l=%f s=%f v=%f",l,s,v);
getchar();
}
(3)c語言nr擴展閱讀:
實例操作
// 設圓半徑r = 1.5,圓柱高h = 3
// 要求:用scanf輸入數據,取小數點後兩位
#include <stdio.h>
int main()
{
float r,h;
float c,s,sq,vq,vz;
float pai = 3.1415926;
printf("請輸入圓半徑:");
scanf("%f",&r);
printf("請輸入圓柱高:");
scanf("%f",&h);
c = 2 * pai * r;
s = pai * r * r;
sq = 4 * pai * r * r;
vq = ( 4 / 3 ) * pai * r * r * r;
vz = s * h;
printf("圓周長是:%4.2f ",c);
printf("圓面積是:%4.2f ",s);
printf("圓球表面積是:%4.2f ",sq);
printf("圓球體積是:%4.2f ",vq);
printf("圓柱體積是:%4.2f ",vz);
return 0;
}
『肆』 C語言,語句 float **a 是什麼意思
這是聲明,聲明 a 是變數,它 是指向 「浮點型 指針」 的 一個「指針」。
它不是二維數組。
要變2位數組,要做以下動態分配
int NC=5, NR=3; // 假定 5 列 3 行
int i,j;
float **a;
a = (float **) malloc(sizeof(float *) * NR);
for (j=0;j<NR;j++){
a[j] = (float *) malloc(sizeof(float) * NC);
}
接下來 可用 a[j][i] 了:
for (j=0;j<NR;j++)
for (i=0;i<NC;i++) {
a[j][i] = (j+1)*100.0 + i;
}
for (j=0;j<NR;j++){
for (i=0;i<NC;i++) printf("%g ",a[j][i]);
printf("\n");
}