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

2017-01-01 21:51:33来源:作者:人点击

第七城市
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

【题目大意】字符串处理
【解题思路】水题......
#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是没有问题的
最后希望大家在期末考取得好成绩(^-^)
第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台