13机制本科C语言程序设计复习资料.docx

上传人:b****8 文档编号:28356796 上传时间:2023-07-10 格式:DOCX 页数:20 大小:33.42KB
下载 相关 举报
13机制本科C语言程序设计复习资料.docx_第1页
第1页 / 共20页
13机制本科C语言程序设计复习资料.docx_第2页
第2页 / 共20页
13机制本科C语言程序设计复习资料.docx_第3页
第3页 / 共20页
13机制本科C语言程序设计复习资料.docx_第4页
第4页 / 共20页
13机制本科C语言程序设计复习资料.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

13机制本科C语言程序设计复习资料.docx

《13机制本科C语言程序设计复习资料.docx》由会员分享,可在线阅读,更多相关《13机制本科C语言程序设计复习资料.docx(20页珍藏版)》请在冰豆网上搜索。

13机制本科C语言程序设计复习资料.docx

13机制本科C语言程序设计复习资料

1.计算定期存款本利之和

设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。

要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。

2.编写一个C程序,求a、b、c、d四个数中的最大者。

3.输入4个整数,要求按由小到大顺序输出。

得到正确结果后,修改程序使之按由大到小顺序输出。

4.根据以下函数关系,对输入的每个x值,计算出相应的y值。

#include

#include

voidmain()

{floatx,y;

scanf("%f",&x);

if()

y=;

elseif()

y=;

else

printf("x=%f,y=%f",x,y);

}

相关知识点:

if语句的嵌套;数学函数的调用方式。

5.写程序实现以下函数:

用scanf函数输入x的值,求y值。

运行程序,输入x的值(分别为x<1、1≤x<10、x>10三种情况),检查输出的y值是否正确。

6.编写程序,要求对输入的数字1~7转换成文字星期几,对其它数字不转换。

例如,输入5时,程序应该输出Friday。

7.程序求1+…+100,填空,实现该功能。

#include

voidmain()

{

ints,i;

s=0;/*第5行*/

for()

s=s+i;

printf("1+...+100=%d\n",s);

}

8.若输入12345,分析输出结果是多少?

上机验证。

#include

voidmain()

{longdata;

scanf("%ld",&data);

while(data)

{printf("%ld,",data%10);

data=data/10;

}

}

9.填空完成程序,程序输入一批考试分数,用1作为结束标志,若输入大于100分,则提示重新输入,然后计算最高分、最低分与平均分。

请调试、检查程序中的错误,并改正之。

#include

voidmain()

{intmark;

intn=0,sum=0;

intmax=0,min=100;

for(;;)

{scanf("%d",&mark);

if(mark>100)

{printf("Mark>100,Pleasereinput\n");

___________;

}

if(mark==-1)

___________;

n++;

sum=sum+mark;

if(___________)

max=mark;

if(___________)

min=mark;

}

sum=sum/n;

printf("max=%d,min=%d,aver=%d\n",max,min,sum);

}

10程:

输入20个1~90的整数,分类统计1~30、31~60、61~90的数各有多少个?

编程点拨:

(1)count1计1~30的个数,count2计31~60的个数,count3计61~90的个数。

(2)用for循环20次实现该程序的功能:

输入一个整数x,判断该数所在的范围,若x是1~30,则count1加1;若x是31~60,则count2加1;若x是61~90,则count3加1。

(3)最后,输出统计的结果。

#include

voidmain()

{intcount1=0,count2=0,count3=0;

inti,x;

printf(“Pleaseinput20numbers:

”);

for(i=0;i<20;i++)

{scanf(“%d”,&x);

………/*补充完成程序*/

}

/*输出统计结果*/

……………

}

补充完成该程序。

11.编程:

素数是除了1和其本身以外,不能被其他自然数整除的自然数。

从键盘输入一个数,判断该数是不是素数?

编程点拨:

a)输入这个数x。

b)用for循环2~x-1,用2~x-1的每一个数去除x,若有一个数整除x,则说明x不是素数;否则,x就是素数。

c)最后,将判断结果输出。

#include

voidmain()

{inti,x;

printf("Enteronenaturalinteger:

");

scanf("%d",&x);

for(i=2;i

……………

}

12.编程:

显示所有的水仙花数。

谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。

例,153是水仙花数,因为153=13+53+33。

有两种解题思路,选择其中之一编程实现:

13.调试下列程序,使之具有如下功能:

输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。

写出调试过程。

#inclue

#defineN10

voidmain()

{inti,a[N],av;

for(i=0;i

     scanf("%d",a[i]);

     for(i=0;i

        {printf("%d",a[i]);

          if(i%3==0)

            printf("\n");

         }

      for(i=0;i!

=N;i++)

         av+=a[i];

      printf("av=%f\n",av);

  }

14.有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。

程序的初始说明和输出语句如下所示,请补充完成该程序。

#include

voidmain()

{inti,j,row,colum,max;

staticinta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};

……

printf("Max=%d,Row=%d,Colum=%d\n",max,row,colum);

}

15.数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。

编程点拨:

1输入要查找的变量x的值;

2使用循环将输入的数和数组元素逐个进行比较,若找到,则提前退出循环;

3根据循环是正常结束还是提前结束来判断是否找到x。

部分源代码:

#include

voidmain()

{inti,x,a[10]={1,2,3,4,5,6,7,8,9,10};

/*输入x变量的值*/

for(i=0;i<10;i++)printf("%4d",a[i]);

printf("\n");

/*循环查找与x相等的元素*/

if()

printf("%d\n",i);/*输出查找结论,输出下标值*/

else

printf("Notfound%d\n",x);

}

16.编写程序,任意输入10个从大到小的整数数列,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

部分源代码:

#include

#defineN11

voidmain()

{inti,j,a[N];

printf(“Pleaseinput10numbers:

”);

for(i=0;i

scanf(“%d”,&a[i]);/*乱序输入10个整数*/

……

}

相关知识:

①比较排序法、选择排序法和冒泡排序法;②数据元素的插入。

17.输入十个互不相同的整数并存在数组中,找出最大元素,并删除。

18.以下程序的功能是:

从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

请填空:

#include

voidmain()

{floatx[1000],sum=0.0,ave,a;

intn=0,i;

printf("Entermark:

\n");

scanf("%f",&a);

while(a>=0.0&&n<1000)

{sum+=;

x[n]=;

n++;

scanf("%f",&a);

}

ave=;

printf("Output:

\n");

printf("ave=%f\n",ave);

for(i=0;i

if()

printf("%f\n",x[i]);

}

19.综合编程题:

打印如下杨辉三角形

1

11

121

1331

14641

15101051

编程点拨:

杨辉三角形有如下特点:

1只有下半三角形有确定的值;

2第一列和对角线上的元素值都是1;

3其它元素值均是前一行同一列元素与前一行前一列元素之和。

20.调试下列程序,使之具有如下功能:

任意输入两个字符串(如:

“abc123”和“china”),并存放在a,b两个数组中。

然后把较短的字符串放在a数组,较长的字符串放在b数组。

并输出。

#include

#include

voidmain()

{chara[10],b[10];

intc,d,k,ch;

scanf("%s",&a);

scanf("%s",&b);

printf("a=%s,b=%s\n",a,b);

c=strlen(a);

d=strlen(b);

if(c>d)

for(k=0;k

{ch=a[k];a[k]=b[k];b[k]=ch;}

printf("a=%s\n",a);

printf("b=%s\n",b);

}

21.阅读下面的程序,然后回答后面的问题:

#include

#include

voidmain()

{chars1[80],s2[40];

inti=0,j=0;

printf("\nPleaseinputstring1:

");

scanf("%s",s1);

printf("\nPleaseinputstring2:

");

scanf("%s",s2);

while(s1[i]!

='\0')

i++;

while(s2[j]!

='\0')

s1[i++]=s2[j++];

s1[i]='\0';

printf("\nNewstring:

%s",s1);

}

编辑、运行该程序,然后分别输入 Country和side。

请问:

 程序执行的结果是什么?

 该程序的功能是什么?

 

22.填空完成程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。

例如:

输入的两个字符串分别为abcdefg和abceef,则输出为-1。

程序如下:

#include

voidmain()

{charstr1[100],str2[100];

inti,s;

printf("\nInputstring1:

\n");gets(str1);

printf(“\nInputstring2:

\n”);gets(str2);

i=

(1);

while((str1[i]==str2[i])&&(str1[i]!

=

(2)))

i++;

s=(3);

printf("%d\n",s);

}

23.填空完成程序,使其的功能是统计从终端输入字符中每个大写字母的个数。

用#号作为输入结束标志。

程序如下:

#include

#include

voidmain()

{intnum[26],i;charc;

for(i=0;i<26;i++)num[i]=0;

while(

(1)!

='#')/*统计从终端输入的大写字母个数*/

if(isupper(c))num[c-65]

(2);

for(i=0;i<26;i++)/*输出大写字母和该字母的个数*/

if(num[i])printf("%c:

%d\n",i(3),num[i]);

}

24.编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。

如:

输入"BEIJING"、"123"和位置3,则输出:

"BEI123JING123"。

25.阅读程序,注意在调试时F11和F10的区别,还要注意函数调用过程中形参、实参的关系。

#include

voidmain()

{intx=10,y=20;

voidswap(int,int);

printf("

(1)inmain:

x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4)inmain:

x=%d,y=%d\n",x,y);

}

voidswap(intm,intn)

{inttemp;

printf("

(2)inmain:

m=%d,n=%d\n",m,n);

temp=m;m=n;n=temp;

printf("(3)inmain:

m=%d,n=%d\n",m,n);

}

26.下列程序是实现求素数的,请填空完成该程序,并上机运行测试。

#include

#include

voidmain()

{intm;

;/*申明求素数函数*/

printf("Pleaseinputadatam=:

");

scanf("%d",&m);

;/*调用求素数函数*/

}

voidprime(intn)

{inti,k;

k=sqrt(n);

for(i=2;i<=k;i++)

if(___________;)

break;

if(___________)

printf("Thisisaprimenumber");

elseprintf("Thisisn’taprimenumber");

}

27.下列程序的功能是从键盘上输入的若干个数并求出最大值。

请填空完成该程序。

#include

voidmain()

{inti;

ints[10],max;

/*Findmax()函数的申明*/

;

printf("Input10number:

\n");

/*输入10个数据到s数组中*/

;

/*调用Findmax函数*/

;

for(i=0;i<10;i++)

printf("%4d",s[i]);

printf("\nthemaxis%d",max);

}

intFindmax(intx[],intn)

{intmax,i;

___________;

for(i=1;i

if(___________)

max=x[i];

returnmax;

}

28.下列程序的功能是从键盘上输入的若干个数按升序排序。

请填空完成该程序。

#include

voidmain()

{inti,k;

floats[100],j;

printf("Inputnumber:

\n");

for(i=0;scanf("%f",&j);i++)

s[i]=j;

_________;

for(k=0;_________;k++)

printf("%f",s[k]);

printf("\n");

}

voidsort(floatx[],intn)

{inti,j,temp,min;

for(i=0;i

{_________;

for(j=i+1;j

if(_________)

min=j;

if(min!

=i)

{temp=x[i];

x[i]=x[min];

x[min]=temp;

}

}

}

29.编写程序,实现由主函数输入m、n,按下述公式计算并输出

的值。

提示:

定义一个求阶层的函数,然后在主函数中调用三次即可求得。

30.上机调试程序,观察静态局部变量在调用过程中的变化。

#include

voidmain()

{inti;

intf(int);

for(i=1;i<=5;i++)

printf("(%d):

%d\n",i,f(i));

printf("\n");

}

intf(intn)

{staticintj=1;

j=j*n;

return(j);

}

31.上机验证以下程序的运行结果

#include

voidmain()

{inti,a[]={1,2,3},*p;

p=a;/*将数组a首地址赋给指针p*/

for(i=0;i<3;i++)

printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));

}

32.编写程序,使之具有如下功能:

用指针法输入12个数,然后按每行4个数输出。

33.编写下列程序的sum函数和swap函数,使之具有如下功能:

任意输入2个数,调用两个函数分别求:

  ⑴2个数的和,   ⑵2个数交换值。

#include

voidmain()

{inta,b,c,*p=&c;

voidsum(int,int,int*);

voidswap(int*,int*);

scanf("%d,%d",&a,&b);

sum(a,b,p);

swap(&a,&b);

printf("sum=%d\n",c);

printf("a=%d,b=%d\n",a,b);

}

voidsum(inta,intb,int*c)

{

}

voidswap(int*a,int*b)

{

}

34.下面的程序是用来从键盘输入是个整数,然后求出其中的最小值。

填写空缺部分。

#include

inttable[10];

voidlookup(int*t,int*a,intn)

{intk;

*a=t[0];

for(k=1;k

if()*a=t[k];

}

voidmain()

{intk,min,*p=&min;

for(k=0;k<10;k++)

scanf("%d",table+k);

lookup(,,10);

printf("min=%d\n",min);

}

35.编程题:

已知一个整型数组a[5],其各元素值为4,6,8,10,12。

使用指针求该数组元素之积。

36.阅读下面的程序。

voidmain()

{

chara[]="Iamaboy.",b[20],*p1,*p2;

inti;

p1=a;p2=b;

for(;*p1!

=’\0’;p1++,p2++)

*p2=*p1;

p2=’\0’;

printf("stringais:

%s\n",a);

printf("stringbis:

");

for(i=0;b[i]!

=’\0’;i++)

printf("%c",b[i]);

}

编辑、运行该程序,然后分别输入 Country和side。

请问:

 程序执行的结果是什么?

 该程序的功能是什么?

 

 

37.以下是一个编写input()和output()函数输入,输出5个学生的数据记录;请在空白处填上适当的语句。

#include

#defineN5

 

structstudent

{charnum[6];

 charname[8];

 int score[4];

}stu[N];

 

voidinput(structstudentstu[])

{inti,j;

 for(i=0;i

 {

      printf("\n请输入%d个学生中第%d个的信息:

\n",N,i+1);

      printf("学号:

");

      scanf("%s",           );

      printf("姓名:

");

      scanf("%s",          );

      for(j=0;j<3;j++)

      {

       printf("成绩%d:

",,j+1);

             scanf("%d",            );

      }

      printf("\n");

 }

}

 

voidprint(structstudentstu[])

{

      inti,j;

   printf("----------------------------------------\n");

printf("\n学号 姓名     成绩1  成绩2  成绩3\n");

printf("----------------------------------------\n");

   for(i=0;i

      {

             printf("%-6s%-10s",stu[i].num,stu[i].name);

       for(j=0;j<3;j++)

                    printf("%-8d",           );

             printf("\n");

      }

      printf("---------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1