首页 | 联系我们 | 叶凡网络官方QQ群:323842844
游客,欢迎您! 请登录 免费注册 忘记密码
您所在的位置:首页 > 开发语言 > ASP开发 > 正文

面试率高的几道C语言题目

作者:cocomyyz 来源: 日期:2013-9-12 0:24:41 人气:0 加入收藏 评论:0 标签:cstudy

1、将一整数逆序后放入一数组中(要求递归实现)
#include<stdio.h>
void convert(int *result, int n)
{
    if(n>=10)
        convert(result+1, n/10);
    *result = n%10;    
}
int main(int argc, char* argv[])
{
    int n = 123456789, result[20];
    convert(result, n);
    printf("%d:", n);
    for(int i=0; i<9; i++)
        printf("%d", result[i]);
    return getchar();
}2、求高于平均分的学生学号及成绩(学号和成绩人工输入)
double find(int total, int n)
{
    int number, score, average;
    scanf("%d", &number);
    if(number != 0){
        scanf("%d", &score);
        average = find(total+score, n+1);
        if(score >= average)
             printf("%d:%d\n", number, score);
        return average;
    }else{
        printf("Average=%d\n", total/n);
        return total/n;
    }
}
int main(int argc, char* argv[])
{
    find(0, 0);
    return getchar();
}
3、递归实现回文判断(如:abcdedbca就是回文)
int find(char *str, int n)
{
    if(n<=1) return 1;
    else if(str[0]==str[n-1])   return find(str+1, n-2);
    else     return 0;
}

int main(int argc, char* argv[])
{
    char *str = "abcdedcba";
    printf("%s: %s\n", str, find(str,
strlen(str)) ? "Yes" : "No");
    return getchar();
}4、分解成质因数(如435234=251*17*17*3*2)
void prim(int m, int n)
{
    if(m>n){
        while(m%n != 0) n++;
        m /= n;
        prim(m, n);
        printf("%d*", n);
    }
}
int main(int argc, char* argv[])
{
    int n = 435234;
    printf("%d=", n);
    prim(n, 2);
    return getchar();
}5、大整数数相乘的问题。
void Multiple(char A[], char B[], char C[])
{
   int TMP, In=0, LenA=-1, LenB=-1;
   while(A[++LenA] != '\0');
   while(B[++LenB] != '\0');
   int Index, Start = LenA + LenB - 1;
   for(int i=LenB-1; i>=0; i--)
   {
       Index = Start--;
       if(B[i] != '0'){
           for(int In=0, j=LenA-1; j>=0; j--)
           {
               TMP = (C[Index]-'0') + (A[j]-'0') * (B[i] - '0') + In;
               C[Index--] = TMP % 10 + '0';
               In = TMP / 10;
           }
           C[Index] = In + '0';
       }
   }
}
int main(int argc, char* argv[])
{
   char A[] = "21839244444444448880088888889";
   char B[] = "38888888888899999999999999988";
char C[sizeof(A) + sizeof(B) - 1];

   for(int k=0; k<sizeof(C); k++)
       C[k] = '0';
   C[sizeof(C)-1] = '\0';

   Multiple(A, B, C);
   for(int i=0; C[i] != '\0'; i++)
       printf("%c", C[i]);
   return getchar();
}

本文网址:http://www.mingyangnet.com/html/asp/223.html
读完这篇文章后,您心情如何?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
更多>>网友评论
发表评论
编辑推荐
  • 没有资料