特此鸣谢:鱼C_小甲鱼(B站up主)不二如是(鱼C论坛大佬)
题目来源:https://fishc.com.cn
注:这些题在网上都可以搜到,题下面的代码大多是流传下来的答案(我重新排了一下版,增加了可读性),部分是本人经过深思熟虑后编写的。
36,求100之内的素数
1.题目:求100之内的素数
2.程序源代码:
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for(i = 0; i <= 100;i++) {
int j = 0;
for(j = 2; j <= i; j++) {
if(i % j == 0) {
break;
}
}
if(i == j) {
count++;
printf("%d ",i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
37,对10个数进行排序
1.题目:对10个数进行排序
2.程序源代码:
- 第一种解:
// 冒泡排序:
#include <stdio.h>
int main()
{
int a[10];
int i, j, transfer;
printf("请输入10个数,我们将会对其排序!\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 10; i++) {
for (j = 0; j < 10 - 1 - i; j++) {
if (a[j] > a[j + 1]) {
transfer = a[j];
a[j] = a[j + 1];
a[j + 1] = transfer;
}
}
}
printf("排序后为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
}
- 第二种解:
// 选择排序
#include <stdio.h>
int main()
{
int a[10];
int i, j, transfer;
printf("请输入10个数,我们将会对其排序!\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 10; i++) {
for (j = i + 1; j < 10; j++) {
if (a[i] > a[j]) {
transfer = a[i];
a[i] = a[j];
a[j] = transfer;
}
}
}
printf("排序后为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
}
- 第三种解:
// 插入排序
#include <stdio.h>
int main()
{
int a[10];
int i, j, transfer;
int count;
int x;
printf("请输入10个数,我们将会对其排序!\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 1; i < 10; i++){
transfer = a[i];
j = i - 1;
while((j >= 0) && (a[j] > transfer)) {
a[j + 1] = a[j];
j--;
}
a[j+1] = transfer;
count++;
printf("第%d次:", count);
for (x = 0; x < 10; x++) {
printf("%d ", a[x]);
}
printf("\n");
}
printf("排序后为:");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
}
38,求一个3*3矩阵对角线元素之和
1.题目:求一个3*3矩阵对角线元素之和
2.程序源代码:
#include <stdio.h>
int main(void)
{
int i, j;
int a[3][3];
int num = 0;
printf("请输入一个3*3数组:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
if (i == j || (i == 0 && j == 2) || (i == 2 && j == 0)) {
num += a[i][j];
}
}
}
printf("对角线元素之和为:%d\n", num);
return 0;
}
39,给定一个数组,插入数据排序
1.题目:设定好一个排好顺序的数组。现输入一个数,要求按原来的规律将它插入数组中。例:设定数组为:1, 3, 4,插入数据为2,那么要求输入1, 2, 3, 4
2.程序源代码:
#include <stdio.h>
#define N 5
int main()
{
int num;
int a1[N] = {1, 3, 4, 6, 8};
int a2[N + 1];
int i, j;
printf("请输入一个数字:");
scanf("%d", &num);
for (i = 0; i < N; i ++) {
a2[i] = a1[i];
}
a2[N] = num;
for (i = 0; i < N + 1; i++) {
for (j = 0; j < N + 1 - 1 - i; j++) {
if (a2[j] > a2[j + 1]) {
num = a2[j];
a2[j] = a2[j + 1];
a2[j + 1] = num;
}
}
}
for (i = 0; i < N + 1; i++) {
printf("%d ", a2[i]);
}
}
40,将一个数组逆序输出
1.题目:将一个数组逆序输出
2.程序源代码:
- 第一种解:
#include <stdio.h>
int main(void)
{
int a[5];
int i;
printf("请输入5个数字:");
for (int i = 0; i < 5; i++) {
scanf("%d", &a[i]);
}
printf("您输入的为:");
for (i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
printf("逆序后为:");
for (i = 4; i >= 0; i--) {
printf("%d ", a[i]);
}
return 0;
}
- 第二种解:
#include "stdio.h"
#include "conio.h"
#define N 5
int main()
{
int a[N] = {9, 6, 5, 4, 1}, i, temp;
printf("original array:\n");
for(i = 0; i < N; i++) {
printf("%4d", a[i]);
}
for(i = 0; i < N / 2; i++) {
temp = a[i];
a[i] = a[N - i - 1];
a[N - i - 1] = temp;
}
printf("\nsorted array:\n");
for(i = 0; i < N; i++) {
printf("%4d", a[i]);
}
getch();
}