程序设计实验Ⅰ期末模拟 解题报告

1001

【题目大意】搜索某个数字在一串数中第一次出现的位置,如果没有则输出-1

【解题思路】简单的搜索题,直接遍历整个数组,代码如下

#include<stdio.h> 
int main(){
	int n,p,i,num[11000];
	scanf("%d",&n);
	while(n--){
		p=-1;
		while(scanf("%d",&num[++p]))
			if(num[p]==-1) break;
		for(i=0;i<p-1;i++)
			if(num[i]==num[p-1])
				break;
		if(i!=p-1) printf("%d\n",i);
		else printf("-1\n");
	} 
}


1002

【题目大意】把n个相同的球放进m个盒子,求方案数

【解题思路】动态规划,把b个球放进a个盒子的方案设为f(a,b),则f(a,b)=Σf(a-1,i),注意盒子是相同的,为了避免算重,可以规定第一个盒子中球数x1>第二个盒子中球数x2>x3>......>xa

#include<stdio.h> 
#define min(x,y) (x<y?x:y)
int put(int a,int b,int m){
	int i,ans=0;
	if(a==0) return b==0?1:0;
	for(i=0;i<=min(b,m);i++)
		ans+=put(a-1,b-i,i);
	return ans;
}
int main(){
	int n,box,stone;
	scanf("%d",&n);
	while(n--){
		scanf("%d%d",&box,&stone);
		printf("%d\n",put(box,stone,stone));
	} 
}


1003

【题目大意】输出A到B间所有被3或被4整除的数

【解题思路】水题,直接附代码

#include<stdio.h> 
int main(){
	int i,a,b; 
	scanf("%d%d",&a,&b);
	for(i=a;i<=b;i++)
		if(i%3==0||i%4==0)
			printf("%d\n",i);
}

1004

【题目大意】检验字符串是否合法

【解题思路】逐位判断

#include<stdio.h> 
#include<string.h>
int valid(char *s){
	int i;
	if(strlen(s)>8||s[0]<'a'||s[0]>'z') return 0;
	for(i=1;i<strlen(s);i++)
		if((s[i]<'a'||s[i]>'z')&&(s[i]<'0'||s[i]>'9'))
			return 0;
	return 1;
}
int main(){
	char s[21];
	scanf("%s",s);
	if(valid(s)) printf("Yes\n");
	else printf("No\n");
}

1005

【题目大意】输出一个倒三角

【解题思路】注意输出格式就行

#include<stdio.h>
#include<math.h>
int main(){
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		for(j=1;j<i;j++) printf("        ");
		for(j=0;j<=n-i;j++) printf("%8.0lf",pow(2,j));
		for(j=n-i-1;j>=0;j--) printf("%8.0lf",pow(2,j));
		printf("\n");
	}
}

1006

【题目大意】检索学生信息

【解题思路】简单搜索题

#include<stdio.h> 
int main(){
	int n,m,i,key,id[11000],score[11000];
	char name[11000][20];
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		scanf("%d%s%d",&id[i],name[i],&score[i]);
	while(m--){
		scanf("%d",&key);
		for(i=0;i<n;i++)
			if(id[i]==key){
				printf("%s %d\n",name[i],score[i]);
				break;
			}
		if(i==n) printf("error\n");
	}
}

1007

【题目大意】检测字符串Y是否在字符串X中出现过

【解题思路】善用库里的函数,有轮子用为什么要自己造

#include<stdio.h>
#include<string.h>
int main(){
	int n;
	char s1[100],s2[100];
	scanf("%d",&n);
	while(n--){
		scanf("%s%s",s1,s2);
		if(strstr(s1,s2)==NULL) printf("0\n");
		else printf("1\n");
	}
}


1008

【题目大意】矩阵乘法

【解题思路】

#include<stdio.h> 
int main(){
	int i,j,k,ans,matrix1[3][3],matrix2[3][3];
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			scanf("%d",&matrix1[i][j]);
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			scanf("%d",&matrix2[i][j]);
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			ans=0;
			for(k=0;k<3;k++)
				ans+=matrix1[i][k]*matrix2[k][j];
			printf("%d ",ans);
		}
		printf("\n");
	}
}

1009

【题目大意】字符串处理

【解题思路】用按位异或可以改变flag状态

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
	char s[11000];
	int flag,i;
	scanf("%s",s);
	flag=1;
	for(i=0;i<strlen(s);i++){
		if(s[i]=='*') flag=flag^1;
		if(flag) printf("%c",toupper(s[i]));
		else printf("%c",tolower(s[i]));
	}
}

1010

【题目大意】输出a+b,a-b,a*b,a/b,sqrt(a)

【解题思路】注意强制类型转化和输出格式就行了

#include<stdio.h>
#include<math.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d\n%d\n%d\n",a+b,a-b,a*b);
	if(b!=0) printf("%.2lf\n",(double)a/b);
	else printf("Error\n");
	printf("%.2lf\n",sqrt(a));
}

总而言之,这次模拟考难度较低,基本上没有涉及到算法知识,只要平时认真完成作业AK是没有问题的

最后希望大家在期末考取得好成绩(^-^)

青岛大学2018秋《C语言程序设计期末模拟练习是为了考察学生对C语言程序设计的掌握程度和运用能力而设计的一次模拟考试。这次练习将涵盖C语言的基础知识、语法规则以及常用的编程思想和技巧。 在这次练习中,学生可能会遇到一系列的选择题和编程题。选择题主要考查学生对C语言知识点的理解和记忆,例如变量类型、运算符、控制语句等内容。编程题则要求学生根据题目要求,用C语言编写程序,解决特定的问题。 这次模拟练习的目的是使学生在考试前对自己的学习情况进行自测和巩固,帮助学生熟悉考试形式和要求,提高其应试能力和自信心。练习中的题目可能会涉及到实际应用场景,如计算器的实现、数组排序、字符串处理等等,通过解决这些实际问题,学生可以锻炼解决问题的能力和编程思维。 为了顺利完成练习,学生应提前复习和总结课堂所学知识,掌握C语言的基本概念和常用的编程技巧。平时应多进行编程实践,积累解题经验和编程技巧。同时,要加强对问题的分析和思考能力,培养自学能力和独立解决问题的能力。 总结起来,青岛大学2018秋《C语言程序设计期末模拟练习是考察学生对C语言的掌握和应用能力的一次考试。通过这次模拟练习,学生可以对自己的学习情况进行自测和巩固,提高应试能力。为了顺利完成练习,学生应提前复习和总结课堂所学知识,加强编程实践,培养问题解决和思考能力。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值