華為校園招聘面試_第1頁
已閱讀1頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  1.輸入整型數(shù)組求數(shù)組的最小數(shù)和最大數(shù)之和,例如輸入1,2,3,4則輸出為5,當(dāng)輸入只有一個數(shù)的時候,則最小數(shù)和最大數(shù)都是該數(shù),例如只輸入1,則輸出為2;另外數(shù)組的長度不超過50</p><p><b>  參考代碼:</b></p><p>  #include<stdio.h></p><p><b&

2、gt;  main()</b></p><p><b>  {</b></p><p>  int num[50]={0};</p><p><b>  int i,n;</b></p><p>  printf(“請輸入整型數(shù)組的長度(1~50):”);</p><

3、p>  scanf(“%d”,&n);</p><p>  printf(“請輸入整型數(shù)組的元素:”);</p><p>  for (i=0;i<n;i++)</p><p><b>  {</b></p><p>  scanf(“%d”,&num[i]);  

4、0; </p><p><b>  }</b></p><p>  int min_num=num[0];</p><p>  int max_num=num[0];</p><p>  for(int j=0;j<n;j++)</p><p><b>  {</b

5、></p><p>  if(max_num<num[j])</p><p>  max_num=num[j];</p><p>  else if(min_num>num[j])</p><p>  min_num=num[j];</p><p><b>  }</b><

6、/p><p>  int sum=min_num+max_num;</p><p>  printf(“數(shù)組中最大與最小值之和:%d\n”,sum);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  2.求兩個長

7、長整型的數(shù)據(jù)的和并輸出,例如輸入1233333333333333 。。。 3111111111111111111111111.。。。,則輸出。。。。</p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<malloc.h></p

8、><p><b>  main()</b></p><p><b>  {</b></p><p>  char *num1,*num2; //兩個長長整型數(shù)據(jù)</p><p>  char *sum;</p><p>  //    in

9、t temp;</p><p>  int len_num1,len_num2; // 兩個長長整型數(shù)據(jù)的長度</p><p>  int len_max,len_min;</p><p>  num1=(char*)malloc(sizeof(char));</p><p>  num2=(char*)malloc(sizeof(char)

10、);</p><p>  printf(“輸入兩個長長整型數(shù)據(jù):”);</p><p>  scanf(“%s”,num1);</p><p>  printf(“輸入兩個長長整型數(shù)據(jù):”);</p><p>  scanf(“%s”,num2);</p><p>  len_num1=strlen(num1);<

11、;/p><p>  len_num2=strlen(num2);</p><p>  len_max=(len_num1>=len_num2)? len_num1:len_num2;</p><p>  len_min=(len_num1<=len_num2)? len_num1:len_num2;</p><p>  int len

12、_max1=len_max;</p><p>  sum=(char*)malloc(sizeof(char)*len_max);</p><p>  memset(sum,0×00,len_max+1);//切忌初始化</p><p>  for(;len_num1>0&&len_num2>0;len_num1–,len_nu

13、m2–)</p><p><b>  {</b></p><p>  sum[len_max--]=((num1[len_num1-1]-’0′)+(num2[len_num2-1]-’0′));</p><p><b>  }</b></p><p>  if(len_num1>0)<

14、/p><p><b>  {</b></p><p>  sum[len_max--]=num1[len_num1 - 1 ]-’0′;</p><p>  len_num1–;</p><p><b>  }</b></p><p>  if(len_num2>0)<

15、;/p><p><b>  {</b></p><p>  sum[len_max--]=num1[len_num2 - 1]-’0′;</p><p>  len_num2–;</p><p><b>  }</b></p><p>  for(int j=len_max1;j

16、>=0;j–) //實(shí)現(xiàn)進(jìn)位操作</p><p><b>  {</b></p><p>  //    temp=sum[j]-’0′;</p><p>  if(sum[j]>=10)</p><p><b>  {</b></p>

17、<p>  sum[j-1]+=sum[j]/10;</p><p>  sum[j]%=10;</p><p><b>  }</b></p><p><b>  }</b></p><p>  char *outsum=(char*)malloc(sizeof(char)*len_

18、max1);</p><p><b>  j=0;</b></p><p>  while(sum[j]==0) //跳出頭部0元素</p><p><b>  j++;</b></p><p>  for(int m=0;m<len_max1;j++,m++)</p><

19、p>  outsum[m]=sum[j]+’0′;</p><p>  outsum[m]=’\0′;</p><p>  printf(“輸出兩長長整型數(shù)據(jù)之和:%s\n”,outsum);</p><p><b>  return 0;</b></p><p><b>  }</b><

20、;/p><p>  3.通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串過濾程序,若字符串中出現(xiàn)多個相同的字符,將非首次出現(xiàn)的字符過濾掉。</p><p>  比如字符串”abacacde”過濾結(jié)果為”abcde”。</p><p><b>  要求實(shí)現(xiàn)函數(shù):</b></p><p>  void strin

21、gFilter(const char *pInputStr, long lInputLen, char *pOutputStr);</p><p>  【輸入】 pInputStr:輸入字符串</p><p>  lInputLen:輸入字符串長度</p><p>  【輸出】 pOutputStr:輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;</p>

22、<p><b>  參考代碼:</b></p><p>  #include <stdio.h></p><p>  #include<string.h></p><p>  #include<malloc.h></p><p>  void stringFilter(c

23、onst char *p_str, long len, char *p_outstr)</p><p><b>  {</b></p><p>  int array[256]={0};</p><p>  const char *tmp = p_str;</p><p>  for(int j=0;j<len;j

24、++)</p><p><b>  {</b></p><p>  if(array[tmp[j]]==0)</p><p>  *p_outstr++= tmp[j];</p><p>  array[tmp[j]]++;</p><p><b>  }</b></p

25、><p>  *p_outstr = ‘\0′;</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  char *str = “cccddecc”;</p><p>

26、;  int len = strlen(str);    </p><p>  char * outstr = (char *)malloc(len*sizeof(char));</p><p>  stringFilter(str,len,outstr);</p><p>  printf(“%s\n”,outstr);&l

27、t;/p><p>  free(outstr);</p><p>  outstr = NULL;</p><p><b>  }</b></p><p>  5.通過鍵盤輸入100以內(nèi)正整數(shù)的加、減運(yùn)算式,請編寫一個程序輸出運(yùn)算結(jié)果字符串。</p><p>  輸入字符串的格式為:”操作數(shù)1 運(yùn)算符

28、 操作數(shù)2″,”操作數(shù)”與”運(yùn)算符”之間以一個空格隔開。</p><p><b>  補(bǔ)充說明:</b></p><p>  1. 操作數(shù)為正整數(shù),不需要考慮計算結(jié)果溢出的情況。</p><p>  2. 若輸入算式格式錯誤,輸出結(jié)果為”0″。</p><p><b>  要求實(shí)現(xiàn)函數(shù):</b>&l

29、t;/p><p>  void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);</p><p>  【輸入】 pInputStr: 輸入字符串</p><p>  lInputLen: 輸入字符串長度</p><p>  【輸出】 pOutputStr: 輸

30、出字符串,空間已經(jīng)開辟好,與輸入字符串等長;</p><p>  #include <stdio.h></p><p>  #include<string.h></p><p>  #include<stdlib.h></p><p>  void arithmetic(const char *input,

31、 long len, char *output)</p><p><b>  {</b></p><p>  char s1[10];</p><p>  char s2[10];</p><p>  char s3[10];</p><p>  int cnt = 0;</p>&

32、lt;p>  int len_input=strlen(input);</p><p>  for(int i=0;i<len_input;++i)</p><p><b>  {</b></p><p>  if(input[i]==’ ‘)</p><p><b>  cnt++;</b&

33、gt;</p><p><b>  }</b></p><p>  if(cnt!=2)</p><p><b>  {</b></p><p>  *output++ = ’0′;</p><p>  *output = ‘\0′;</p><p>

34、<b>  return;</b></p><p><b>  }</b></p><p>  sscanf(input,”%s %s %s”,s1,s2,s3);</p><p>  if(strlen(s2)!=1||(s2[0]!=’+'&&s2[0]!=’-'))</p>

35、<p><b>  {</b></p><p>  *output++ = ’0′;</p><p>  *output = ‘\0′;</p><p><b>  return;</b></p><p><b>  }</b></p><p&

36、gt;  int len_s1=strlen(s1);</p><p>  for(i=0;i<len_s1;i++)</p><p><b>  {</b></p><p>  if(s1[i]<’0′||s1[i]>’9′)</p><p><b>  {</b></p&

37、gt;<p>  *output++ = ’0′;</p><p>  *output = ‘\0′;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><

38、;p>  int len_s3=strlen(s3);</p><p>  for(i=0;i<len_s3;i++)</p><p><b>  {</b></p><p>  if(s3[i]<’0′||s3[i]>’9′)</p><p><b>  {</b><

39、/p><p>  *output++ = ’0′;</p><p>  *output = ‘\0′;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p>

40、<p>  int x = atoi(s1);</p><p>  int y = atoi(s3);</p><p>  if(s2[0]==’+')</p><p><b>  {</b></p><p>  int result = x+y;</p><p>  itoa(

41、result,output,10);</p><p><b>  }</b></p><p>  else if(s2[0]==’-')</p><p><b>  {</b></p><p>  int result = x-y;</p><p>  itoa(re

42、sult,output,10);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  *output++ = ’0′;</p><p>  *output =

43、‘\0′;</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b><

44、;/p><p>  char str[] = {“10 – 23″};</p><p>  char outstr[10];</p><p>  int len = strlen(str);</p><p>  arithmetic(str,len,outstr);</p><p>  printf(“%s\n”,str)

45、;</p><p>  printf(“%s\n”,outstr);    </p><p><b>  }</b></p><p>  6.一組人(n個),圍成一圈,從某人開始數(shù)到第三個的人出列,再接著從下一個人開始數(shù),最終輸出最終出列的人</p><p> ?。s瑟夫環(huán)是一個數(shù)

46、學(xué)的應(yīng)用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數(shù),數(shù)到m的那個人出列;他的下一個人又從1開始報數(shù),數(shù)到m的那個人又出列;依此規(guī)律重復(fù)下去,直到圓桌周圍的人全部出列。)</p><p>  #include <stdio.h></p><p>  #include<string.h></p><p&

47、gt;  #include<stdlib.h></p><p>  #include<malloc.h></p><p>  typedef struct Node</p><p><b>  {</b></p><p><b>  int data;</b></p&g

48、t;<p>  struct Node *next;</p><p>  }LinkList;</p><p>  LinkList *create(int n)</p><p><b>  {</b></p><p>  LinkList *p,*q,*head;</p><p>

49、<b>  int i=1;</b></p><p>  p=(LinkList*)malloc(sizeof(LinkList));</p><p>  p->data=i;</p><p><b>  head=p;</b></p><p>  for(i=1;i<=n;i++)&l

50、t;/p><p><b>  {</b></p><p>  q=(LinkList*)malloc(sizeof(LinkList));</p><p>  q->data=i+1;</p><p>  p->next=q;</p><p><b>  p=q;</b&g

51、t;</p><p><b>  }</b></p><p>  p->next=head; //使鏈表尾連接鏈表頭,形成循環(huán)鏈表</p><p>  return head;</p><p><b>  free(p);</b></p><p><b>  

52、p=NULL;</b></p><p><b>  free(q);</b></p><p><b>  q=NULL;</b></p><p><b>  }</b></p><p>  void deletefun(LinkList *L,int m)</

53、p><p><b>  {</b></p><p>  LinkList *p,*q,*temp;</p><p><b>  int i;</b></p><p><b>  p=L;</b></p><p>  while(p->next!=p)&

54、lt;/p><p><b>  {</b></p><p>  for(i=1;i<m;i++)</p><p><b>  {</b></p><p><b>  q=p;</b></p><p>  p=p->next;</p>

55、<p><b>  }</b></p><p>  printf(“%5d”,p->data);</p><p><b>  temp=p;</b></p><p>  q->next=p->next;</p><p>  p=p->next;</p>

56、<p>  free(temp);</p><p><b>  }</b></p><p>  printf(“%5d\n”,p->data);</p><p><b>  }</b></p><p>  int main()</p><p><b&

57、gt;  {</b></p><p>  int n=7,m=3;</p><p>  LinkList *head1;</p><p>  head1=create(n);</p><p>  deletefun(head1,m);</p><p><b>  return 0;</b&g

58、t;</p><p><b>  }</b></p><p>  7..輸入一串字符,只包含”0-10″和”,”找出其中最小的數(shù)字和最大的數(shù)字(可能不止一個),輸出最后剩余數(shù)字個數(shù)。如輸入 “3,3,4,5,6,7,7″</p><p>  #include<stdio.h></p><p>  #inclu

59、de<stdlib.h></p><p>  #include<string.h></p><p>  void main()</p><p><b>  {</b></p><p>  char str[100];</p><p>  printf(“輸入一組字符串:\n

60、”);</p><p>  scanf(“%s”,&str);</p><p>  int len=strlen(str);</p><p>  int array[100];</p><p>  int count=0;</p><p>  for(int i=0;i<len;i++)</p>

61、;<p><b>  {</b></p><p>  if(str[i]>=’0′&&str[i]<=’9′)</p><p>  array[count++]=str[i]-’0′;</p><p><b>  }</b></p><p>  array[

62、count]=’\0′;</p><p>  int result=count;</p><p>  int min=array[0];</p><p>  int max=array[0];</p><p>  for(int j=0;j<count;j++)</p><p><b>  {</

63、b></p><p>  if(max<array[j])</p><p>  max=array[j];</p><p>  else if(min>array[j])</p><p>  min=array[j];</p><p><b>  }</b></p>

64、<p>  for(int k=0;k<count;k++)</p><p><b>  {</b></p><p>  if(array[k]==min)</p><p><b>  result–;</b></p><p>  if(array[k]==max)</p&g

65、t;<p><b>  result–;</b></p><p><b>  }</b></p><p>  printf(“%d\n”,result);</p><p><b>  }</b></p><p>  8.輸入一組身高在170到190之間(5個身高)

66、,比較身高差,選出身高差最小的兩個身高;若身高差相同,選平均身高高的那兩個身高;從小到大輸出;如輸入 170 181 173 186 190輸出 170 173</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #define N 5</p>

67、<p>  int main()</p><p><b>  {</b></p><p>  int Height[N];</p><p><b>  int dmin;</b></p><p>  int H1,H2;</p><p>  int i,j,temp

68、;</p><p>  printf(“請輸入一組身高在170到190之間的數(shù)據(jù)(共5個):\n”);</p><p>  for(int k=0;k<N;k++)</p><p>  scanf(“%d”,&Height[k]);</p><p>  printf(“\n”);</p><p>  fo

69、r(i=0;i<N;i++)</p><p>  for(j=1;j<N-i&&Height[j-1]>Height[j];j++)</p><p><b>  {</b></p><p>  temp=Height[j-1];</p><p>  Height[j-1]=Height[

70、j];</p><p>  Height[j]=temp;</p><p><b>  }</b></p><p>  H1=Height[0];</p><p>  H2=Height[1];</p><p>  dmin=H2-H1;</p><p>  for(int

71、 m=2;m<N;m++)</p><p><b>  {</b></p><p>  if(Height[m]-Height[m-1]<=dmin)</p><p><b>  {</b></p><p>  H1=Height[m-1];</p><p>  

72、H2=Height[m];</p><p>  dmin=Height[m]-Height[m-1];</p><p><b>  }</b></p><p><b>  }</b></p><p>  printf(“身高差最小的兩個身高為:\n”);</p><p>  

73、printf(“%d,%d\n”,H1,H2);</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  9.刪除子串,只要是原串中有相同的子串就刪掉,不管有多少個,返回子串個數(shù)。</p><p>  #include <stdio.

74、h></p><p>  #include <stdlib.h></p><p>  #include <assert.h></p><p>  #include <string.h></p><p>  int delete_sub_str(const char *str,const char *s

75、ub_str,char *result)</p><p><b>  {</b></p><p>  assert(str != NULL && sub_str != NULL);</p><p>  const char *p,*q;</p><p>  char *t,*temp;</p>

76、<p><b>  p = str;</b></p><p>  q = sub_str;</p><p>  t = result;</p><p>  int n,count = 0;</p><p>  n = strlen(q);</p><p>  temp = (char

77、 *)malloc(n+1);</p><p>  memset(temp,0×00,n+1);</p><p><b>  while(*p)</b></p><p><b>  {</b></p><p>  memcpy(temp,p,n);</p><p>

78、  if(strcmp(temp,q) == 0 )</p><p><b>  {</b></p><p><b>  count++;</b></p><p>  memset(temp,0×00,n+1);</p><p>  p = p + n;</p><p&

79、gt;<b>  }</b></p><p><b>  else</b></p><p><b>  {    </b></p><p><b>  *t = *p;</b></p><p><b>  

80、p++;</b></p><p><b>  t++;</b></p><p>  memset(temp,0×00,n+1);</p><p><b>  }    </b></p><p><b>  }</b>

81、</p><p>  free(temp);</p><p>  return count;</p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  char s[

82、100] = {‘\0′};</p><p>  int num = delete_sub_str(“123abc12de234fg1hi34j123k”,”123″,s);</p><p>  printf(“The number of sub_str is %d\r\n”,num);</p><p>  printf(“The result string is

83、%s\r\n”,s);</p><p><b>  }</b></p><p>  10. 要求編程實(shí)現(xiàn)上述高精度的十進(jìn)制加法。要求實(shí)現(xiàn)函數(shù):</p><p>  void add (const char *num1, const char *num2, char *result)</p><p>  【輸入】num1:

84、字符串形式操作數(shù)1,如果操作數(shù)為負(fù),則num1[0]為符號位’-’</p><p>  num2:字符串形式操作數(shù)2,如果操作數(shù)為負(fù),則num2[0]為符號位’-’</p><p>  【輸出】result:保存加法計算結(jié)果字符串,如果結(jié)果為負(fù),則result[0]為符號位。</p><p>  #include<stdio.h></p>

85、<p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  void move(char *str, int length) //移除字母前的”-”符號</p><p><b>  {</b></p><p>  if(

86、str[0] != ‘-’)</p><p><b>  return;</b></p><p><b>  int i;</b></p><p>  for(i = 0; i < length-1; i++)</p><p>  str[i] = str[i+1];</p>&

87、lt;p>  str[i] = ‘\0′;</p><p><b>  }</b></p><p>  int remove_zero(char *result, int length)</p><p><b>  {</b></p><p>  int count = 0;</p>

88、;<p>  for(int i = length-1; i > 0; i–) //從最后開始移除0,直到遇到非0數(shù)字,只對最初位置上的0不予判斷</p><p><b>  {</b></p><p>  if(result[i] == ’0′)</p><p><b>  {</b></p&g

89、t;<p>  result[i] = ‘\0′;</p><p><b>  count++;</b></p><p><b>  }else</b></p><p>  return length-count;</p><p><b>  }</b></

90、p><p>  return length – count;</p><p><b>  }</b></p><p>  void reverse(char *result, int length) //將字符串倒轉(zhuǎn)</p><p><b>  {</b></p><p>  c

91、har temp;</p><p>  for(int i = 0; i <= (length-1)/2; i++)</p><p><b>  {</b></p><p>  temp = result[i];</p><p>  result[i] = result[length-1-i];</p>

92、<p>  result[length-1-i] = temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int real_add(char *str1, char *str2, char *result, const bool flag)</

93、p><p><b>  {</b></p><p>  int len1 = strlen(str1);</p><p>  int len2 = strlen(str2);</p><p>  int n1, n2, another = 0; //another表示進(jìn)位</p><p>  int

94、cur_rs = 0; //表示result的當(dāng)前位數(shù)</p><p><b>  int i, j;</b></p><p>  int curSum;</p><p>  for(i = len1-1, j = len2-1; i >= 0 && j >= 0; i–, j–)</p><p&

95、gt;<b>  {</b></p><p>  n1 = str1[i] – ’0′;</p><p>  n2 = str2[j] – ’0′;</p><p>  curSum = n1 + n2 + another;</p><p>  result[cur_rs++] = curSum % 10 + ’0′;&

96、lt;/p><p>  another = curSum / 10;</p><p><b>  }</b></p><p><b>  if(j < 0)</b></p><p><b>  {</b></p><p>  while(i >=

97、 0) //遍歷str1剩余各位</p><p><b>  {</b></p><p>  n1 = str1[i--] – ’0′;</p><p>  curSum = n1 + another;</p><p>  result[cur_rs++] = curSum % 10 + ’0′;</p>

98、<p>  another = curSum / 10;</p><p><b>  }</b></p><p>  if(another != 0) //如果還有進(jìn)位未加上</p><p>  result[cur_rs++] = another + ’0′;</p><p><b>  }<

99、/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while(j >= 0)</p><p><b>  {</b></p><p>  n2 = str2[j--] – ’0′

100、;</p><p>  curSum = n2 + another;</p><p>  result[cur_rs++] = curSum % 10 + ’0′;</p><p>  another = curSum / 10;</p><p><b>  }</b></p><p>  if(

101、another != 0)</p><p>  result[cur_rs++] = another + ’0′;</p><p><b>  }</b></p><p>  result[cur_rs] = ‘\0′;</p><p>  cur_rs = remove_zero(result, cur_rs);<

102、;/p><p><b>  if(!flag)</b></p><p><b>  {</b></p><p>  result[cur_rs++] = ‘-’;</p><p>  result[cur_rs] = ‘\0′;</p><p><b>  }</

103、b></p><p>  reverse(result, strlen(result));</p><p>  return cur_rs;</p><p><b>  }</b></p><p>  int real_minus(char *str1, char *str2, char *result) //使用

104、str1減去str2</p><p><b>  {</b></p><p>  char big[100], small[100];</p><p>  int big_len, sml_len;</p><p>  int len1 = strlen(str1);</p><p>  int

105、len2 = strlen(str2);</p><p>  bool flag = false; //用于標(biāo)記str2是否比str1大</p><p>  if(len1 < len2)</p><p>  flag = true;</p><p>  else if(len1 == len2)</p><p>

106、;<b>  {</b></p><p>  if(strcmp(str1, str2) == 0)</p><p><b>  {</b></p><p>  result[0] = ’0′;</p><p>  result[1] = ‘\0′;</p><p><

107、b>  return 1;</b></p><p>  }else if(strcmp(str1,str2) < 0)</p><p>  flag = true;</p><p><b>  }</b></p><p>  if(flag) //將str1和str2交換,確保str1指向的值是其

108、中較大者,最后通過flag確定要不要給前面加-號</p><p><b>  {</b></p><p>  char *temp = str1;</p><p>  str1 = str2;</p><p>  str2 = temp;</p><p>  len1 = strlen(str1)

109、;</p><p>  len2 = strlen(str2);</p><p><b>  }</b></p><p>  int n1, n2, another = 0; //another表示是否有借位</p><p><b>  int i, j;</b></p><p&

110、gt;  int cur_rs = 0;</p><p>  int curMinus;</p><p>  for(i = len1-1, j = len2-1; i>=0 && j>=0; i–,j–)</p><p><b>  {</b></p><p>  n1 = str1[i]

111、– ’0′;</p><p>  n2 = str2[j] – ’0′;</p><p>  if(n1 >= n2+another)</p><p><b>  {</b></p><p>  result[cur_rs++] = (n1-n2-another) +’0′;</p><p>

112、;  another = 0;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  result[cur_rs++] = (n1+10-n2-another) + ’0′;</p

113、><p>  another = 1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  while(i >= 0)</p><p><b>  {</b></p><p>  

114、n1 = str1[i--] – ’0′;</p><p>  if(another != 0)</p><p><b>  {</b></p><p>  n1 -= another;</p><p>  another = 0;</p><p><b>  }</b>&l

115、t;/p><p>  result[cur_rs++] = n1 + ’0′;</p><p><b>  }</b></p><p>  result[cur_rs] = ‘\0′;</p><p>  cur_rs = remove_zero(result, cur_rs);</p><p>&l

116、t;b>  if(flag)</b></p><p><b>  {</b></p><p>  result[cur_rs++] = ‘-’;</p><p>  result[cur_rs] = ‘\0′;</p><p><b>  }</b></p><

117、p>  reverse(result, cur_rs);</p><p>  return cur_rs;</p><p><b>  }</b></p><p>  void addi(const char *num1, const char *num2, char *result)</p><p><b&

118、gt;  {</b></p><p>  int len1 = strlen(num1);</p><p>  int len2 = strlen(num2);</p><p>  int rs_len;</p><p>  if(!len1 || !len2)</p><p><b>  ret

119、urn;</b></p><p>  char str1[100], str2[100];</p><p>  strncpy(str1, num1, len1);</p><p>  str1[len1] = ‘\0′;</p><p>  strncpy(str2, num2, len2);</p><p&

120、gt;  str2[len2] = ‘\0′;</p><p>  if(str1[0] == ‘-’ && str2[0] == ‘-’)</p><p><b>  {</b></p><p>  move(str1, len1);</p><p>  move(str2, len2);</p&

121、gt;<p>  rs_len = real_add(str1, str2, result, false);</p><p>  }else if(str1[0] == ‘-’)</p><p><b>  {</b></p><p>  move(str1, len1);</p><p>  rs_len

122、 = real_minus(str2, str1, result);</p><p><b>  }</b></p><p>  else if(str2[0] == ‘-’)</p><p><b>  {</b></p><p>  move(str2, len2);</p>&l

123、t;p>  rs_len = real_minus(str1, str2, result);</p><p><b>  }else</b></p><p>  rs_len = real_add(str1, str2, result, true);</p><p><b>  }</b></p>&l

124、t;p>  //int main(int argc, char *argv[])</p><p>  int main()</p><p><b>  {</b></p><p>  char num1[100],num2[100];</p><p>  printf(“請輸入兩個整型數(shù)據(jù):\n”);</p&

125、gt;<p>  scanf(“%s%s”,num1,num2);</p><p>  char result[100];</p><p>  memset(result, 0, 100);</p><p>  addi(num1,num2, result);</p><p>  printf(“%s\n”, result);&

126、lt;/p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  11.描述:10個學(xué)生考完期末考試評卷完成后,A老師需要劃出及格線,要求如下:(1) 及格線是10的倍數(shù);(2) 保證至少有60%的學(xué)生及格;(3) 如果所有的學(xué)生都高于60分,則及格線為60分<

127、/p><p>  輸入:輸入10個整數(shù),取值0~100</p><p>  輸出:輸出及格線,10的倍數(shù)</p><p>  #include<stdio.h></p><p>  void bubblesort(int arr[])</p><p><b>  {</b></p&g

128、t;<p>  int i,j,temp;</p><p>  for(i=0;i<10;i++)</p><p>  for(j=0;j<9-i&&arr[j]>arr[j+1];j++)</p><p><b>  {</b></p><p>  temp=arr[j]

129、;</p><p>  arr[j]=arr[j+1];</p><p>  arr[j+1]=temp;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int GetPassLine(int a[])</p>

130、<p><b>  {</b></p><p>  bubblesort(a);</p><p>  if(a[0]>=60)</p><p>  return 60;</p><p><b>  else</b></p><p>  return (((

131、int)a[4]/10)*10);</p><p><b>  }</b></p><p><b>  main()</b></p><p><b>  {</b></p><p>  int a[10]={0};</p><p>  int resul

132、t;</p><p>  printf(“請隨機(jī)輸入10個成績(0-100):\n”);</p><p>  scanf(“%d%d%d%d%d%d%d%d%d%d”,&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);</p>

133、<p>  printf(“\n”);</p><p>  result=GetPassLine(a);</p><p>  printf(“及格線為:%d\n”,result);</p><p><b>  return 1;</b></p><p><b>  }</b></p

134、><p>  12.描述:一條長廊里依次裝有n(1 ≤ n ≤ 65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由一個拉線開關(guān)控制。開始,電燈全部關(guān)著。</p><p>  有n個學(xué)生從長廊穿過。第一個學(xué)生把號碼凡是1的倍數(shù)的電燈的開關(guān)拉一下;接著第二個學(xué)生把號碼凡是2的倍數(shù)的電燈的開關(guān)拉一下;接著第三個學(xué)生把號碼凡是3的倍數(shù)的電燈的開關(guān)拉一下;如此繼續(xù)下去,最后第n個學(xué)生把

135、號碼凡是n的倍數(shù)的電燈的開關(guān)拉一下。n個學(xué)生按此規(guī)定走完后,長廊里電燈有幾盞亮著。注:電燈數(shù)和學(xué)生數(shù)一致。</p><p><b>  輸入:電燈的數(shù)量</b></p><p>  輸出:亮著的電燈數(shù)量</p><p><b>  樣例輸入:3</b></p><p><b>  樣例輸出

136、:1</b></p><p>  #include<stdio.h></p><p>  #define Max_Bubl_Num 65535</p><p>  int GetLightLampNum(int n)</p><p><b>  {</b></p><p>

137、  int BublNum[Max_Bubl_Num]={0}; //0表示燈滅,1表示燈亮</p><p>  unsigned int i,j;</p><p>  unsigned int count=0;</p><p>  for(i=1;i<=n;i++)</p><p>  for(j=i;j<=n&&

138、;j%i==0;j++)</p><p><b>  {</b></p><p>  BublNum[j-1]+=1;</p><p>  BublNum[j-1]=BublNum[j-1]%2;</p><p><b>  }</b></p><p>  for(int k

139、=0;k<n;k++)</p><p><b>  {</b></p><p>  if(BublNum[k]==1)</p><p><b>  count++;</b></p><p><b>  }</b></p><p>  return

140、count;</p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p>  int n,result;</p><p>  printf(“請輸入燈的數(shù)量(1-65535):\n”);</p

141、><p>  scanf(“%d”,&n);</p><p>  result=GetLightLampNum(n);</p><p>  printf(“最后亮燈的數(shù)量為:%d\n”,result);</p><p><b>  return 0;</b></p><p><b>

142、  }</b></p><p>  13.描述:已知2條地鐵線路,其中A為環(huán)線,B為東西向線路,線路都是雙向的。經(jīng)過的站點(diǎn)名分別如下,兩條線交叉的換乘點(diǎn)用T1、T2表示。編寫程序,任意輸入兩個站點(diǎn)名稱,輸出乘坐地鐵最少需要經(jīng)過的車站數(shù)量(含輸入的起點(diǎn)和終點(diǎn),換乘站點(diǎn)只計算一次)。地鐵線A(環(huán)線)經(jīng)過車站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2

143、 A14 A15 A16 A17 A18地鐵線B(直線)經(jīng)過車站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15</p><p>  輸入:輸入兩個不同的站名</p><p>  輸出:輸出最少經(jīng)過的站數(shù),含輸入的起點(diǎn)和終點(diǎn),換乘站點(diǎn)只計算一次</p><p>  輸入樣例:A1 A3</p&

144、gt;<p><b>  輸出樣例:3</b></p><p>  #include<stdio.h></p><p>  #include<string></p><p>  #include<queue></p><p>  #include<vector>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論