13机制本科C语言程序设计复习资料.docx
- 文档编号:28356796
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:20
- 大小:33.42KB
13机制本科C语言程序设计复习资料.docx
《13机制本科C语言程序设计复习资料.docx》由会员分享,可在线阅读,更多相关《13机制本科C语言程序设计复习资料.docx(20页珍藏版)》请在冰豆网上搜索。
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("---------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 机制 本科 语言程序设计 复习资料