绝对零基础的C语言科班作业(期末模拟考试)
创始人
2024-05-28 13:41:42
0

编程题(共10题; 共100.0分)

模拟1(输出m到n的素数)

从键盘输入两个整数[m,n], 输出m和n之间的所有素数。

输入样例:3,20

输出样例:3 5 7 11 13 17 19 (输出数据之间用空格间隔)

代码:

#include
#include
int isPrime(int r)
{if (r < 2){return 0;}for (int i = 2;i <= sqrt(r);i++){if (r % i == 0){return 0;}}return 1;
}
int main()
{int m = 0, n = 0;scanf("%d%d", &m, &n);for (int i = m;i <= n;i++){if (isPrime(i)){printf("%d ", i);}}return 0;
}

模拟2(在数组找数字并排序)

从键盘输入10个整数存入数组中,从键盘输入一个整数,

判断从键盘输入的整数是否在数组中,如果找到了,输出该数所在的位置,

否者提示“not found”。同时按由小到大次序对这批数据进行排序,并输出。

输入要求:第一行输入10个整数,数据间使用空格间隔

第二行 输入一个待查找的整数

输出要求: 第一行输出是否找待查找的数据的信息

第二行输出排序后的数据,要求数据间用空格间隔

代码:

#include
void bubble_sort(int arr[], int sz)//sz是传入数组大小,此题是10,也可以不加
{for (int i = 0;i < sz - 1;i++){int flag = 1;//优化(外面标记一下)(可以不写)for (int j = 0;j < sz - 1 - i;j++){if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;flag = 0;//如果内循环没有一次是要交换的,说明全部的数都排好了,此时flag为1,等下会break}}if (flag){break;}}
}
int main()
{int arr[10] = { 0 };for (int i = 0;i < 10;i++){scanf("%d", &arr[i]);}int n = 0;scanf("%d", &n);int flag = 0;for (int i = 0;i < 10;i++){if (arr[i] == n){printf("%d ", i);flag++;}}if (flag == 0){printf("not found");}printf("\n");int sz = sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz);//可以直接传入10for (int i = 0;i < 10;i++){printf("%d ", arr[i]);}return 0;
}

模拟3(查找字符)

从键盘输入一个字符,在给定的字符串中寻找该输入字符,

若找到打印输出该字符,没有找到给出提示信息“not found”。

给定的字符串:“the people's republic of china”

输入样例:p

输出样例:p

输入样例:t

输出样例:not found

代码:

#include
#include
int main()
{char arr[50] = "the people's republic of china";char c = '0';scanf("%c", &c);for (int i = 0;i < strlen(arr);i++){if (arr[i] == c){printf("%c", c);return 0;}}printf("not found");return 0;
}

模拟4(计算工资)

设某公司的业务员工资的计算方法为:工资=基本工资+提成。

其中,提成的计算方法为:当销售额在10000元以下时,只发基本工资1000元;

当销售额在10000元以上才可以拿提成。提成的比率为:当销售额在20000元以下时,

超出10000元的部分可按5% 提成;当销售额在20000元以上50000元以下时,

超出20000元的部分可按6% 提成;当销售额在50000元以上100000元以下时,

超出50000元的部分可按7% 提成;当销售额在100000元以上时,

超出100000元的部分可按8% 提成。输入一个业务员的销售额,计算其应发的工资额。

输入提示信息:"Please input sale: \n"

输入格式:"%d"

输出格式:"%.3f\n"示例:

Please input sale : 23456

1707.360

这个就是用if写的数学题,先不写了。

模拟5(逆序整数)

编写程序,输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),

它的功能是返回number的逆序数。例如reverse(12345)的返回值是54321.

代码:

#include 
int reverse(int x)
{int m = 0;int sum = 0;while (x != 0){m = x % 10;x = x / 10;sum = (sum * 10) + m;}return sum;
}
//数组逆序
void reverse2(int* p, int left, int right)
{while (left < right){int tmp = p[left];p[left] = p[right];p[right] = tmp;++left;--right;}
}
int main()
{int n = 0;scanf("%d", &n);printf("%d\n", reverse(n));return 0;
}

模拟6(统计优秀率)

某班进行了大学计算机基础考试,

现要求的定义函数count帮助任课老师统计优秀率(90分以上为优秀)。

要求学生成绩使用数组来存储。

输入样例:78 90 87 65 45 78 23 94 67 77

输出样例:2

代码:

#include 
int count(int arr[])
{int count = 0;for (int i = 0;i < 10;i++){if (arr[i] >= 90){count++;}}return count;
}
int main() 
{int arr[10] = { 0 };for (int i = 0;i < 10;i++){scanf("%d", &arr[i]);}printf("%d", count(arr));return 0;
}

模拟7(回文数)

”20211202“是一个特殊的日子,是完全对称日。

所谓完全对称日即正读和反读得到的字符串是相同的,

实质就是一个回文词。英文中有很多的回文词,回文词的拼法十分有趣,无论是从前往后拼读,

还是从后往前拼读,他们的拼法和词义都不变。例如:dad(爸爸),mum(妈妈),noon(中午),

eve(前夕),eye(眼睛),pop(流行),deed(行为),level(水平)等。

现在请你编程输入一个字符串,判断它是否是回文。

提示:

(1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。

或者设置两个循环变量i和j,i指向首字符,j指向结束符。

(2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,

使指针pStart向前移动一个字符位置(加1),使指针pEnd向后移动一个字符位置(减1),

一旦发现两字符不等或两指针已互相超越(不可能是回文),则立即停止循环。

(3)根据退出循环时两指针的位置,判断字符串是否为回文。

输入样例:ABCCBA

输出样例:YES!

输入样例:student

输出样例:NO!

法一代码:

#include
#include
int main()
{char str[80] = { 0 };char* pstart = NULL, * pend = NULL;//dev不能用空指针的话就不用初始化了gets(str);int len = strlen(str);pstart = &str[0];pend = &str[len - 1];while (pstart <= pend){if (*pstart != *pend){break;}pstart++;pend--;}if (pstart < pend){printf("yes");}else{printf("no");}return 0;
}

法二代码:

#include
#include
int main() 
{char a[100], b[100];gets(a);int i = strlen(a);//计算的长度并不包含'\0'int tmp = i;for (i = 0;i < i;i++){b[i] = a[--tmp];}if (strcmp(a, b) == 0){printf("是回文数");}else{printf("不是回文数");}return 0;
}

模拟8(组合数)

从3个红球,5个白球,6个黑球中任意取出8个作为一组。在每组中可以没有黑球,

但必须要有红球和白球。编程实现复合要求的组合数。

代码:

#include             
int main()
{int red, white, black, sum = 0;for (red = 1; red <= 3; red++){for (white = 1; white <= 5; white++){for (black = 0; black <= 6; black++){if (red + white + black == 8){printf("red:%d white:%d black:%d\n", red, white, black);sum = sum + 1;}}}}printf("sum = %d", sum);return 0;
}

模拟9(合法密码)

编程实现判断用户在某购物网站注册时输入的密码是否合法,要求密码长度不能超过20,

且密码是混合字符,必须包含英文大写字母,英文小写字母和数字字符三种字符。

如果用户输入的注册密码复合要求,输出“yes ”否者输出 "no"

代码:

#include 
#include 
int main()
{char arr[50];gets(arr);int len = strlen(arr), lower = 0, upper = 0, digit = 0;if (len <= 20){for (int i = 0;i < len;i++){if (arr[i] >= 'a' && arr[i] <= 'z'){lower++;}if (arr[i] >= 'A' && arr[i] <= 'Z'){upper++;}if (arr[i] >= '0' && arr[i] <= '9'){digit++;}}}//如果不能是混合字符就加上k+upper+digit==iif (lower != 0 && upper != 0 && digit != 0){printf("yes");}else{printf("no");}return 0;
}

模拟10(结构体求平均分)

应用结构体类型,编程输入4名学生的姓名和高等数学、

大学英语、模拟电路三门课程的成绩,输出平均分最高的学生的姓名。

输入样例:

zhangsan 80 90 100

lisi 95 85 98

wangwu 95 85 95

zhaoliu 100 80 88

输出样例:

lisi

代码:

#include
struct student
{char name[20];float score[3];float aver;
};
int main()
{struct student s[4];for (int i = 0;i < 4;i++){
scanf("%s%f%f%f", &s[i].name, &s[i].score[0], &s[i].score[1], &s[i].score[2]);s[i].aver = (s[i].score[0] + s[i].score[1] + s[i].score[2]) / 3;}float max = -1;int i = 0, tmp = 0;for (i = 0;i < 4;i++){if (s[i].aver > max){max = s[i].aver;tmp = i;}}printf("%s", s[tmp].name);return 0;
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...