发发面试题。(不知道真的假的)

前言

这些题目全部在VS2013下面编译测试通过。

如有漏洞,本着交流学习的态度,希望能通知本人。基本每个独立代码段中都有两个main函数。上面是楼主本人写的,下面的不知道是哪个师兄写的。不过有些还是可以看的,虽然说是500强面试题。但这些前面的还不是太难。所以今天先贴出已经写过的。

扯呼~~

/*1. 编程序求 5X + 2Y + Z = 50 的所有非负整数解。*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int x, y, z;
 for (x = 0; x <= 10; x++)
 for (y = 0; y <= 25; y++)
 for (z = 0; z <= 50; z++)
 if (5 * x + 2 * y + z == 50)
  printf("x=%d Y=%d z=%d\n", x, y, z);
 system("pause");
}*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 for (int i = 0; i <= 50 / 5; i++)
 {
  / *1. 编程序求 5X + 2Y + Z = 50 的所有非负整数解。* /
  for (int j = 0; j <= (50 - 5 * i) / 2; j++)
  {
   int z = 50 - 5 * i - 2 * j;
   if (z >= 0)
   {
    printf("%4d%4d%4d\n", i, j, z);
   }
  }
 }
 system("pause");
}*/

/*
有一长度不大于40的字符串,已知其中包含两个字符“A”,
求处于这两个字符“A”中间的字符个数,并把这些字符依次打印出来。
*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 char buf[40] = "AsdngidhgsdabiowegAoiwjgg";
 char *p = buf;
 int count = 0;
 //bool flag = false;
 
/ *
 for (p = buf; p; p++)
 {
  if (*p == 'A' && flag == false)
   flag = true;
  if (flag == true)
   count++;
  if (*p == 'A' && flag == true)
   flag = false;
 }* /
 while (*p != 'A')
  p++;
 p++;
 while (*p++ != 'A')
  count++;

 printf("length:%d\n", count);
 
 system("pause");
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 int num = 0;
 char arr[41] = "AsdngidhgsdabiowegAoiwjgg";
 char *p = arr;
 while (*p != 'A')
  p++;
 p++;
 while (*p != 'A')
 {
  printf("%2c", *p);
  num++;
  p++;
 }
 printf("共有%d个字符", num);
 system("pause");
}
*/

/*
把25个字母A、B 、C、••• 、X、Y按如下要求打印出来:
从最中间的字母M开始打印,然后一左一右依次打印出其它字母,即M,L,N,K,O,...。
要求:初始化时按字母表顺序赋值。
*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 char buf[26] = "ABCDEFGHIJKLMNOPQRSTUVWXY";
 int i = 12;
 printf("%2c,", buf[i]);
 for (int j = 1; j <= 12; j++)
 {
  printf("%2c,%2c,", buf[i - j], buf[i + j]);
 }
 system("pause");
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 char arr[26] = "ABCDEFGHIJKLMNOPQRSTUVWXY";
 int n = 25 / 2;
 printf("%3c", arr[n]);
 for (int i = 1; i <= 12; i++)
 {
  printf("%3c", arr[n + i]);
  printf("%3c", arr[n - i]);
 }
 system("pause");
}
*/

/*
编一个程序,把一批非零整数中的偶数、奇数的平均值分别计算出来。用零作为终止标记。
*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int num[10] = { 10, 21, 44, 32, 51, 65, 91, 100, 23, 24 };
 int num_o = 0, o_count = 0;
 
 int num_j = 0, j_count = 0;
 for (int i = 0; i < 10; i++)
 if (num[i] % 2 == 0)
 {
  num_o += num[i];
  o_count++;
 }
 else
 {
  num_j += num[i];
  j_count++;
 }
 num_o /= o_count;
 num_j /= j_count;
 printf("奇数平均值为:%d\n偶数平均值为:%d\n0\n", num_j,num_o);
 system("pause");
}*/
/*
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void main()
{
 int a = -1;
 float OddSum = 0;
 int Oddnum = 0;
 float DSum = 0;
 int Dnum = 0;
 while (a != 0)
 {
  scanf("%d", &a);
  if (a == 0)
  {
   break;
  }
  else
  {
   if (a % 2)//奇数
   {
    Oddnum++;
    OddSum += a;
   }
   else//偶数
   {
    Dnum++;
    DSum += a;
   }
  }
 }
 printf("偶数的个数是%d偶数的平均数是%f\n", Dnum, DSum / Dnum);
 printf("奇数的个数是%d奇数的平均数是%f\n", Oddnum, OddSum / Oddnum);
 system("pause");
}*/
/*
#define  _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int num = 0;
 float num_o = 0;int o_count = 0;
 float  num_j = 0;int j_count = 0;
 while ((scanf("%d", &num), num) != 0)
 {
  if (num % 2 == 0)
  {
   num_o += num;
   o_count++;
  }
  else
  {
   num_j += num;
   j_count++;
  }
 }
 num_o /= o_count;
 num_j /= j_count;
 printf("奇数的个数:%2d奇数的平均数为:%f\n偶数的个数:%2d偶数的平均数为:%f", j_count, num_j, o_count, num_o);
 
 system("pause");
}*/
/*
 quite perfect
 Designed by sunny
*/

/*
某单位排队形,
开始排成3路纵队,末尾多出了2人。后改成5路纵队,末尾又多出了3人,最后改成7路纵队,正好没有余数。
编程序求出该单位至少有多少人。
*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int i = 0, j = 0, k =0;
 for (; i < 10000000;i++)
 for (; j < i;j++)
 for (; k < j;k++)
 if (3 * i + 2 == 5 * j + 3 && 5 * j + 3 == 7 * k)
 {
  printf("%ld\n", 7 * k);
 }
 system("pause");
}
*/

/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int i = 0;
 for (i = 5;; i++)
 {
  //if (i%3==2 && i%5==3 && i % 7 == 0)
  if ((i - 2) % 3 == 0 && (i-3)%5==0&&i%7==0)//
  {
   printf("%d\n", i);
   break;
  }
 }
 system("pause");
}*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 for (int i = 3; 1 == 1; i++)
 {
  if (i % 3 == 2 && i % 5 == 3 && i % 7 == 0)
  {
   printf("最小的人个数是%d", i);
   break;;
  }
 }
 system("pause");
}*/

/*
将一个6&times;6数组的第一行、第六行、主对角线和副对角线上的元素都存入1,
其余的元素都存入 - 1。请编程序实现。
要求:1)不许对数组初始化。
2)尽量少用循环。
*/
/*
#include"stdio.h"
#include "stdlib.h"
void main()
{
 int a[6][6];
 int i, j;
 for (i = 0; i < 6;i++)
 for (j = 0; j < 6; j++)
 {
  if (i == 0 || i == 5 || i == j || i + j == 5)
   a[i][j] = 1;
  else
   a[i][j] = -1;
  printf("%3d", a[i][j]);
  if (j == 5)
   printf("\n");
 }
 system("pause");
}
*/

/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 int arr[6][6] = { 0 };
 for (int i = 0; i < 6; i++)
 {
  for (int j = 0; j < 6; j++)
  {
   if (i == 0)
   {
    arr[i][j] = 1;
   }
   else if (i == 5)
   {
    arr[i][j] = 1;
   }
   else if (i == j)
   {
    arr[i][j] = 1;
   }
   else if ((i + j) == 5)
   {
    arr[i][j] = 1;
   }
   else
    arr[i][j] = -1;
  }
 }
 for (int i = 0; i < 6; i++)
 {
  for (int j = 0; j < 6; j++)
  {
   printf("%3d ", arr[i][j]);
  }
  printf("\n");
 }
 system("pause");
}
*/

/*
个位数是6,且能被3整除的五位数共有多少个。
*/
 
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int num;
 int count=0;
 for (num = 10000; num < 100000; num++)
 {
  if (num % 10 == 6 && num % 3 == 0)
   count++;
 }
 printf("%d", count);
 system("pause");
}*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 int num = 0;
 for (int i = 10006; i < 99999; i = i + 10)
 {
  if (i % 3 == 0)
  {
   num++;
  }
 }
 printf("共有%d个数字", num);
 system("pause");
}*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int i, count = 0;
 for (i = 10006; i < 100000; i += 10)
 {
  if (i % 3 == 0)
   count++;
 }
 printf("%d\n", count);
 system("pause");
}*/

/*求100至200之间能同时被6和8整除的数,把这些数打印出来,并且打印这些数的和。*/
/*
#include "stdio.h"
#include "stdlib.h"
void main()
{
 int i,j;
 int count = 0;
 for (i = 100,j = 0; i <= 200;i++,j++)
 if (i % 6 == 0 && i % 8 == 0)
 {
  printf("%4d", i);
  count += i;
  if (j % 10 == 0)
   printf("\n");
 }
 printf("count = %d\n", count);
 system("pause");
}*/
/*
#include <stdio.h>
#include <stdlib.h>
void main()
{
 int num = 0;
 for (int i = 100; i < 201; i = i + 1)
 {
  if (i % 24 == 0)
  {
   num += i;
   printf("%7d", i);
  }
 }
 printf("\n数字之和为%d", num);
 system("pause");
}*/

/*
雨淋湿了一道算术题,9个数字现在只能认清4个(第一个数字虽模糊不清但肯定不是1):
[m&times;(n3 + l)]^2 = 8 qw 9
请编程序找出那些看不清的数字。
*/
/*
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
void main()
{
 int i, j, k, l, m;
 for (i = 2; i < 10;i++)
 for (j = 0; j < 10;j++)
 for (k = 0; k < 10;k++)
 {
  int num = i*(10 * j+3 + k)*i*(10 * j +3+ k);
  if (num / 1000 == 8 && num % 10 == 9)
   printf("[%d*(%d3 + %d)]^2 = 8%d%d9", i, j, k, num / 100 % 10, num % 100 / 10);
 }
 system("pause");
}*/

/*
#include"stdio.h"
#include "stdlib.h"
#include "math.h"
double Getnum(double num)
{
 if (num <= -7 || num > 10)
  return exp(num) / 2 / num;
 else if (num >= 4 && num <= 10)
  return log(num + 7);
 else if (num == 0)
  return 0;
 else if(num>-7 &&num<4 &&num!=0)
  return num - abs(num);
}
void main()
{
 printf("x = -7 ===> %4f\n", Getnum(-7));
 printf("x = -1 ===> %4f\n", Getnum(-1));
 printf("x = 0 ===> %4f\n", Getnum(0));
 printf("x = 7 ===> %4f\n", Getnum(7));
 system("pause");
}*/
/*
x = -7 == = > -0.000065
x = -1 == = > -2.000000
x = 0 == = > 0.000000
x = 7 == = > 2.639057
*/
/************************************************************************/
/*10. 编程序计算下述函数在X=-7,-1,0,7时的值。  Exp  log absf
*/
/************************************************************************/
/*
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double GetIt(int num)
{
 if (num > 10 || num <= -7)
 {
  return exp((double)num) / (2 * num);
 }
 else if (4 <= num&&num <= 10)
 {
  return log((double)(num + 7));
 }
 else if (num == 0)
 {
  return 0;
 }
 else if (-7 < num&&num < 4 && num != 0)
 {
  return num*fabs((double)num);
 }
}
void main()
{
 printf("%-8lf\n", GetIt(-7));
 printf("%-8lf\n", GetIt(-1));
 printf("%-8lf\n", GetIt(0));
 printf("%-8lf\n", GetIt(7));
 system("pause");
}*/

/*
判断一个给定的5&times;5方阵是否以第3列为轴线对称 
*/
/*
#include "stdio.h"
#include "stdlib.h"
/ *int IsEqua(int (*a)[5],int num)
{
 for (int i = 0; i < num; i++)
 {
  for (int j = 0; j < 2;j++)
  if (a[i][j] != a[i][4 - j])
   return 0;
 }
 return 1;
}* /
int IsEqua(int(*a)[5], int num)
{
 for (int i = 0; i < num; i++)
 {
  for (int j = 0; j < 2; j++)
  {
   if (a[i][j] != a[i][4 - j])
   {
    return 0;
   }
  }
 }
 return 1;
}
void main()
{
 int a[5][5] = {
  { 1, 2, 5, 2, 1},
  { 5, 4, 6, 4, 5}, 
  {7, 8, 5, 8, 7 },
  {9, 1, 0, 1, 9 },
  {10, 11, 21, 11, 10}
 };
// int a[5][5];
 int trueorfalse = IsEqua(a, 5);//
 printf("%d", trueorfalse);
 system("pause");
}
*/
/*
#include <stdio.h>
#include <stdlib.h>
#define  N  5
/ *
功能:判断数组是否以某行对称
参数:a数组名 n数组行数 column指定某列
返回值:1: 对称 0:不对称
* /
int isSymmetry(int(*a)[N], int n, int column)
{
 for (int i = 0; i < n; i++)
 {
  for (int j = 0; j < column - 1; j++)
  {
   if (a[i][j] != a[i][n - 1 - j])
   {
    return 0;
   }
  }
 }
 return 1;
}
void main()
{
 int a[N][N];
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   a[i][j] = (j + 1) % 2;
  }
 }
 for (int i = 0; i < N; i++)
 {
  for (int j = 0; j < N; j++)
  {
   printf("%-3d", a[i][j]);
  }
  printf("\n");
 }
 isSymmetry(a, N, 3) == 1 ? printf("Yes!\n") : printf("No!\n");
 system("pause");
}*/

好吧,开源中国一次性只允许这么多代码。那再发个blog吧~~^_^

 

 

 

 

 

转载于:https://my.oschina.net/sunnyandjj/blog/287642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值