C语言复习资料.docx
《C语言复习资料.docx》由会员分享,可在线阅读,更多相关《C语言复习资料.docx(36页珍藏版)》请在冰点文库上搜索。
C语言复习资料
C语言例题
1、计算任意一个四位数的位数相加的和
voidmain()
{
intshu,shu1,shu2,shu3,shu4;
for(inti=1;i<=5;++i){
printf("\n请输入一个四位数:
");
scanf("%d",&shu);
printf("还能输入%d次\n",5-i);
if(shu>=1000&&shu<=9999){
shu1=shu%10;
shu2=shu/10%10;
shu3=shu/100%10;
shu4=shu/1000;
printf("\n个位数为:
%d\n十位数为:
%d\n百位数为:
%d\n千位数为:
%d\n和为:
%d\n",shu1,shu2,shu3,shu4,shu1+shu2+shu3+shu4);
}else{
printf("输入的数字错误!
");
}
}
}
2、输入小写字母将其转换成对应的大写字母输出
voidmain()
{
for(inti=1;i<5;++i)
{
charnum;
printf("\n请输入一个小写的英文字母:
");
scanf("%c",&num);
fflush(stdin);//去掉回车
if(num>=97&&num<=122)
{
charNum=(char)(num-32);
printf("\n这个字母的大写为:
%c",Num);
}
else
{
printf("\n输入的字母不符合要求,请重新输入!
\n");
}
}
}
用户输入的两个数的+-*/%运算
voidmain(){
floatnum1,num2;
charop;
for(inti=1;i<=5;++i){
fflush(stdin);
printf("\n请输入两个数字(中间用空格区分):
");
scanf("%f%f",&num1,&num2);
fflush(stdin);
printf("\n确定运算方式(+-*/%%):
");
scanf("%c",&op);
if(op=='+'){
printf("\n输入的两位数的运算过程:
%.2f%c%.2f=%.3f\n",num1,op,num2,num1+num2);
}elseif(op=='-'){
printf("\n输入的两位数的运算过程:
%.2f%c%.2f=%.3f\n",num1,op,num2,num1-num2);
}elseif(op=='*'){printf("\n输入的两位数的运算过程:
%.2f%c%.2f=%.3f\n",num1,op,num2,num1*num2);
}elseif(op=='/'){
if(num2==0){
printf("\n除数不能为0!
\n,Errer");
}else{
printf("\n输入的两位数的运算过程:
%.2f%c%.2f=%.3f\n",num1,op,num2,num1/num2);
}
}elseif(op=='%'){
intshu=(int)num1%(int)num2;
printf("\n输入的两位数的运算过程:
%.2f%c%.2f=%d\n",num1,op,num2,shu);
}else{
printf("\n输入的运算符号不符合要求!
\n");
}
}
}
3、判断用户输入的年份是否是闰年
voidmain()
{
intyear;
charxuan;
do
{
printf("\n请输入年份:
");
scanf("%d",&year);
fflush(stdin);
if(year%4==0&&year%100!
=0||year%400==0)
{
printf("\n输入的年份是闰年!
\n");
}
else
{
printf("\n输入的年份不是闰年!
\n");
}
printf("\n是否继续判断年份?
(y/n)");
scanf("%c",&xuan);
fflush(stdin);
}
while(xuan=='y'||xuan=='Y');
}
4、判断一个输入的数是否是素数(素数是只能被1和他本身整除的数)
voidmain()
{
intsushu,i,b,a,k=1;
printf("请输入一个数字:
");
scanf("%d",&sushu);
fflush(stdin);
if(sushu>1)
{
for(i=2;i{
b=sushu%i;
if(b==0)
{
k=0;
}
}
if(k==0)
{
printf("%d这个数不是素数\n",sushu);
}
else
{
printf("%d这个数是素数\n",sushu);
}
}
else
{
printf("%d这个数不是素数\n",sushu);
}
}
5、输入一个正整数,求出该数的阶乘
voidmain()
{
intsum=1,i;
printf("请输入一个数(数最大值为16否则程序无法计算):
\n");
scanf("%d",&i);
for(inta=1;a<=i;++a)
{
sum*=a;
if(a==i)
{
printf("%d",a);
}
else
{
printf("%d*",a);
}
}
printf("=%d\n",sum);
}
求1-100之间的跳过3的倍数的数
voidmain()
{
for(inti=1;i<=100;++i)
{
if(i%3==0)
{
continue;
}
printf("%d",i);
}
printf("\n");
}
6、输出1000以内的水仙花数(水仙花数:
一个数的各位上的数的立方的和等于它本身)
voidmain()
{
intshu=1,sum;
printf("一千以内的水仙花数:
\n");
for(inta=1;a<=1000;++a)
{
inti=a;
sum=0;
while(i>0)
{
inttemp=i%10;
shu=temp*temp*temp;
sum+=shu;
i=i/10;
}
if(sum==a)
{
printf("%d\n",a);
}
}
}
7、冒泡排序法排一组数据的最大和最小
voidmain()
{
intnums[10]={10,15,1,13,28,520,0,11,15,23};
printf("原始数据顺序:
\n");
for(inti=0;i<=9;++i)
{
printf("%d\t",nums[i]);
}
for(inti=0;i<9;++i)
{
for(intj=0;j<9-i;++j)
{
if(nums[j]>nums[j+1])
{
inttemp=nums[j+1];
nums[j+1]=nums[j];
nums[j]=temp;
}
}
}
printf("排序后的数据顺序:
\n");
for(inti=0;i<=9;++i)
{
printf("%d\t",nums[i]);
}
}
8、二分法给数组插入数据
voidmain()
{
intshu[6]={1,2,3,4,5},num,d=0;
printf("请输入要插入的数据");
scanf("%d",&num);
for(inti=0;i<=4;++i)
{
if(num{
d=1;
for(inta=4;a>=i;--a)
{
shu[a+1]=shu[a];
}
shu[i]=num;
break;
}
}
if(d==0)
{
shu[5]=num;
}
for(inti=0;i<=5;i++)
{
printf("%d\t",shu[i]);
}
printf("\n");
}
9、显示10行以内的杨辉三角形
voidmain()
{
inti,j;
inta[10][10];
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;
for(j=1;j
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}
10、输入n值,输出如图所示高为n的等腰三角形。
main()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
二级C编程题
1.编写函数fun(),它的功能是求n以内(不包括n)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。
例如:
n为1000时,函数值应为s=96.979379。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
doublefun(intn)
{
}
main()
{
clrscr();
printf("s=%f\n",fun(1000));
}
2.请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回。
其中Fibonacci数列F(n)的定义为
F(0)=0,F
(1)=1
F(n)=F(n-1)+F(n-2)
例如:
t=1000时,函数值为987。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
intfun(intt)
{
}
main()
{
intn;
clrscr();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
3.请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。
例如:
主函数从键盘给输入n的值为56,则输出为sum=1113。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
longfun(intn)
{
}
main()
{
intn;
longsum;
printf("Inputn:
");
scanf("%d",&n);
sum=fun(n);
printf("sum=%ld\n",sum);
}
4.程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N],intn),该函数的功能是使数组左下半三角元素中的值加上n。
例如:
若n的值为3,a数组中的值为
a=254
169
537
则返回主程序后a数组中的值应为
554
499
8610
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
fun(inta[][N],intn)
{
}
main()
{
inta[N][N],n,i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{
for(j=0;j{
a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
do
n=rand()%10;/*产生一个小于5的随机数n*/
while(n>=5);
printf("n=%4d\n",n);
fun(a,n);
printf("*****THERESULT*****\n");
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
5.m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将高于平均分的分数放在up所指的数组中。
例如,当score数组中的数据为24,35,88,76,90,54,59,66,96时,函数返回的人数应该是5,up中的数据应为88,76,90,66,96。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:
");
for(i=0;iprintf("%d",up[i]);
}
6.请编写函数voidfun(intx,intpp[],int*n),它的功能是求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为24,则有6个数符合要求,它们是2,4,6,8,12,24。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
voidfun(intx,intpp[],int*n)
{
}
main()
{
intx,aa[1000],n,i;
clrscr();
printf("\nPleaseenteranintegernumber:
\n");
scanf("%d",&x);
fun(x,aa,&n);
for(i=0;iprintf("%d",aa[i]);
printf("\n");
}
7.请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是将大于整数m且紧靠m的k个非素数存入所指的数组中。
例如,若输入15,5,则应输出16,18,20,21,22。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:
");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=0;mprintf("%d",zz[m]);
printf("\n");
}
8.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:
234345753134436458100321135760
则输出结果为6,100。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
intfun(int*s,intt,int*k)
{
}
main()
{
inta[10]={234,345,753,134,436,458,100,321,135,760},k;
clrscr();
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
9.下列程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N]),该函数的功能是使数组右上半三角元素中的值全部置成0。
例如a数组中的值为
a=456
179
326,
则返回主程序后a数组中的值应为
000
100
320
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("THERESULT\n");
for(i=0;i{for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
10.下列程序定义了N×N的二维数组,并在主函数中赋值。
请编写函数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回给主函数中的s。
例如:
若a数组中的值为
a=01279
1112155
2216111
979102
54141
则返回主程序后s的值应为310。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#include
#defineN5
intfun(intw[][N])
{
}
main()
{
inta[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};
inti,j;
ints;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i{for(j=0;j{printf("%4d",a[i][j]);}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:
%d\n",s);
}
11.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
请编写函数fun(),它的功能是:
找出学生的最低分,由函数值返回。
注意:
部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
#include
#defineN8
structslist
{doubles;
structslist*next;
};
typedefstructslistSTRUC;
doublefun(STRUC*h)
{
}
STRUC*creat(double*s)
{
STRUC*h,*p,*q;
inti=0;
h=p=(STRUC*)malloc(sizeof(STRUC));
p->s=0;
while(i{q=(STRUC*)malloc(sizeof(STRUC));
p->s=s[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;