C语言100题
考研初试C语言复习 时间:2021.9.28
前言
。
提示:以下是本篇文章正文内容,下面案例可供参考
第一题、
1.题目描述
100以内的质数
2.代码
#include <stdio.h>
#include <math.h>
int main() {
int i, j, k;
for (i = 2; i < 100; i++) {
j = (int)sqrt(i);
for (k = 2; k <= j; k++) {
if (i % k == 0) break;
}
if (k > j) {
printf("%d\n", i);
}
}
return 0;
}
题目思考:经典找质数 注意平方根和#include <math.h>
第二题、
1.题目描述
10个数进行排序
2.代码
#include <stdio.h>
#define N 10
//小到大
void maopao(int a[N]) {//冒泡排序
int temp;//缓存用
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (a[j] > a[i]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
int partition(int a[N], int low, int high) {
int pivot = a[low];//设置枢轴
while (low < high) {
while (low < high && a[high]>=pivot) --high;
a[low] = a[high];
while (low < high && a[low] <= pivot) ++low;
a[high] = a[low];//同上,不断收紧
}
a[low] = pivot;
return low;
}
void quicksort(int a[N],int low,int high) {//快速排序
if (low < high) {
int mid = partition(a, low, high);
quicksort(a, low, mid - 1);
quicksort(a, mid + 1, high);
}
}
int max(int a[N]) {//找最大
int max;
for (int i = 0; i < N; ++i) {
if (a[i + 1] > a[i]) max = a[i + 1];
}
return max;
}
int min(int a[N]) {//找最小
int min;
for (int i = 0; i < N; ++i) {
if (a[i + 1] < a[i]) min = a[i + 1];
}
return min;
}
int main() {
int a[N];
printf("请输入10个数字\n");
for (int i = 0; i < N; ++ i) {
scanf_s("%d ", &a[i]);
}
quicksort(a, 0, 9);
printf("\n");
for (int i = 0; i < N; ++i) {
printf("%d ", a[i]);
}
return 0;
}
题目思考:一个快排和冒泡
第三题、
1.题目描述
3*3的矩阵对角线之和
2.代码
#include <stdio.h>
#define N 3
int main(){
int i, j, a[N][N], sum = 0;
printf("请输入矩阵\n");
for (i = 0; i < N; ++i) {
for (j = 0; j < N; j++) {
scanf_s("%d", &a[i][j]);
}
for (i = 0; i < N; ++i){
sum += a[i][i];
}
}
printf("对角线和为:%d\n ",sum);
return 0;
题目思考:多维数组的简单应用
第四题、
1.题目描述
2.代码
#include <stdio.h>
int main() {
int a[11] = { 1,4,6,9,13,16,19,28,40,100 };
int number, end, i, j;
printf("原始数组是:\n");
for (i = 0; i < 10; i++)
printf("%4d", a[i]);
printf("\n插入一个新的数字: ");
scanf_s("%d", &number);
end = a[9];
if (number > end) a[10] = number;
else if(a[0]>number){
for (i = 10; i > 0; i--) {
a[i] = a[i - 1];
}
a[0] = number;
}
else {
for (i = 0; i <= 10; ++i) {
if (number > a[i] && number < a[i + 1]) {
for (j = 10; j > i; j--) {
a[j] = a[j - 1];
}
a[i+1] = number;
break;
}
}
}
for (j = 0; j < 11; j++) {
printf("%d ", a[j]);
}
return 0;
}
题目思考:3种情况进行判定
第五题、
1.题目描述
数组逆序输出
2.代码
#include<stdio.h>
#define N 10
int main()
{
int a[N]={0,1,2,3,4,5,6,7,8,9};
int i,t;
printf("原始数组是:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
for(i=0;i<N/2;i++)
{
t=a[i];
a[i]=a[N-1-i];
a[N-1-i]=t;
}
printf("\n排序后的数组:\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
题目思考:同上