目录
1.杨辉三角
2.找出一个二维矩阵的鞍点
3.折半查找法
4.统计文章字符
5.输出图形
题目分析:1.每一行的第一个和最后一个元素都为1
2.其它元素为其正上方的元素及正上方左边的元素之和
#include
int main() {
int n;
int a[100][100];
scanf("%d", &n);//用户输入要打印几行
for (int i = 0; i < n; i++) { //赋1
a[i][0] = 1;
a[i][i] = 1;
}
for (int i = 2; i < n; i++) //其它元素的值
for (int j = 1; j < i; j++)
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
for (int i = 0; i < n; i++) { //输出
for (int j = 0; j <= i; j++) {
printf("%d ", a[i][j]);
}
printf("\n"); //换行
}
return 0;
}
题目分析:鞍点即该元素在改行最大,在该列最小,也可能没有
#include
int main() {
int row=0, line=0, max, min, i, j, k, m, n;
int a[10][10];
//输入矩阵
scanf("%d %d", &m, &n);
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
for (i = 0; i < m; i++) {
//找到该行最大的元素,并记录该元素的列
max = a[i][0];
for ( j = 0; j < n; j++) {
if (max < a[i][j]) {
max = a[i][j];
row = j;
}
}
//寻找该列的最小元素,并记录行
min = a[0][row];
for ( k = 0; k < m; k++) {
if (min > a[k][row]) {
min = a[k][row];
line = k;
}
}
//如果两个元素相等,则为鞍点
if (min == max) {
printf("a[%d][%d]=%d", line, row, max);
break;
}
if(min!=max) printf("该矩阵没有鞍点");
}
return 0;
}
题目:有15个数按从小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在此数组中,则输出“无此数”
题目分析:先明确一点什么是二分法
1.先给定一个从小到大排序的数组
2.如果该数等于中间元素,则输出
3.如果该数大于中间元素,则left=mid+1
4.如果该数小于中间元素,则right=mid-1
#include
int main() {
int a[15] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
int left, right, num, index, length, mid, flag;
length = sizeof(a) / sizeof(a[0]);//长度
flag = 0;//标志
left = 0;//左界
right = length - 1;//右界
printf("please enter num:");
scanf("%d", &num);//数
while (left <= right) {
mid = (left + right) / 2;
if (a[mid] == num) {
index = mid + 1;
flag = 1;
break;
}
else if (num > a[mid]) left = mid + 1;
else right = mid - 1;
}
if (flag) printf("该元素已经找到%d,下标是%d", num, index);
else printf("无此数");
return 0;
}
题目:有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其它字符的个数
题目分析:利用gets函数向字符数组输入一个字符串
#include
int main() {
char s[3][80];
int De, Xe, num, space, other;
De = Xe = num = space = other = 0;
for (int i = 0; i < 3; i++)
gets(s[i]);
for(int i=0;i<3;i++)
for (int j = 0; j < 80 && s[i][j] != '\0'; j++) {
if (s[i][j] > 'a' && s[i][j] < 'z') Xe++;
if (s[i][j] > 'A' && s[i][j] < 'Z') De++;
if (s[i][j] > '0' && s[i][j] < '9') num++;
if (s[i][j] == ' ') space++;
else other++;
}
printf("大写字母%d 小写字母%d 数字%d 空格%d 其它字符%d", De, Xe, num, space, other);
return 0;
}
#include
int main() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= i; j++) printf(" ");
for (int k = 0; k < 5; k++) printf("*");
printf("\n");
}
return 0;
}