贵州大学考研复试机试真题--c语言版_考研机试真题c语言_蓝焰鱼的博客-程序员秘密

技术标签: c语言习题  算法  c语言  编程  开发语言  

贵州大学考研复试机试真题–c语言版

A、字符串翻转–给定一个字符串,反序输出。

思路:拿到一个字符串,求出其长度,然后逆序输出

#include<stdio.h>
#define N 100
int main(){
    
	char str[N]; 
	int i,cnt=0;
	gets(str);//输入字符串 
	cnt = strlen(str);//获取字符串长度 
	for(i=cnt-1; i>=0; i--)//逆序输出字符串 
		printf("%c",str[i]); 
	return 0;
}

B、整除–输出100到1000之间能被5和6同时整除的数,输出格式为每10个数为一行。

注意:换行判断的位置!

#include<stdio.h>
int main(){
    
	int i,cnt=0;
	for(i=100; i<=1000; i++) {
    
		if(i%5==0 && i%6==0){
    
			printf("%d ",i);
			cnt++;
			if(cnt%10 == 0)
				printf("\n");
		}			
	}
	return 0;
}

C、0和1的个数–给定一个int型整数,输出这个整数的二进制的0和1的个数。

作模2运算,先算1的个数,再拿32位减去1的个数。

#include<stdio.h>
int main(){
    
	int n,i,cnt=0;
	scanf("%d",&n);
	for(i=0; n!=0; i++){
    
		if(n%2 == 1)
			cnt++;
		n/=2;
	}
	printf("0的个数为%d,1的个数为%d\n",32-cnt,cnt);
	return 0;
}

D、随机数–从1—20之间随机抽取5个数,输出抽取出来的5个数之和与剩余未被抽取的15个数之和的总和。

#include<stdio.h>
#define n 5 
int main(){
    
	int i,j,x,sum1=0,sum2=0,a[n]={
    0};
	
	//抽取出来的5个不重复的随机数
	x = rand()% 20 + 1;
	a[0] = x; 
	for(i=1; i<n; i++){
    
		x = rand()%20+1;
		a[i] = x;
		for(j=0; j<i; j++){
    
			if(a[i] == a[j]){
    
			    i-=1;
				break;
			}
		}
	}
	
	//抽取出来的五个数的总和 
	for(i=0; i<n; i++){
    
		int b = a[i];
		sum1 += b;	
	}
	
	//20个数的总和 
	for(i=1; i<=20; i++){
    
		sum2 += i;	
	}
	
	printf("抽取出来的5个数总和=%d,剩余未被抽取的15个数之和=%d,二者的总和=%d\n",sum1,sum2-sum1,sum2);
	
	return 0;
}

E、排序-输入n个数进行排序,要求先按奇偶后按从小到大的顺序排序。

#include<stdio.h>
int main()
{
    
	int n,i,j,low=0,high=0;	
	printf("请输入总个数:");
	scanf("%d",&n);
	
	int num[n],initval[n];/*输入型数组在个数输入后定义,会减少系统脏数据的干扰*/
	printf("请开始输入数字:\n");
	for(i=0; i<n; i++){
    
		scanf("%d",&initval[i]);
	}
	
	/*奇偶数划分*/
	for(i=0; i<n; i++){
    
		if(initval[i]%2==0){
    /*偶数放在后半段*/
			num[n-high-1] = initval[i]; 
			high++;/*标记num数组后半段已存入的个数*/
		}else{
    /*奇数放在前半段*/
			num[low] = initval[i];
			low++;/*标记num数组前半段已存入的个数*/
		}
	}
	
	/*直接插入排序*/
	int x;/*临时变量*/ 
	/*将各元素插入到已排好序的序列中*/
	for(i=1; i<low; i++){
    /*前半段奇数部分*/
		if(num[i] < num[i-1]){
    
			x = num[i];/*x暂存num[i]*/ 
			for(j=i-1; num[j]>x&&j>=0; --j)/*检查所有前面已排好序的元素*/ 
				num[j+1] = num[j];/*所有大于x的元素都向后挪位*/ 
			num[j+1] = x;/*复制到插入位置*/
		}
	
	} 
	for(i=n-high+1; i<n; i++){
    /*后半段偶数部分*/
		if(num[i] < num[i-1]){
    
			x = num[i];/*x暂存num[i]*/ 
			/*注意j的下界为后半段起始,而不是0*/
			for(j=i-1; num[j]>x&&j>=n-high; --j)/*检查所有前面已排好序的元素*/ 
				num[j+1] = num[j];/*所有大于x的元素都向后挪位*/ 
			num[j+1] = x;/*复制到插入位置*/
		}
	} 
	
	for(i=0; i<n; i++){
    /*打印结果*/ 
		printf("%d ",num[i]);
	}
	
    return 0;
} 

F、日期–今天是2012年4月12日星期四,编写程序,输入今天开始到12月31日之间的任意日期,输出那一天是星期几。例如输入“5(回车)20(回车)”(5月20日),输出应为“Sunday”。

#include<stdio.h>
int main()
{
    
	int month,day,n;

	scanf("%d",&month);/*月份*/
	scanf("%d",&day); /*当天日期*/
	
	switch(month){
    
		case 4:
			n = day-12;
			n = (n+4) % 7;
			break;
		case 5:
			n = (1+day) % 7;/*上一个月的最后一天的星期加day*/
			break;
		case 6:
			n = (4+day) % 7;
			break;
		case 7:
			n = (6+day) % 7;
			break;
		case 8:
			n = (2+day) % 7;
			break;
		case 9:
			n = (5+day) % 7;
			break;
		case 10:
			n = day % 7;
			break;
		case 11:
			n = (3+day) % 7;
			break;
		case 12:
			n = (5+day) % 7;
			break;
		default:
			printf("请输入正确日期!"); 
	}

	switch(n){
    
		case 1:
			printf("Monday");
			break;
		case 2:
			printf("Tuesday");
			break;
		case 3:
			printf("Wednesday");
			break;
		case 4:
			printf("Thursday");
			break;
		case 5:
			printf("Friday");
			break;
		case 6:
			printf("Saturday");
			break;
		default:
			printf("Sunday"); 
	}
	
    return 0;
} 

G、字符移动–输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数字字符输入时的顺序。例如:输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。

思路:创建两个数组,一个用来存放输入的字符串,用两次for循环+判断,第一次将非数字字符存放在另一个数组,第二次将数字字符放入另一个数组后半段。

#include<stdio.h>
int main()
{
    
	char strs[100]={
    }, stre[100]={
    };/*初始数组并赋NULL值 , c语言没有直接的可变数组定义*/
	int lens, i, j;
	
	scanf("%s",&strs);/*%s:输入字符串,%c:输入单个字符 */
	lens = sizeof(strs);/*求字符串数组strs的长度,lens值为strs数组大小:100*/ 
	
	/*当strs数组中输入的字符不满100个时,剩余的部分均被NULL值占满,所以计算非数字字符时,需排除NULL值*/ 
	
	for(i=0,j=0; i<lens; i++){
    /*选取非数字字符*/
		if((strs[i]<'0' || strs[i]>'9') && strs[i]!=NULL){
    /*计算非数字的字符个数*/
			stre[j] = strs[i];
			j++;
		}
	}
	for(i=0; i<lens; i++){
    /*选取数字字符*/
		if(strs[i]>='0' && strs[i]<='9'){
    
			stre[j] = strs[i];
			j++;
		}
	}
	
	for(i=0; i<lens; i++){
    /*依次打印 strs数组中的字符 */ 
		printf("%c",stre[i]);
	}
	
    return 0;
} 

H、判断素数–输入一个整数,判断该整数是否为素数,若是,输出该整数,若否,输出大于该整数的第一个素数。(例如,输入为14,输出17,因为17是大于14的第一个素数)

#include<stdio.h>

int primenum(int n);/*声明查找最近的素数的函数primenum*/ 

int main()
{
    
	int i, n, lab=1;/*lab:1为素数,0为非素数*/
	scanf("%d",&n);/*输入的数值均初始为素数*/
	
	for(i=2; i<n; i++){
    /*判断素数*/ 
		if(n%i == 0){
    
			lab = 0; 
			break;
		}
	} 
	
	if(lab){
    /*若为素数,则直接打印*/ 
		printf("%d\n",n);
	}else{
    /*若为非素数,则查找最近的素数*/ 
		n = primenum(n);
		printf("%d\n",n);
	}
	
    return 0;
} 

int primenum(int n){
    
	int i, k, lab;
	for(k=n; ; k++){
    
		lab = 1;/*初始为素数*/ 
		for(i=2; i<k; i++){
    
			if(k%i == 0){
    
				lab = 0; 
				break;
			}
		}
		if(lab){
    /*若为素数,则跳出循环*/ 
			break;
		} 
	}
	
	return k;
}

I、加密算法–编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即A->D、B->E、C->F、…、Y->B、Z->C。小写字母同上,其他字符不做转化。输入任意字符串,输出加密后的结果。

例如:输入"I love 007",输出"L oryh 007"

#include<stdio.h>
/*a~z:97~122,A~z:65~90*/
int main()
{
    
	char str[100]={
    };
	int i;
	/*在输入带有空格的字符串时,只能用gets()或fgets(),而不能用scanf("%s") ,
	因为scanf("%s")输入字符串时,遇到空格就结束了输入。
	而gets()函数是以回车为结束符的输入函数,可以输入带空格的字符串。*/
	gets(str);
	for(i=0; i<100; i++){
    
		if((str[i]>=97 && str[i]<=122) || (str[i]>=65 && str[i]<=90))
			str[i]+=3;
	}
	puts(str);
    return 0;
} 

J、单链表–从键盘输入5个整数,将这些整数插入到一个链表中,并按从小到大次序排列,最后输出这些整数。

设节点定义如下

struct Node {
     
 int Element; // 节点中的元素为整数类型
 struct Node * Next; // 指向下一个节点
};
#include<stdio.h>
#include<stdlib.h>

/*定义结点*/
typedef struct Node {
    
	int Element; /*节点中的元素为整数类型*/ 
	struct Node *Next; /*指向下一个节点*/
};

int main()
{
    
	int i,x;
	Node *head = new Node;/*头结点*/ 
	Node *tail = head;/*尾结点*/ 
	/*尾插法建立单链表*/
	for(i=0; i<5; i++){
    /*带头结点、尾结点的单链表*/
		scanf("%d",&x);
		Node *a = new Node;
		if(i==0){
    
			head->Next = a;/*头结点不带值*/ 
		}
		a->Element = x;
		tail->Next = a;/*尾指针指向尾结点即最后一个带值的结点*/ 
		tail = tail->Next;
	} 
	
	Node *p = head->Next;
	Node *q = p->Next; 
	int i=5;
    
	while(i--){
    /*冒泡排序*/
		while(q!=NULL){
    
			if(p->Element > q->Element){
    
				int t;
				t = p->Element;
				p->Element = q->Element;
				q->Element = t;
			}
			p = q;
			q = q->Next;
		}
		p = head->Next;
		q = p->Next;
	}
	
	while(p!=NULL){
    
		printf("%d\n",p->Element);
		p = p->Next;
	}
	printf("end!");
	
	
    return 0;
} 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43488742/article/details/123152864

智能推荐

2021年安全员-B证(山东省-2021版)考试及安全员-B证(山东省-2021版)考试试卷_童话小镇(王雅丽)的博客-程序员秘密

题库来源:安全生产模拟考试一点通公众号小程序安全员-B证(山东省-2021版)考试根据新安全员-B证(山东省-2021版)考试大纲要求,安全生产模拟考试一点通将安全员-B证(山东省-2021版)模拟考试试题进行汇编,组成一套安全员-B证(山东省-2021版)全真模拟考试试题,学员可通过安全员-B证(山东省-2021版)考试试卷全真模拟,进行安全员-B证(山东省-2021版)自测。1、【判断题】轮胎式起重机启动前应重点检査各安全保护装置和指示仪表应齐全完好,钢丝绳及连接部位应符合规定,燃油、润滑油

unity场景导入与简单场景搭建_withcoco的博客-程序员秘密

unity场景导入与简单场景构建unity场景导入unity简单的场景构建一、创建一个新的Scene场景二、创建设置地形unity场景导入1.在项目目录下创建Scenes文件夹与Prefab文件夹,分别用来存放Scene场景文件和预制件。2.准备好要导入的场景所需组件,我这里使用的是成品素材,导入的部分包括两个部分:map与Terrain,在导入后会生成一个相应的meta文件,便于unity对素材的管理。map文件主要包括场景物体Terrain文件主要包括地形3.在Scenes文件夹中创建

CC++程序训练6---歌德巴赫猜想的证明_输入一个不小于6的偶数n_Du_Chunfeng的博客-程序员秘密

Problem Description验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。Input输入一个不小于6的偶数n。Output找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。Example Input80Example Output80=7+73#include &amp;lt;stdio.h&amp;gt;...

latex c语言程序,latex中添加C++代码_弃医从everything的博客-程序员秘密

HttpClientHttp协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...&amp;lbrack;OpenCV&amp;rsqb; Samples 01&amp;colon; drawing基本的几何图形,标注功能. commondLinePar...

应季时令水果蔬菜_任庆 的博客-程序员秘密

春季柠檬、枇杷、圣女果、菠萝、火龙果、草莓、荔枝、桑葚、山竹、樱桃。夏季菠萝、草莓、黑莓、火龙果、蓝莓、荔枝、榴莲、桑葚、桃、山竹、杏、西瓜、香瓜、樱桃、杨梅、椰子、苹果、哈密瓜、龙眼、李子、芒果、蟠桃、油桃、杨桃、百香果、黄桃、猕猴桃、木瓜、葡萄、青提、沙果、无花果。秋季苹果、百香果、菇娘、红提、黄桃、海棠果、火龙果、哈密瓜、龙眼、蓝莓、李子、蜜柑、猕猴桃、木瓜、芒果、...

office2010:打开和关闭Word文档提示“Microsoft Word已停止工作”的解决办法_office2010关闭后弹出停止工作_sharkill的博客-程序员秘密

最近下了个Word文档,用Word2010打开,点一下“启用编辑”后显示”Microsoft Word已停止工作“,然后就自动重启了。而且编辑过程中经常无缘无故停止工作,有时候关闭文档都显示”Microsoft Word已停止工作“。解决方法:①首先,关闭所有Office相关程序;②点击“开始”菜单,选择“运行”,输入 regedit 进入注册表编辑器;③依次展开,找到 HKEY_

随便推点

python helloword_python helloworld_刘建-Bragood的博客-程序员秘密

导读正文下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。#!/usr/bin/env python# -*- coding: utf-8 -*-' a test module '__author__ = 'test'import sysdef test():args = sys.argvif len(args)==1:print 'Hell...

MySQL(八)之DML_a878787877的博客-程序员秘密

昨天晚上很晚的时候才写完MySQL的常用函数,今天给大家讲一下MySQL的DML。接下来让我们直接来学习了,今天感冒了。身体很难受下午的时候要去买一波药了,不然程序员也扛不住呀。DML全称Data Manipulation Language,数据操作语言。一、插入数据创建格式格式:INSERT INTO 表名(字段名...)VALUES(值...);首先先创...

matlab2010a连接mysql_MATLAB怎样连接MYSQL数据库_weixin_39517902的博客-程序员秘密

1.找到MYSQL的JDBC的JAR包,见这个网址:http://bbs.tucue.com/showtopic.aspx?forumid=70&amp;forumpage=1&amp;topicid=657&amp;go=next,虽然不太官方,不过好使就行~2.解压缩,并将mysql-connector-java-5.1.7-bin.jar文件拷贝到D:/program files/MATLA...

oracle timestamp相减 计算差多少秒_oracle timestamp相减得秒数_程序员石磊的博客-程序员秘密

CREATE OR REPLACE function timestamp_diff(a timestamp, b timestamp) return number is begin return extract (day from (a-b))*24*60*60 + extract (hour from (a-b))*60*60+ extract...

Day04.循环结构_晶晶家的小可爱的博客-程序员秘密

循环结构文章目录循环结构前言一.for-in循环二.While循环三.练习3.1 输入一个正整数判断是不是素数。3.2 输入两个正整数,计算它们的最大公约数和最小公倍数。3.3 打印如下所示的三角形图案。总结前言我们在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作,当然这里还会用到上一课讲的分支结构来判断机器

学习Java开发的人有哪些,Java适合哪类人群学习?_尔玉797的博客-程序员秘密

现在的培训Java怎么样,学习Java开发的人有哪些,Java适合哪类人群学习?提到Java这个名词时,大多数人脑袋中都会浮现出三个字:“程序猿”,从事互联网行业的人群则会浮现出“码农”的字眼。只要是接触过计算机,就不会对这个名词感到陌生,或多或少都有些听闻。不少朋友也对Java挺感兴趣,但都觉得Java需要涉及的知识会非常广,会非常难学,应该只有计算机专业的人才能学得会吧,以自己半路出家的学识能力不一定学得会,于是便放弃了学习Java的打算。那么事实确实如此吗,Java非常难学吗,培训学Java怎么样,J

推荐文章

热门文章

相关标签