大学生C语言机考大题 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计(C语言)复习提纲一、题型及分值:
1.单选40分(20×2分)
2.判断10分(10×1分)
3.填空10分(10×1分)
4.程序填空20分(2题×10分)
5.程序设计20分(2题×10分)
二、“程序填空”、“程序设计”的主要知识点:
1.分段函数的计算
示例:
#include<stdio.h>
void main()
{
i nt x,y;
p rintf("input one number:");
s canf("%d",&x);
i f(x>0)
y=5*x+6;
else
if(x==0)
y=0;
else
y=6*x+5;
printf("x=%d\ny=%d\n",x,y);
2.闰年问题
示例:
#include <stdio.h>
void main()
{
int n;
printf("输入年份:");
scanf("%d",&n);
if((n%4==0&&n%100!=0)||(n%400==0))
printf("%d是闰年\n",n);
else printf("%d不是闰年\n",n);
}
3.求满足特殊条件的数:例:被7整除、水仙花、最大公约数及最小公倍数
示例1:通过调用函数求最大公约数和最小公倍数
#include <stdio.h>
int Lowest_common_multiple(int m,int n);
int Greatest_common_divisor(int m,int n);
void main()
{
int m,n,t,p,k;
printf("请输入两个正整数m,n:\n");
scanf("%d,%d",&m,&n);
if(m<n){t=m;m=n;n=t;}
k=Greatest_common_divisor(m,n);
p=Lowest_common_multiple(m,n);
printf("最大公约数:%d\n" ,k);
printf("最小公倍数:%d\n" ,p);
printf("\n");
}
int Lowest_common_multiple(int m,int n)
{ return m*n/ Greatest_common_divisor(m,n);}
int Greatest_common_divisor(int m,int n)
{int r;
while((r=m%n)!=0)
{m=n;n=r;}
return n;
}
示例2:打印所有的水仙花数打印出所有的“水仙花数”。
(水仙花数是一个3位数,其各位数字立方和等于该数本身,如153=13+53+33)
#include<stdio.h>
#include<math.h>
void main()
{
int i;
for(i=100;i<1000;i++)
{ if(pow(i/100,3)+pow(i%100/10,3)+pow(i%10,3)==i)
printf("%5d",i);
}
printf("\n");
}
4.输出图形
示例:
#include<stdio.h>
void main()
{
int n,i,j;
printf("输入菱形的行数(奇数):");
scanf("%d",&n);
for(i=1;i<=n;i++)
if(i<=(n+1)/2)
{for(j=1;j<=(n+1)/2-i;j++)
printf(" ");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
else
{ for(j=1;j<=i-(n+1)/2;j++)
printf(" ");
for(j=1;j<=2*(n-i)+1;j++)
printf("*");
printf("\n");
}
}
5.累加、连乘形式的计算。
例:求数列和,奇数和、偶数和、m的n次方等
1+1/3+1/5+…+1/(2m+1)
1/2+1/4+…+1/2m
1-1/2+1/3+…+1/n
1/(1*2)+1/(2*3)+……+1/(n(n+1))
1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)
1!+2!+…n!
3!+6!+ (21)
1+1/1!+1/2!+…1/n!
1/2!+1/4!+…1/n!
示例1:求圆周率
#include <stdio.h>
#include <math.h>
void main ()
{
double PI=0.0,a=1.0,term=1.0;
int sign=1;
while(fabs(term)>=1e-6)
{
PI+=term;
a=a+2;
sign=-sign;
term=sign/a;
}
PI=PI*4;
printf("PI=%10.8f\n",PI);
}
示例2:1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n) #include<stdio.h>
void main()
{
int sum=0,i,n;
float x=0;
scanf(“%d”,&n);
for(i=1;i<=n;i++)
{
sum=sum+i;
x=x+1.0/sum;
}
printf("%f\n",x);
}
6.一维数组:
生成一维数组、一维数组中前n个元素相加
最大最小值、最大最小值的下标、最大最小值之差、求平均值一维数组逆置
一维数组排序(冒泡法或选择法)
字符、字符串问题:
字符串中各种字符的统计字串符中大小写字母的变换
自定义字符串的复制函数、字符串的连接函数示例1:书P118 例6-3
7.二维数组:
生成二维数组、求极大极小值、求对角线之和等
矩阵转置杨辉三角形
示例1:矩阵转置书P126 例6-6
求极大极小值书P127 例6-7
示例2:求对角线之和
#include<stdio.h>
void main()
{
i nt math[3][3],sum=0,i,j;
p rintf("请输入3x3整型矩阵的元素:\n");
f or(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&math[i][j]);
if(i==j||i+j==2)
sum=sum+math[i][j];
}
}
p rintf("此3x3矩形矩阵的对角线元素之和为%d\n",sum);
}
示例3:杨辉三角形
#include<stdio.h>
void main()
{
i nt a[10][10],i,j;
f or(i=0;i<10;i++)
for(j=0;j<10;j++)
{
if(j==0||j==i)
a[i][j]=1;
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
f or(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
8.递归问题:n!菲波那契数列
示例1:菲波那契数列(数组)书P120 例6-4
菲波那契数列(循环)书P108 例5-17
9.应用问题(素数、百钱买百鸡、猴子吃桃)
示例1:素数书P102 例5-13
示例2:百钱买百鸡书P106 例5-16
示例3:猴子吃桃问题:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少个桃子?
#include <stdio.h>
void main()
{
int i=1,n;
for(n=2;n<=10;n++)
{
i=2*(i+1);
}
printf("第一天共有%d个桃子",i); }。