1、导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include main() int a,b;scanf(“%d%d“,&a,&b);printf(“a=
2、%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;imain() ; int i,j;printf(“Input 10 number
4、s 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 i,a20,s,count;s=count=0;for(i
5、=0;imain() 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 删除。请选择填空。#includemain( ) char s80;int i,j;gets(s);for(i=j=0;si!= 0;i+ )if(si!= c) ;sj= 0;puts(s);【3.16】下面程序的功能是输出两个字符串中对应相等的字符。请选择填空。#include char x=“programming“;c
6、har y=“Fortran“;main() int i=0;while(xi!= 0 & yi!= 0)if(xi=yi)printf(“%c“, );elsei+;【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+;for( ) ;aj=sk;puts(a);【3.18】下面程序的功能是对键盘输入的两个字符串进行比较
7、,然后输出两个字符串中第一个不相同字符的 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= ;printf(“%dn“, s);【3.19】下面的函数 expand 在将字符串 s 复制到字符串 t 时, 将其中的
8、换行符和制表符转换为可见的转义字符表示,即用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 中是否包含字符串 t,若包含,则返回 t 在 s 中的开始位置(下标值),否则送回-1。index(char s, char t) int i,j,k;f
9、or(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=0long 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;ksk) ;return(k);【3.23】下面程序的功能是由键盘输入 n,求满足下述条件的 x、y :nx 和 ny 的末 3 位数字相同,且 xy,x、y、n 均为自然数
10、,并使 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;printf(“Enter x: “);scanf(“%lf“, &x);printf(“The sqrt of %lf=%lfn“, x, mysqrt( x, 1.0) );【3.25】以下程序
11、是计算学生的年龄。已知第一位最小的学生年龄为 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(int n) if(nvoid prt( char c, int n ) if( n0 ) printf( “%c“, c ); ;main() int i, n;scanf(“%d“, &n);for( i=1
12、; 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( int *x, int *y ) int temp;temp=*x;*x=*y;*y=temp;main() int i; printf(“Enter data :n“); for( i=0; ivoid convert(ch
13、ar *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】下面程序的功能是实现数组元素中值的逆转。#include main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10;invert(a,n-1);for(i=0;iint a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a;main() int
14、i,j;for(i=0;imain ( ) char str81, *sptr;int i;for(i=0;iwp) ;for(i=*n;i=p;i-) ;wp=x;+*n;【3.41】下面程序的功能是从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按 ASCII 码值从小到大排序,并删去相同的字符。#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
15、,s2100,s3200;printf(“nPlease Input First String:“);scanf(“%s“,s1);printf(“nPlease Input Second String:“);scanf(“%s“,s2);strsort(s1);strsort(s2); = 0;strmerge(s1, s2,s3);printf(“nResult:%s“,s3) ;【3.42】已知某数列前两项为 2 和 3,其后继项根据前面最后两项的乘积,按下列规则生成: 若乘积为一位数,则该乘积即为数列的后继项; 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依次作为数列的两个后继
16、项。下面的程序输出该数列的前项及它们的和,其中,函数 sum(n,pa) 返回数列的前N 项和,并将生成的前 N 项存入首指针为 pa 的数组中,程序中规定输入的 N 值必须大于 2,且不超过给定的常数值 MAXNUM。例如:若输入的值为 10,则程序输出如下内容:sum(10)=442 3 6 1 8 8 6 4 2 4#include “stdio.h“#define MAXNUM 100int sum(n, pa)int n, *pa; int count, total, temp;*pa = 2; =3;total=5;count=2;while( count+struct stuin
17、f char name20; /* 学生姓名 */int score; /* 学生成绩 */ stu, *p;main ( ) p=&stu;printf(“Enter name:“);gets( ) ;printf(“Enter score: “);scanf(“%d“, );printf(“Output: %s, %dn“, , ) ;【3.44】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩。查询时可连续进行,直到输入 0 时才结束。 #include #include #define NUM 4 struct student int rank;char *name;float s
18、core; 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“); scanf(“%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);
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。