用筛选法求100以内的素数- //用筛选法求100以内的素数
- #include <stdio.h>
- int main_6__1(void)
- {
- int arr[101] = { 0 };
- for (int i = 0; i < 101; i++)//赋值
- arr[i] = i;
- arr[0] = arr[1] = -1;//挖掉
- for (int i = 0; i < 100; i++)
- {
- if (-1 == arr[i])//被挖掉的就不进行下面的操作
- continue;
- for (int j = i + 1; j < 101; j++)
- {
- if (-1 == arr[j])//被挖掉的就不进行下面的操作
- continue;
- if (0 == (arr[j] % arr[i]))//挖掉
- arr[j] = -1;
- }
- }
- for (int i = 0; i < 101; i++)
- {
- if (-1 != arr[i])
- printf("%d\t", arr[i]);
- }
- printf("\n");
- return 0;
- }
复制代码 运行效果:
用选择法对10个整数排序- //用选择法对10个整数排序
- #include <stdio.h>
- int main(void)
- {
- int arr[10], iMin, z;
- for (int i = 0; i < 10; i++)
- {
- printf("请输入arr[%d]的值\n", i);
- scanf("%d", &arr[i]);
- }
- printf("排序前:\n");
- for (int i = 0; i < 10; i++)
- printf("%d\t", arr[i]);
-
- for (int i = 0; i < 9; i++)
- {
- iMin = arr[i];
- z = i;
- for (int j = i + 1; j < 10; j++)
- {
- if (arr[j] < arr[i])
- {
- if (arr[j] < iMin)
- {
- iMin = arr[j];
- z = j;
- }
- }
- }
- arr[z] = arr[i];
- arr[i] = iMin;
- }
- printf("\n\n排序后:\n");
- for (int i = 0; i < 10; i++)
- printf("%d\t", arr[i]);
- return 0;
- }
复制代码 在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 整型矩阵对角线元素之和
- //求一个3 * 3 整型矩阵对角线元素之和
- #include <stdio.h>
- int main(void)
- {
- int arr[3][3] = { 0 };
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- printf("请输入arr[%d][%d]\n", i, j);
- scanf("%d", &arr[i][j]);
- }
- }
- printf("%d\n", arr[0][0] + arr[1][1] + arr[2][2] + arr[2][0] + arr[0][2]);
-
- return 0;
- }
复制代码 运行效果:
有一个已排序好的数组,要求输入一个数后,按原来的排序规律将它插入数组中- //有一个已排序好的数组,要求输入一个数后,按原来的排序规律将它插入数组中
- #include <stdio.h>
- int main(void)
- {
- int arr[10] = { 1, 4, 6, 9, 13, 16, 19, 28, 40, 100 }, temp;
- printf("old arr\n");
-
- for (int i = 0; i < 10; i++)
- printf("%d\t", arr[i]);
- printf("\n\n请输入需要插入的数\n");
- scanf("%d", &temp);
- printf("\nnew arr\n");
- char isInsert = 0;
- for (int i = 0; i < 10; i++)
- {
- if (isInsert)
- {
- printf("%d\t", arr[i]);
- continue;
- }
- if (temp > arr[i])
- {
- printf("%d\t", arr[i]);
- continue;
- }
- printf("%d\t", temp);
- i--;
- isInsert = 1;
- }
- printf("\n");
- return 0;
- }
复制代码 运行效果:
将一个数组的值按逆序重新存放。比方:8, 6, 5, 4, 1 -> 1, 4, 5, 6, 8- //将一个数组的值按逆序重新存放。例如:8, 6, 5, 4, 1 -> 1, 4, 5, 6, 8
- #include <stdio.h>
- int main(void)
- {
- int arr[] = { 8, 6, 5, 4, 1 };
- printf("arr\n");
- for (int i = 0; i < 5; i++)
- printf("%d\t", arr[i]);
-
- printf("\n\nswap arr\n");
- for (int i = 4; i >= 0; i--)
- printf("%d\t", arr[i]);
- printf("\n");
- return 0;
- }
复制代码 运行效果:
- #include <stdio.h>
- int main(void)
- {
- int arr[10][10] = { 0 };
- for (int i = 0; i < 10; i++)
- {
- arr[i][0] = 1;
- arr[i][i] = 1;
- }
- for (int i = 1; i < 9; i++)
- {
- for (int j = 1; j < i; j++)
- arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
- }
- for (int i = 0; i < 9; i++)
- {
- for (int j = 0; j < i + 1; j++)
- printf("%-3d\t", arr[i][j]);
- printf("\n");
- }
- return 0;
- }
复制代码 运行效果:

找出一个二维数组中的鞍点。即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。- //找出一个二维数组中的鞍点。即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
- #include <stdio.h>
- int main(void)
- {
- int arr[4][5] = { 0 };
- for (int i = 0; i < 4; i++)//输入数组
- {
- for (int j = 0; j < 5; j++)
- {
- printf("请输入arr[%d][%d]的值\n", i, j);
- scanf("%d", &arr[i][j]);
- }
- }
- printf("arr:\n");
- for (int i = 0; i < 4; i++)//打印数组
- {
- for (int j = 0; j < 5; j++)
- printf("%d\t", arr[i][j]);
- printf("\n");
- }
- char isSaddlePoint = 0;//默认无鞍点
- for (int i = 0; i < 4; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- int iCheak = arr[i][j];//一个一个检查
- char isCol = 1;//默认列符合条件
- for (int z = 0; z < 4; z++)//检查列
- {
- if (iCheak > arr[z][j])
- {
- isCol = 0;//不符合退出循环
- break;
- }
- }
- if (!isCol)//列不符合条件,跳出检查继续检查下一个
- continue;
- char isRow = 1;//默认行符合条件
- for (int z = 0; z < 5; z++)
- {
- if (iCheak < arr[i][z])
- {
- isRow = 0;//不符合退出循环
- break;
- }
- }
- if (!isRow)//行不符合条件,跳出检查继续检查下一个
- continue;
- //符合条件,打印鞍点,并使鞍点数量+1
- isSaddlePoint++;
- printf("Saddle Point:%d\n", iCheak);
- }
- }
- if (!isSaddlePoint)//无鞍点,提示
- printf("not exist\n");
- else
- printf("\n");
- return 0;
- }
复制代码 运行效果:
有鞍点: 无鞍点:
有15个数按由小到大顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”- //有15个数按由小到大顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
- //如果该数不在数组中,则输出“无此数”
- #include <stdio.h>
- int main(void)
- {
- int arr[15] = { 0 };
- for (int i = 0; i < 15; i++)//输入数组
- {
- printf("请输入arr[%d]的值\n", i);
- scanf("%d", &arr[i]);
- }
- printf("\n\narr:\n");
-
- for (int i = 0; i < 15; i++)//打印数组
- printf("%d\t", arr[i]);
- int iTemp;
- printf("请输入待检查的值\n");//输出检查数
- scanf("%d", &iTemp);
- int iMinIndex = 0, iMaxIndex = 14;
- while (iMinIndex < iMaxIndex)
- {
- int iIndex = (iMinIndex + iMaxIndex) / 2;//中间数
- if (arr[iIndex] == iTemp)//相等输出程序结束
- {
- printf("%d\n", iIndex);
- return 0;
- }
- if (arr[iIndex] > iTemp)//小,找左边
- iMaxIndex = iIndex - 1;
- else//大,找右边
- iMinIndex = iIndex + 1;
- }
-
- printf("无此数\n");
- return 0;
- }
复制代码 运行效果:

有一篇文章,共3行文字,每行有80个字符。要求分别统计出此中英文大写字母、小写字母、数字、空格以及其他字符的个数- //有一篇文章,共3行文字,每行有80个字符。
- //要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数
- #include <stdio.h>
- int main(void)
- {
- char arr[3][80] = { 0 };
- for (int i = 0; i < 3; i++)
- {
- printf("请输入第%d行内容\n", i + 1);
- gets(arr[i]);
- }
- int iUpper = 0, iLow = 0, iDig = 0, iSpace = 0, iOther = 0;
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 80; j++)
- {
- char ch = arr[i][j];
- if ('\0' == ch)
- break;
- if ((ch >= 'A') && (ch <= 'Z'))
- iUpper++;
- else if ((ch >= 'a') && (ch <= 'z'))
- iLow++;
- else if ((ch >= '0') && (ch <= '9'))
- iDig++;
- else if (' ' == ch)
- iSpace++;
- else
- iOther++;
- }
- }
- printf("\n\narr\n");
- for (int i = 0; i < 3; i++)
- puts(arr[i]);
- printf("\n");
- printf("大写字母:%d\n小写字母:%d\n数字:%d\n空格:%d\n其他:%d\n",
- iUpper, iLow, iDig, iSpace, iOther);
- return 0;
- }
复制代码 运行效果:
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符稳固。要求编步伐将暗码译回原文,并输出暗码和原文- #include <stdio.h>
- int main(void)
- {
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 9; j++)
- {
- if (j < i)
- printf(" \t");
- else if (j > i + 4)
- printf(" \t");
- else
- printf("*\t");
- }
- printf("\n");
- }
- return 0;
- }
复制代码 运行效果:
编写一个步伐,将字符数组 s2 中的全部字符复制到字符数组 s1 中,不消 strcpy 函数。复制时,'\0'也要复制过去。'\0'后面的字符不复制。- #include <stdio.h>
- int main(void)
- {
- char str[1024] = { 0 }, strNew[1024] = { 0 };
- printf("请输入密码\n");
- gets_s(str);//vs在2015之后不可用gets,但是可以用gets_s代替
- for (int i = 0; i < sizeof(str); i++)
- {
- char ch = str[i];
- if ('0' == ch)
- break;
- if ((ch >= 'A') && (ch <= 'Z'))
- ch = 26 - (ch - 'A' + 1) + 1 + 'A' - 1;
- else if ((ch >= 'a') && (ch <= 'z'))
- ch = 26 - (ch - 'a' + 1) + 1 + 'a' - 1;
- strNew[i] = ch;
- }
- printf("\n\n密码:\n");
- puts(str);
- printf("原文:\n");
- puts(strNew);
- return 0;
- }
复制代码 运行效果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |