定义一个int类型的二维数组,里面只能存储正整数,求第二大值,输出最大值以及行号和列号
#include<stdio.h>
int main()
{
int nums[4][3] = { {1,2,3},{4,5,6},{7,8,9},{10,11,12} };
int i, j;
int max, sec, max_index[2], sec_index[2];
int row = sizeof(nums) / sizeof(nums[0]);
int col = sizeof(nums[0]) / sizeof(int);
for (i = 0;i < row;i++)
{
for (j = 0;j < col;j++)
{
if (nums[max_index[0]][max_index[1]] < nums[i][j])
{
max = nums[i][j];
sec = nums[max_index[0]][max_index[1]];
max_index[0] = i;
max_index[1] = j;
sec_index[0] = max_index[0];
sec_index[1] = max_index[1];
}
}
}
printf("第二大为:%d 在%d行%d列\n", sec, sec_index[0], sec_index[1]);
return 0;
}
简单的for循环,通过两个变量同时存储第一第二大的数。其实可以通过排序来解决。
从终端中输入一串字符以'\n'结尾,计算小写字符的个数,分别有多少个。
例如 aaAcF123---->结果 a有2个 c有1个
#include<stdio.h>
int main()
{
char str[128];
int code[26] = { 0 };
printf("请输入一串字符:");
gets(str);
int i, sum = 0;
for (i = 0;i < strlen(str);i++)
{
if (str[i] >= 'a' && str[i] <= 'z')
{
code[(int)str[i] - 97] += 1;
sum++;
}
}
printf("小写字母共有%d个\n", sum);
char msg;
for (i = 0;i < 26;i++)
{
if (code[i] != 0)
{
char c = i + 97;
printf("%c有%d个\n", c, code[i]);
}
}
return 0;
}
比较巧妙的使用了ASCII码的特性,通过一个int数组同时存储了字母和其数量。
终端输入一个位置,要求从指定位置插入
例子:n=0-->abc12345 n=1--> 1abc2345 n=3-->123abc45
1)用辅助数组
2)只用一个数组实现
#include <stdio.h>
int main()
{
char dest[30] = "01234";
char aid[32] = "abcde";
int n, i = 0;
printf("目标位置在第几位:");
scanf("%d", &n);
while (aid[i]) {
dest[n + strlen(aid)] = dest[n];
dest[n++] = aid[i++];
}
printf("新字符串是:%s\n", dest);
return 0;
}
比较简单,没啥好说明的。
终端输入数组,实现冒泡排序和选择排序的代码。
#include<stdio.h>
int main(int argc, const char* argv[])
{
int m[64] = { 0 };
int n[64] = { 0 };
int i = 0, j = 0, s = 0, t, s1, min;
printf("输入数组(以空格结尾):");
while (1)
{
scanf("%d", &m[i]);
n[i] = m[i];
i++;
s++;
if (getchar() == '\n')
{
break;
}
}
//冒排
for (i = 0;i < s - 1;i++)
{
for (j = 0;j < s - 1 - i;j++)
{
if (m[j] > m[j + 1])
{
t = m[j];
m[j] = m[j + 1];
m[j + 1] = t;
}
}
}
printf("冒排排序后的数组为:");
for (i = 0;i < s;i++)
{
printf("%d ", m[i]);
}
printf("\n");
//选排
for (i = 1;i < s;i++) {
min = i - 1;
for (j = i;j < s;j++) {
if (n[min] > n[j]) {
min = j;
}
}
t = n[i - 1];
n[i - 1] = n[min];
n[min] = t;
}
printf("选排排序后的数组为:");
for (i = 0;i < s;i++) {
printf("%d ", n[i]);
}
return 0;
}
比较经典的冒排和选排。