利用数组处置惩罚批量数据之习题

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

用筛选法求100以内的素数
  1. //用筛选法求100以内的素数
  2. #include <stdio.h>
  3. int main_6__1(void)
  4. {
  5.         int arr[101] = { 0 };
  6.         for (int i = 0; i < 101; i++)//赋值
  7.                 arr[i] = i;
  8.         arr[0] = arr[1] = -1;//挖掉
  9.         for (int i = 0; i < 100; i++)
  10.         {
  11.                 if (-1 == arr[i])//被挖掉的就不进行下面的操作
  12.                         continue;
  13.                 for (int j = i + 1; j < 101; j++)
  14.                 {
  15.                         if (-1 == arr[j])//被挖掉的就不进行下面的操作
  16.                                 continue;
  17.                         if (0 == (arr[j] % arr[i]))//挖掉
  18.                                 arr[j] = -1;
  19.                 }
  20.         }
  21.         for (int i = 0; i < 101; i++)
  22.         {
  23.                 if (-1 != arr[i])
  24.                         printf("%d\t", arr[i]);
  25.         }
  26.         printf("\n");
  27.         return 0;
  28. }
复制代码
运行效果:

用选择法对10个整数排序
  1. //用选择法对10个整数排序
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int arr[10], iMin, z;
  6.         for (int i = 0; i < 10; i++)
  7.         {
  8.                 printf("请输入arr[%d]的值\n", i);
  9.                 scanf("%d", &arr[i]);
  10.         }
  11.         printf("排序前:\n");
  12.         for (int i = 0; i < 10; i++)
  13.                 printf("%d\t", arr[i]);
  14.        
  15.         for (int i = 0; i < 9; i++)
  16.         {
  17.                 iMin = arr[i];
  18.                 z = i;
  19.                 for (int j = i + 1; j < 10; j++)
  20.                 {
  21.                         if (arr[j] < arr[i])
  22.                         {
  23.                                 if (arr[j] < iMin)
  24.                                 {
  25.                                         iMin = arr[j];
  26.                                         z = j;
  27.                                 }
  28.                         }
  29.                 }
  30.                 arr[z] = arr[i];
  31.                 arr[i] = iMin;
  32.         }
  33.         printf("\n\n排序后:\n");
  34.         for (int i = 0; i < 10; i++)
  35.                 printf("%d\t", arr[i]);
  36.         return 0;
  37. }
复制代码
在VS编译器内会报C4996错误,办理见下文:(下同)
C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)
运行效果:
 
求一个3 * 3 整型矩阵对角线元素之和
 
  1. //求一个3 * 3 整型矩阵对角线元素之和
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int arr[3][3] = { 0 };
  6.         for (int i = 0; i < 3; i++)
  7.         {
  8.                 for (int j = 0; j < 3; j++)
  9.                 {
  10.                         printf("请输入arr[%d][%d]\n", i, j);
  11.                         scanf("%d", &arr[i][j]);
  12.                 }
  13.         }
  14.         printf("%d\n", arr[0][0] + arr[1][1] + arr[2][2] + arr[2][0] + arr[0][2]);
  15.        
  16.         return 0;
  17. }
复制代码
运行效果:

有一个已排序好的数组,要求输入一个数后,按原来的排序规律将它插入数组中
  1. //有一个已排序好的数组,要求输入一个数后,按原来的排序规律将它插入数组中
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int arr[10] = { 1, 4, 6, 9, 13, 16, 19, 28, 40, 100 }, temp;
  6.         printf("old arr\n");
  7.        
  8.         for (int i = 0; i < 10; i++)
  9.                 printf("%d\t", arr[i]);
  10.         printf("\n\n请输入需要插入的数\n");
  11.         scanf("%d", &temp);
  12.         printf("\nnew arr\n");
  13.         char isInsert = 0;
  14.         for (int i = 0; i < 10; i++)
  15.         {
  16.                 if (isInsert)
  17.                 {
  18.                         printf("%d\t", arr[i]);
  19.                         continue;
  20.                 }
  21.                 if (temp > arr[i])
  22.                 {
  23.                         printf("%d\t", arr[i]);
  24.                         continue;
  25.                 }
  26.                 printf("%d\t", temp);
  27.                 i--;
  28.                 isInsert = 1;
  29.         }
  30.         printf("\n");
  31.         return 0;
  32. }
复制代码
运行效果:

将一个数组的值按逆序重新存放。比方:8, 6, 5, 4, 1 -> 1, 4, 5, 6, 8
  1. //将一个数组的值按逆序重新存放。例如:8, 6, 5, 4, 1 -> 1, 4, 5, 6, 8
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int arr[] = { 8, 6, 5, 4, 1 };
  6.         printf("arr\n");
  7.         for (int i = 0; i < 5; i++)
  8.                 printf("%d\t", arr[i]);
  9.        
  10.         printf("\n\nswap arr\n");
  11.         for (int i = 4; i >= 0; i--)
  12.                 printf("%d\t", arr[i]);
  13.         printf("\n");
  14.         return 0;
  15. }
复制代码
运行效果:

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         int arr[10][10] = { 0 };
  5.         for (int i = 0; i < 10; i++)
  6.         {
  7.                 arr[i][0] = 1;
  8.                 arr[i][i] = 1;
  9.         }
  10.         for (int i = 1; i < 9; i++)
  11.         {
  12.                 for (int j = 1; j < i; j++)
  13.                         arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
  14.         }
  15.         for (int i = 0; i < 9; i++)
  16.         {
  17.                 for (int j = 0; j < i + 1; j++)
  18.                         printf("%-3d\t", arr[i][j]);
  19.                 printf("\n");
  20.         }
  21.         return 0;
  22. }
复制代码
运行效果:

找出一个二维数组中的鞍点。即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
  1. //找出一个二维数组中的鞍点。即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int arr[4][5] = { 0 };
  6.         for (int i = 0; i < 4; i++)//输入数组
  7.         {
  8.                 for (int j = 0; j < 5; j++)
  9.                 {
  10.                         printf("请输入arr[%d][%d]的值\n", i, j);
  11.                         scanf("%d", &arr[i][j]);
  12.                 }
  13.         }
  14.         printf("arr:\n");
  15.         for (int i = 0; i < 4; i++)//打印数组
  16.         {
  17.                 for (int j = 0; j < 5; j++)
  18.                         printf("%d\t", arr[i][j]);
  19.                 printf("\n");
  20.         }
  21.         char isSaddlePoint = 0;//默认无鞍点
  22.         for (int i = 0; i < 4; i++)
  23.         {
  24.                 for (int j = 0; j < 5; j++)
  25.                 {
  26.                         int iCheak = arr[i][j];//一个一个检查
  27.                         char isCol = 1;//默认列符合条件
  28.                         for (int z = 0; z < 4; z++)//检查列
  29.                         {
  30.                                 if (iCheak > arr[z][j])
  31.                                 {
  32.                                         isCol = 0;//不符合退出循环
  33.                                         break;
  34.                                 }
  35.                         }
  36.                         if (!isCol)//列不符合条件,跳出检查继续检查下一个
  37.                                 continue;
  38.                         char isRow = 1;//默认行符合条件
  39.                         for (int z = 0; z < 5; z++)
  40.                         {
  41.                                 if (iCheak < arr[i][z])
  42.                                 {
  43.                                         isRow = 0;//不符合退出循环
  44.                                         break;
  45.                                 }
  46.                         }
  47.                         if (!isRow)//行不符合条件,跳出检查继续检查下一个
  48.                                 continue;
  49.                         //符合条件,打印鞍点,并使鞍点数量+1
  50.                         isSaddlePoint++;
  51.                         printf("Saddle Point:%d\n", iCheak);
  52.                 }
  53.         }
  54.         if (!isSaddlePoint)//无鞍点,提示
  55.                 printf("not exist\n");
  56.         else
  57.                 printf("\n");
  58.         return 0;
  59. }
复制代码
运行效果:
有鞍点:
  无鞍点:

有15个数按由小到大顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”
  1. //有15个数按由小到大顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
  2. //如果该数不在数组中,则输出“无此数”
  3. #include <stdio.h>
  4. int main(void)
  5. {
  6.         int arr[15] = { 0 };
  7.         for (int i = 0; i < 15; i++)//输入数组
  8.         {
  9.                 printf("请输入arr[%d]的值\n", i);
  10.                 scanf("%d", &arr[i]);
  11.         }
  12.         printf("\n\narr:\n");
  13.        
  14.         for (int i = 0; i < 15; i++)//打印数组
  15.                 printf("%d\t", arr[i]);
  16.         int iTemp;
  17.         printf("请输入待检查的值\n");//输出检查数
  18.         scanf("%d", &iTemp);
  19.         int iMinIndex = 0, iMaxIndex = 14;
  20.         while (iMinIndex < iMaxIndex)
  21.         {
  22.                 int iIndex = (iMinIndex + iMaxIndex) / 2;//中间数
  23.                 if (arr[iIndex] == iTemp)//相等输出程序结束
  24.                 {
  25.                         printf("%d\n", iIndex);
  26.                         return 0;
  27.                 }
  28.                 if (arr[iIndex] > iTemp)//小,找左边
  29.                         iMaxIndex = iIndex - 1;
  30.                 else//大,找右边
  31.                         iMinIndex = iIndex + 1;
  32.         }
  33.        
  34.         printf("无此数\n");
  35.         return 0;
  36. }
复制代码
运行效果:

有一篇文章,共3行文字,每行有80个字符。要求分别统计出此中英文大写字母、小写字母、数字、空格以及其他字符的个数
  1. //有一篇文章,共3行文字,每行有80个字符。
  2. //要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数
  3. #include <stdio.h>
  4. int main(void)
  5. {
  6.         char arr[3][80] = { 0 };
  7.         for (int i = 0; i < 3; i++)
  8.         {
  9.                 printf("请输入第%d行内容\n", i + 1);
  10.                 gets(arr[i]);
  11.         }
  12.         int iUpper = 0, iLow = 0, iDig = 0, iSpace = 0, iOther = 0;
  13.         for (int i = 0; i < 3; i++)
  14.         {
  15.                 for (int j = 0; j < 80; j++)
  16.                 {
  17.                         char ch = arr[i][j];
  18.                         if ('\0' == ch)
  19.                                 break;
  20.                         if ((ch >= 'A') && (ch <= 'Z'))
  21.                                 iUpper++;
  22.                         else if ((ch >= 'a') && (ch <= 'z'))
  23.                                 iLow++;
  24.                         else if ((ch >= '0') && (ch <= '9'))
  25.                                 iDig++;
  26.                         else if (' ' == ch)
  27.                                 iSpace++;
  28.                         else
  29.                                 iOther++;
  30.                 }
  31.         }
  32.         printf("\n\narr\n");
  33.         for (int i = 0; i < 3; i++)
  34.                 puts(arr[i]);
  35.         printf("\n");
  36.         printf("大写字母:%d\n小写字母:%d\n数字:%d\n空格:%d\n其他:%d\n",
  37.                 iUpper, iLow, iDig, iSpace, iOther);
  38.         return 0;
  39. }
复制代码
运行效果:


即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符稳固。要求编步伐将暗码译回原文,并输出暗码和原文
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         for (int i = 0; i < 5; i++)
  5.         {
  6.                 for (int j = 0; j < 9; j++)
  7.                 {
  8.                         if (j < i)
  9.                                 printf(" \t");
  10.                         else if (j > i + 4)
  11.                                 printf(" \t");
  12.                         else
  13.                                 printf("*\t");
  14.                 }
  15.                 printf("\n");
  16.         }
  17.         return 0;
  18. }
复制代码
运行效果:

编写一个步伐,将字符数组 s2 中的全部字符复制到字符数组 s1 中,不消 strcpy 函数。复制时,'\0'也要复制过去。'\0'后面的字符不复制。
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         char str[1024] = { 0 }, strNew[1024] = { 0 };
  5.         printf("请输入密码\n");
  6.         gets_s(str);//vs在2015之后不可用gets,但是可以用gets_s代替
  7.         for (int i = 0; i < sizeof(str); i++)
  8.         {
  9.                 char ch = str[i];
  10.                 if ('0' == ch)
  11.                         break;
  12.                 if ((ch >= 'A') && (ch <= 'Z'))
  13.                         ch = 26 - (ch - 'A' + 1) + 1 + 'A' - 1;
  14.                 else if ((ch >= 'a') && (ch <= 'z'))
  15.                         ch = 26 - (ch - 'a' + 1) + 1 + 'a' - 1;
  16.                 strNew[i] = ch;
  17.         }
  18.         printf("\n\n密码:\n");
  19.         puts(str);
  20.         printf("原文:\n");
  21.         puts(strNew);
  22.         return 0;
  23. }
复制代码
运行效果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表