C语言大一期末考试必会编程题

这篇具有很好参考价值的文章主要介绍了C语言大一期末考试必会编程题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言期末考试必会的编程题,掌握了保证你能不挂科

NO.1 判断素数 

素数定义:素数又称质数,是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数;比如1,2,3,5,7,9,是素数,4,6,8,10不是素数。

思路:比如一个数5,判断它是不是素数,就用5依次除以2~4的每一个数,如果每次除的余数都不为0,那么说明不能整除,也就是素数。如果余数出现一个为0的,说明能够整除,则为素数。

代码:

#include<stdio.h>
int isPrime(int a);  //函数头(Prime是素数的英文) 
 
int main()
{
	int n;
	printf("请输入大于或等于一的整数:\n"); 
	scanf("%d",&n);  //从终端读取一个数,并赋值给n 

	if (isPrime(n)==0)   //判断条件是isPrime(n)==0
	{
		printf("%d不是素数",n);  //isPrime的值是0,说明n不是素数 
	}else{
		printf("%d是素数",n); //isPrime的值不是0,说明n是素数
	}
	return 0;
 } 
 
int isPrime(int a)  //(int a)是形参,值等于的是main里的实参n 
{ 
	int i=1; //若为素数,则i为1;若不是素数,则i为0 
	for (int j=2;j<a;j++)  //让j从2开始,每次加1,加到a -1 
	{
		if (a%j==0)  //如果a除以j出现了等于0的情况,也就是说a可以整除j,那么a即是素数 
		{
			i=0;  //把i赋值为0 
			break;  //结束循环,只要出现一个能整除的,就不是素数 
		}
	}  

	if (a<=1)  //考虑输入的数小于等于1的情况,均不可能是素数 
	{
		i=0; 
	}

	return i;  //把i的值返回 
} 

考察知识点:

if选择语句

for循环语句

函数的定义和调用

NO.2:冒泡法排序

思路:对于10个元素的数组,需要比较9次,每一轮中,需要将每相邻的两数比较,把大的数调到右边,使大的数下一次继续和右边的数比较,全部比较完之后,最大的数就“沉”到了右边,如此比较9轮,即可将10个数按从小到大排列好。

代码:

#include<stdio.h>
#define n 10 //预处理:n用10替换 

int main()
{
	int a[n]={13,5,76,99,1,-4,0,8988,666,6};   //定义数组元素 
	
	for (int i=0;i<n-1;i++)    //外循环:共进行n-1轮比较 
	{   
		for (int j=0;j<n-1-i;j++)  //内循环: 每一轮比较都比上一轮的要少一次(因为上一轮已经确定了一个最大值的位置) 
		{
			if (a[j]>a[j+1])  //如果左边大于右边 
			{
				int tmp=a[j];  //交换两数的位置 
				a[j]=a[j+1];
				a[j+1]=tmp;
			}
		}
	}
	
	for (int t=0;t<n;t++){  //遍历输出排好序的数组 
	printf("%d ",a[t]);
	}
	return 0;
 } 

考察知识点:

嵌套循环

数组的定义和用法

if选择语句

NO.3 选择法排序

思路:假设数组有10个元素a[0]~a[9],将a[0]与a[1]~a[9]比较,若a[0]比a[1]~a[9]都小,则不进行交换。若a[1]~a[9]有一个以上比a[0]小,则将其中最小的一个与a[0]交换,此时a[0]中存放的是十个里最小的数。第二轮将a[1]与a[2]~a[9]比较,将剩下的9个数的最小者a[min]与a[1]交换,此时a[0]中存放的是十个里第二小的数,以此类推,共进行9轮比较,即可将十个元素按从小到大的顺序排序好。

代码:

#include<stdio.h>
#define n 10

int main()
{
	int a[10]={12,87,8,43,2,22,1,8,19,-145};
	
	for (int i=0;i<n-1;i++) //外循环:共需要比较n-1次 
	{
		int min=i; //假设a[i]是最小值 
		
		for (int j=i+1;j<=n-1;j++) //内循环:把a[min]和右边的每一个数比较 
			{
			if (a[min]>a[j])
				{
					min=j; //把小的数的下标赋给min 
				}
			}  //经过充分比较后,a[min]就是最小的那个数 
			
		int tmp=a[min]; //把最小的数a[min]和a[i]交换位置 
		a[min]=a[i];
		a[i]=tmp;			
	}
	
	for (int t=0;t<n;t++) //遍历数组输出排完序的结果 
	{
		printf("%d ",a[t]);
	 } 
	return 0;
 } 

考察知识点:

嵌套循环

数组的定义和用法

if选择语句

NO.4:二分法查找

思路:给出一个数字从小到大排列好的数组,第一步先读取中间的数即(mid=right+left)/2,看是不是要找的数,如果不是,比较中间的数和要找的数的大小,如果要找的数比中间的数小,那么我们就把搜索的目光转向[0,中间的数-1]这个范围,在这个缩小了一半的范围继续重复刚才的步骤,直至找出那个数,如果left>right还没有找到,那么搜索会结束,表面,数组里没有要找的那个数

二分法的好处:二分法查找效率十分的高,在100个数字的范围里找一个数,最多只需要7次,而在1百万的量级中,也仅仅只需要20次

代码:

#include<stdio.h>

int search(int *input,int len,int k);

int main()
{
	int a[12]={-1,0,5,8,13,20,34,15,37,50,88,100};
	int k=50;  //要找的那个数 
	int len=sizeof(a)/sizeof(a[0]);  //数组的元素数 
	int ret=search(a,len,k);  //引用search函数 
	printf("%d在a[%d]这里",k,ret);
	return 0;
 } 
 
int search(int *b,int len,int k)
{
	int left=0;  
	int right=len-1;
	
	while (right>left)  /*right在left左边,肯定比left大,要是比left小了,说明在数组里没有那个要找的数,我
	                    们就是要一直找到right比left小为止,所以right>left是循环条件*/ 
	{
		int mid=(left+right)/2; //二分法从中间开始找 
		if (b[mid]==k) // 如果找到了 
		{
			return mid;  //把位置的下标return回主函数 
			break;       //然后结束 
		}else if (b[mid]<k){  
			left=mid+1;  //如果k比mid大,说明k在mid右边,把搜索区域缩小到[left=mid+1,right] 
		}else{
			right=mid-1;  //如果k比mid小,说明k在mid左边,把搜索区域缩小到[left,right=mid-1] 
		}
	}	
}

考察知识点:

whil循环语句

数组与指针的关系

break的用法文章来源地址https://www.toymoban.com/news/detail-753979.html

到了这里,关于C语言大一期末考试必会编程题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络安全期末考试题

    一、选择题 1、以下关于DES加密算法和IDEA加密算法的说法中错误的是:(CD  ) A. DES是一个分组加密算法,它以64位为分组对数据加密 B. IDEA是一种使用一个密钥对64位数据块进行加密的加密算法 C. DES和IDEA均为对称密钥加密算法 D. DES和IDEA均使用128位(16字节)密钥进行操作

    2024年01月20日
    浏览(38)
  • 前端期末考试试题及参考答案(08)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 在BootStrap中,表单、分页等都属于Bootstrap的______。 Bootstrap是由______公司的设计师开发的一个前端开源框架。 在页面引入html5shiv.min.js,用于让低版本的浏览器支持______元素。 Bootstrap包中为我们提供了两个容器类

    2024年02月09日
    浏览(38)
  • 前端期末考试试题及参考答案(06)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl video标签支持三种格式的视频文件,分别为______、 、 。 ______用于获取视频的原始高度。 表达式\\\"27\\\" !=27的值为______。 标签支持三种格式的音频文件,分别为______、 、 。 Audio对象中用于设置是否静音的属性是_

    2024年02月10日
    浏览(37)
  • 前端期末考试试题及参考答案(01)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl ______表示页面中一个内容区块或整个页面的标题。 ______表示页面中一块与上下文不相关的独立内容,比如一篇文章。 CSS的引入方式有3种,分别是行内式、内嵌式和______。 CSS的浮动可以通过______属性进行设置。

    2024年02月08日
    浏览(40)
  • 杭电信工--大数据期末考试试题

    CAP是指一致性、可用性、分区容忍性 。  T CAP是指在一个分布式系统中,不可能同时满足可用性、一致性、分区容忍性。 T NoSQL数据库的BASE特性是指基本可用、持续性、软状态、最终一致性 。  F NoSQL数据库的BASE特性是指基本可用、软状态、最终一致性 。  T 目前,NoSQL的含

    2024年02月06日
    浏览(38)
  • Java期末考试试题及参考答案(03)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1.面向对象的三大特征是________、________ 、________ 。 2.针对类、成员方法和属性,Java提供了4种访问控制权限,分别是________ 、 ________ 、________ 和________ 。 3.静态方法必须使用________来修饰。 4.类的封

    2024年02月03日
    浏览(30)
  • Java期末考试试题及参考答案(08)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1.泛型的作用是支持类型________。 2.泛型可以用在类、接口和方法的定义中,分别称为________、________ 和________。 3.在Java程序中,经常会有参数类型或返回值类型不确定的方法,这种方法在Java中统称为______

    2024年02月06日
    浏览(27)
  • Java期末考试试题及参考答案(12)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1.实现多线程的两种方式是继承________类和实现________接口。 2.线程的整个生命周期分为5个阶段,分别是________、________ 、________、阻塞状态和死亡状态。 3.在Thread类中,提供了一个________方法用于启动新线程

    2024年02月09日
    浏览(41)
  • Java期末考试试题及参考答案(10)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1.Java中的I/O流,按照传输数据的不同,可分为________和________。 2.java.io包中可以用于从文件中直接读取字符的是________类。 4.IO提供两个带缓冲的字节流,分别是________和________。 4.在JDK中提供了两个类可以

    2024年02月09日
    浏览(35)
  • Java期末考试试题及参考答案(01)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1.Java是一种面向______的语言,它是由SUN公司开发的高级程序设计语言。 2.将.java源文件编译为.class文件的是________命令。 3.Java语言的跨平台特点是由________保证的。 4.Java程序的运行环境简称为________。 1.

    2024年02月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包