C语言程序知识学习-填空题.doc
《C语言程序知识学习-填空题.doc》由会员分享,可在线阅读,更多相关《C语言程序知识学习-填空题.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include main() int a,b; scanf(“%d%d“,&a,&b); printf(“
2、a=%d,b=%dn“,a,b); a= ; b= ; a= ; printf(“a=%d,b=%dn“,a,b);【3.2】下面程序的功能是根据近似公式:2/6 1/12+1/22+1/32+ +1/n2,求 值。#include double pi(long n) double s=0.0; long i; for(i=1;iamax) amax=x; if( ) amin=x; scanf(“%f“,&x); printf(“namax=%fnamin=%fn“,amax,amin); 【3.7】下面程序的功能是将形参 x 的值转换为二进制数,所得的二进制数放在一个 一维数组中返回,二进
3、制数的最低位放在下标为 0 的元素中。fun(int x,int b) int k=0,r;do r=x% ; bk+=r; x/= ; while(x); 【3.8】下面程序的功能是输出 1 到 100 之间每位数的乘积大于每位数的和的数。例如数字 26,数位上数字的乘积 12 大于数字之和 8。main() int n,k=1,s=0,m; for(n=1;ns) printf(“%d“,n); 【3.9】下面程序的功能是统计用 0 至 9 之间的不同的数字组成的三位数的个数。main() int i,j,k,count=0; for(i=1;i main() ; int i,j; pri
4、ntf(“Input 10 numbers pleasen“); for(i=0; ;i+ ) scanf(“%f“, &ai);printf(“n“); for(i=2; ;i+ ) for(j=0; ;j+ )if( ) x=aj; ; aj+1=x; printf(“The sorted 10 numbers;n“); for(i=0; ;i+ ) if( ) printf(“n“); printf(“%ft“,ai); printf(“n“); 【3.13】下面程序的功能是读入 20 个整数,统计非负数个数,并计算非负数之和。#include “stdio.h“ main() int
5、i,a20,s,count; s=count=0; for(i=0;i main() char *s=“Beijing ligong daxue“; int i,j; for(i=j=0;si!=0;i+) if(si!= ) ; else ; sj= 0; printf(“%s“,s); 【3.15】下面程序的功能是将字符串 s 中所有的字符c删除。请选择填空。#include main( ) char s80; int i,j; gets(s); for(i=j=0;si!= 0;i+ ) if(si!= c) ; sj= 0; puts(s);【3.16】下面程序的功能是输出两个字符串中
6、对应相等的字符。请选择填空。#include char x=“programming“; char y=“Fortran“;main() int i=0;while(xi!= 0 & yi!= 0)if(xi=yi) printf(“%c“, );else i+; 【3.17】下面程序的功能是将字符串 s 中的每个字符按升序的规则插到数组 a 中, 字 符串 a 已排好序。#include main() char a20=“cehiknqtw“; char s=“fbla“; int i,k,j; for(k=0;sk!= 0;k+ ) j=0;while(sk=aj & aj!= 0 ) j
7、+;for( ) ; aj=sk; puts(a); 【3.18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符 串中第一个不相同字符的 ASCII 码之差。例如:输入的两个字符串分别为“abcdefg“ 和“abceef“,则输出为-1。#include main() char str1100,str2100,c; int i,s; printf(“Enter string 1: “); gets(str1); printf(“Enter string 2: “); gets(str2); i=0;while(str1i = str2i & str1i!= ) i+; s=
8、 ; printf(“%dn“, s); 【3.19】下面的函数 expand 在将字符串 s 复制到字符串 t 时, 将其中的换行符和 制表符转换为可见的转义字符表示,即用n表示换行符,用t表示制表符。expand(char s,char t) int i,j; for(i=j=0;si!= 0;i+ )switch (si) case n: t = ; tj+ = n; break; case t: t = ; tj+ = t; break; default: t = si; break; tj = ; 【3.20】下面的函数 index(char s, char t)检查字符串 s 中是
9、否包含字符串 t,若 包含,则返回 t 在 s 中的开始位置(下标值),否则送回-1。index(char s, char t) int i,j,k; for(i=0;si!= 0;i+ ) for(j=i,k=0; & sj=tk;j+,k+) ;if( ) return (i); return(-1); n 【3.21】下面程序的功能是计算 S= k! 。k=0 long fun(int n) int i; long s; for(i=1;i ;i+) s*=i; return( ); main() int k,n; long s; scanf(“%d“,&n); s= ; for(k=0
10、;ksk) ; return(k); 【3.23】下面程序的功能是由键盘输入 n,求满足下述条件的 x、y: nx 和 ny 的末 3 位数字相同,且 xy,x、y、n 均为自然数,并使 x+y 为最小。#include pow3(int n,int x) int i, last; for(last=1,i=1;idouble mysqrt( double a, double x0 ) double x1, y; x1 = ;if( fabs(x1-x0)0.00001 ) y = mysqrt( ); else y = x1; return( y ); main() double x; pr
11、intf(“Enter x: “); scanf(“%lf“, &x); printf(“The sqrt of %lf=%lfn“, x, mysqrt( x, 1.0) );【3.25】以下程序是计算学生的年龄。已知第一位最小的学生年龄为 10 岁,其余学 生的年龄一个比一个大 2 岁,求第 5 个学生的年龄。#include age( int n ) int c; if( n=1 ) c=10; else c= ; return(c); main() int n=5; printf(“age:%dn“, ); 【3.26】下面的函数 sum(int n)完成计算 1n 的累加和。sum(
12、int n) if(n void prt( char c, int n ) if( n0 ) printf( “%c“, c ); ; main() int i, n; scanf(“%d“, &n); for( i=1; i2 ) invent ( ,n-2); else ; 【3.35】从键盘上输入 10 个整数,程序按降序完成从大到小的排序。#include int array10;sort( int *p, int *q ) int *max, *s;if( ) return; max=p; for( s=p+1; s *max ) ; swap( ); sort( ); swap(
13、int *x, int *y ) int temp; temp=*x; *x=*y; *y=temp; main() int i; printf(“Enter data :n“); for( i=0; i void convert(char *a, int n) int i;if(i=n/10) !=0 ) convert( , i ); *a = ; char str10= “ “;main() int number; scanf(“%d“, &number); convert( str, number ); puts(str);【3.37】下面程序的功能是实现数组元素中值的逆转。#incl
14、ude main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10; invert(a,n-1); for(i=0;i int a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int i,j; for(i=0;i main ( ) char str81, *sptr; int i; for(i=0;iwp) ; for(i=*n;i=p;i-) ; wp=x; +*n; 【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然 后将它们合并,合并后的字符串按 ASCII 码值从小到大排序,并删去相同的字符。#
15、include strmerge(a,b,c) /* 将已排好序的字符串 a、b 合并到 c */ char *a,*b,*c; char t,*w; w=c;while( *a!= 0 *b!=0 ) t= ?*a+:*bsj ) main( ) char s1100,s2100,s3200; printf(“nPlease Input First String:“); scanf(“%s“,s1); printf(“nPlease Input Second String:“); scanf(“%s“,s2); strsort(s1); strsort(s2); = 0; strmerge(
16、s1,s2,s3); printf(“nResult:%s“,s3); 【3.42】已知某数列前两项为 2 和 3,其后继项根据前面最后两项的乘积,按下列 规则生成: 若乘积为一位数,则该乘积即为数列的后继项; 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个 后继项。 下面的程序输出该数列的前项及它们的和,其中,函数 sum(n,pa) 返回数列的前 N 项和,并将生成的前 N 项存入首指针为 pa 的数组中,程序中规定输入的 N 值必 须大于 2,且不超过给定的常数值 MAXNUM。例如:若输入的值为 10,则程序输出如下内容:sum(10)=44 2 3 6 1 8
17、 8 6 4 2 4 #include “stdio.h“ #define MAXNUM 100 int sum(n, pa) int n, *pa; int count, total, temp; *pa = 2; =3; total=5; count=2;while( count+ struct stuinf char name20; /* 学生姓名 */ int score; /* 学生成绩 */ stu, *p;main ( ) p=&stu; printf(“Enter name:“); gets( ); printf(“Enter score: “); scanf(“%d“, );
18、 printf(“Output: %s, %dn“, , ); 【3.44】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。查询时可连 续进行,直到输入 0 时才结束。 #include #include #define NUM 4 struct student int rank; char *name; float score; ; stu = 3,“liming“,89.3, 4,“zhanghua“,78.2, 1,“anli“,95.1, 2,“wangqi“,90.6 ;main() char str10; int i; do printf(“Enter a name“); s
19、canf(“%s“,str); for( i=0;i=NUM ) printf(“Not foundn“); while( strcmp(str,“0“)!=0 );【3.45】下面程序的功能是从终端上输入个人的年龄、性别 和姓名,然后输出。#include “stdio.h“ struct man char name20; unsigned age; char sex7; ;main ( ) struct man person5; data_in(person,5); data_out(person,5); data_in(struct man *p, int n ) struct man
20、*q = ; for( ;page, p-sex); ; data_out( struct man *p, int n ) struct man *q = _; for( ;pname, p-age, p-sex);【3.46】输入 N 个整数,储存输入的数及对应的序号,并将输入的数按从小到大的 顺序进行排列。要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定。 例如:输入的第 3 个整数为 5,第 7 个整数也为 5,则将先输入的整数 5 排在后输入 的整数 5 的前面。程序如下:#include “stdio.h“ #define N 10 struct int no; int n
21、um; arrayN;main( ) int i,j,num; for( i=0;i=0&arrayj.num num; ) arrayj+1=arrayj; array .num=num; array .no=i; for( i=0;i main( ) struct node char info; struct node *link; *top,*p; char c; top=NULL;while(c= getchar( ) ) p=(struct node *)malloc(sizeof(struct node); p-info=c; p-link=top; top=p; while( t
22、op ) ; top=top-link; putchar(p-info); free(p); 【3.48】下面函数将指针 p2 所指向的线性链表,串接到 p1 所指向的链表的末端。 假定 p1 所指向的链表非空。#define NULL 0 struct link float a; struct link *next; ; concatenate ( p1,p2 ) struct list *p1,*p2; if( p1-next=NULL ) p1-next=p2;else concatenate( ,p2);【3.49】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串。#in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 程序 知识 学习 填空
限制150内