當前位置:編程學習大全網 - 源碼下載 - 幾個c語言的問題

幾個c語言的問題

1,解:源程序如下:

#include <stdio.h>

int fun(int a[], int n)

{

int i,j=0;

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

{

if(a[i]!=a[j])

{

j++;

a[j]=a[i];

}

}

return j+1;

}

main()

{ int a[10],i,n=10;

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

scanf("%d",&a[i]);

printf("The original data :\n");

for(i=0; i<n; i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\n\nThe data after deleted :\n");

for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");

}

2,解:源程序如下:

# define M sizeof (unsigned int)*8/*函數TRANS將無符號整數N轉換成D(2,8,16)進制表示的字符串S*/

int trans( unsigned n, int d, char s[])

{

static char digits[]="0123456789ABCDEF";/*16進制數字字符*/

char buf[M+1];

int j,i=M;

if (d<2||d>16)

{

s[0]='\0';/*不合理的進制,置S為空字符串*/

return 0;/*不合理的進制,函數返回0*/

}

buf[i]='\0';

do

{

buf[--i]=digits[n%d];/*得出最低位,將對應字符存入對應數組中*/

n/=d;

}while (n);

for (j=0;(s[j]=buf[i])!='\0';j++,i++)/*將工作數組中的字符串復制到S*/

s[j]=buf[i];/*其中控制條件可寫成S[J]=BUF[i]*/

return j;

}

main()

{

unsigned int num=0;

int scale[]={2,8,16};

char str[33];

int i;

clrscr();

puts("please input a number to num:");

scanf("%d",&num);

printf("the number you input is %d,\n the translation results are:\n",num);

for (i=0;i<sizeof(scale)/sizeof(scale[0]);i++)

{

if (trans(num,scale[i],str))

printf("%5d=%s(%d)\n",num,str,scale[i]);

else

printf("%5d=>(%d)error!\n",num,str,scale[i]);

}

printf("\n press any key to quit\n");

getch();

}

3,解:源程序如下:

(註意:本源碼中,函數GetWeekDay的返回值僅僅表示輸入參數是否“正確/有效”(例如前三個參數使用2001,2,29就是無效參數),能否得到預期的星期值;真正的星期值則是通過輸出變量返回給主調函數的。)

////////////////////////////////////////////

#include <time.h>

#include <stdio.h>

int GetWeekDay(int nYear,int nMon,int nDay, int *npWeekDay);

int main()

{

int nMyWeekDay;

int nResult;

nResult = GetWeekDay(2007,1,10,&nMyWeekDay);

return 0;

}

//輸入日期,返回星期的C語言函數

int GetWeekDay(int nYear,int nMon,int nDay, int *npWeekDay)

{

int nRetVal = 0;

time_t tMyDateTime;

struct tm tmMyDate,*tmpMyDate;

if((nYear<1900||nYear>=3000)

|| (nMon<1 || nMon>12)

|| (nDay<1||nDay>31) )

{

nRetVal = 1;

*npWeekDay = -1;

return nRetVal;

}

//memset(tmMyDate,0,sizeof(struct tm));

tmMyDate.tm_year = nYear-1900;

tmMyDate.tm_mon = nMon-1;

tmMyDate.tm_mday = nDay;

tmMyDate.tm_hour =16;

tmMyDate.tm_min =30;

tmMyDate.tm_sec =30;

tMyDateTime = mktime(&tmMyDate);

if(tMyDateTime<0)

{

nRetVal = 1;

*npWeekDay = -1;

return nRetVal;

}

tmpMyDate = localtime(&tMyDateTime);

*npWeekDay = tmpMyDate->tm_wday;

return nRetVal;

}

  • 上一篇:時間的玫瑰:但斌投資劄記的目錄
  • 下一篇:cf怎麽設置爆頭戰
  • copyright 2024編程學習大全網