欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOCX文档下载
 

C语言程序设计程序填空题库及答案

  • 资源ID:148206370       资源大小:57.46KB        全文页数:67页
  • 资源格式: DOCX        下载积分:50积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要50积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

C语言程序设计程序填空题库及答案

导读:在程序填空题中,已经给出了程序的主干,读者首先要理 解程序的思路,再选择正确的内容填入空白处,使程序完成既定 的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。 本节习题的难度适中,可能有些典型的程序在课堂上已经有所接 触,读者一定要独立完成它,这样就可以逐步提高自己的编程能 力。在程序设计语言学习的中期,读者对程序设计已经有了初步 的了解,而自己编写程序又不知从何处入手,此时解答此类题目 可以避免盲目性,从而提高学习的效率。【】下面程序的功能是不用第三个变量,实现两个数的对调操作 #include <> main() int a,b ;scanf("%d%d",&a,&b); printf("a=%d,b=%dn",a,b); a= ; b= ; a= ;printf("a=%d,b=%dn",a,b);【】下面程序的功能是根据近似公式:兀2/6匕1/12+1/22+1/32+ +l/n2,求 n 值。#include <> double pi(long n) double s= ; long i; for(i=l ;i<=n;i+) s=s+ ; return( );【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) int p; for(p=0,*k=p;p<t;p+) if(sp<s*k) ; main() int al0,i,*k=&i; for(i=0;i<l0;i+) scanf("%d",&ai); findmin(a,l0,k);printf("%d,%dn",*k,a*k);【】下面程序的功能是计算1-3+5-7+-99+101的值。main() int i,t=1,s=0;for(i=1;i<=101;i+=2);s=s+t; ; printf("%dn",s);【】有以下程序段:s=;for(k=1 ;k<=n;k+)s=s+(k*(k+1);printf("%fn",s);填空完成下述程序,使之与上述程序的功能完全相同。 s=; ;k=0;do s=s+d ; ;d=(k*(k+1);while( );printf("%fn",s);【】下面程序的功能是从键盘上输入若干学生的学习成绩,统计并 输出最高成绩和最低成绩,当输入为负数时结束输入。main() float x,amax,amin ;scanf("%f",&x);amax=x;amin=x;while( ) if(x>amax) amax=x ;if( ) amin=x;scanf("%f",&x);printf("namax=%fnamin=%fn",amax,amin);【】下面程序的功能是将形参x的值转换为二进制数,所得的二进 制数放在一个一维数组中返回,二进制数的最低位放在下标为 0的 元素中。fun(int x,int b) int k=0,r ; do r=x% ; bk+=r; x/= ; while(x);【 】下面程序的功能是输出1到100之间每位数的乘积大于每位数 的和的数。例如数字 26,数位上数字的乘积 12大于数字之和8。 main() int n,k=1,s=0,m ; for(n=1;n<=100;n+) k=1 ;s=0; while( ) k*=m%10 ; s+=m%10; ;if(k>s)printf("%d",n);【】下面程序的功能是统计用0 至9 之间的不同的数字组成的三位 数的个数。main() int i,j,k,count=0 ; for(i=1;i<=9;i+) for(j=0;j<=9;j+) if( ) continue; else for(k=0;k<=9;k+) if( ) count+; printf("%d",count);【】下面程序的功能是输出 100 以内的个位数为 6、且能被 3 整除 的所有数。main() int i,j ;for(i=0; ;i+) j=i*10+6 ;if( ) countinue; printf("%d",j);【】下面程序的功能是用辗转相除法求两个正整数m和n的最大公 约数。hcf(int m,int n) int r; if(m<n) r=m;n=r;r=m%n; while( ) m=n;n=r; r=m%n; ;【】下面程序的功能是使用冒泡法对输入的 10 个浮点数从小到大 进行排序。排好序的 10 个数分两行输出。程序如下: #include <>main();int i,j;printf("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");【】下面程序的功能是读入 20 个整数,统计非负数个数,并计算 非负数之和。#include ""main() int i,a20,s,count ; s=count=0; for(i=0;i<20;i+ ) scanf("%d", ); for(i=0;i<20;i+) if(ai<0);s+=ai; count+;printf("s=%dt count=%dn",s,count);】下面程序的功能是删除字符串 s 中的空格。#include <> main() char *s="Beijing ligong daxue" ;int i,j;for(i=j=0;si!='0';i+)if(si!= ' ') ;else ;sj= '0'; printf("%s",s);【】下面程序的功能是将字符串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);【】下面程序的功能是输出两个字符串中对应相等的字符。请选择 填空。#include <>char x="programming";char y="Fortran";main() int i=0 ;while(xi!= '0' && yi!= '0')if(xi=yi)printf("%c", );elsei+;【】下面程序的功能是将字符串 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);【】下面程序的功能是对键盘输入的两个字符串进行比较,然后输 出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的 两个字符串分别为"abcdefg"和"abceef",则输出为-1。#include <>main() char str 1 1 00,str2 1 00,c ;int i,s;printf("Enter string 1: "); g ets(str 1 );printf("Enter string 2: "); gets(str2);i=0;while(str1i = str2i && str1i!= ) i+; s= ;printf("%dn", s);【】下面的函数 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 = ;【】下面的函数index(char s, char t)检查字符串s中是否包含字 符串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【】下面程序的功能是计算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;k<=n;k+) s+= ; printf("%ldn",s); 【】下面程序的功能是显示具有n个元素的数组s中的最大元素。#define N 20main() int i,aN; for(i=0;i<N;i+) scanf("%d",&ai); printf("%dn", );fmax(int s,int n) int k,p;for(p=0,k=p;p<n;p+)if(sp>sk) ;return(k);【】下面程序的功能是由键盘输入n,求满足下述条件的x、y: nx和ny的末3位数字相同,且x手y x、y、n均为自然数,并使 x+y 为最小。#include <> pow3(int n,int x) int i, last;for(last=1,i=1;i<=x;i+ )last= ;return(last);main() int x,n,min,flag=1;scanf("%d", &n);for(min=2;flag;min+) for(x=1;x<min && flag;x+ ) if( && pow3(n,x)=pow3(n,min-x) printf("x=%d,y=%dn", x, min-x ) ; ;【】下面的程序是用递归算法求a的平方根。求平方根的迭代公式如下:#include <>double mysqrt( double a, double x0 ) double x1, y ;x1 = ;if( fabs(x1-x0)> )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, ); 【】以下程序是计算学生的年龄。已知第一位最小的学生年龄为 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", );【】下面的函数sum(int n)完成计算1n的累加和。sum(int n) if(n<=0)printf("data errorn");if(n=1) ;else ;【】下面的函数是一个求阶乘的递归调用函数。facto(int n) if( n = 1 ) ;else return( );【】组合问题,由组合的基本性质可知:(1) C(m,n)=C(n-m,n)(2) C(m,n+1)=C(m,n)+C(m-1,n)公式 (2)是一个递归公式,一直到满足 C(1,n)=n 为止。当 n<2*m 时,可先用公式(1) 进行简化,填写程序中的空白,使程序可以正 确运行。#include""main() int m,n ;printf("Input m,n=");scanf("%d%d", &m, &n);printf("The combination numbeers is %dn", combin(m,n) ; combin( int m, int n) int com ;if( n<2*m ) m=n-m;if( m=0 ) com=1;else if(m=1) ;else ;return(com);【】下列函数是求一个字符串str的长度。 int strlen( char *str ) if( ) return (0); else return ( );【】用递归实现将输入小于 32768 的整数按逆序输出。如输入 12345,则输出 54321 。#include""main() int n ;printf("Input n : ");scanf("%d", );r(n); printf("n");r( int m ) printf("%d", );m = ;if( );【】输入 n 值,输出高度为 n 的等边三角形。例如当 n=4 时的图形 如下:*x* *x*Y* *Y* *y* *Y*x* *x* *x# *x# *x# *x# *x#*Y* *Y* *y* *Y* *Y* *T*#include <>void prt( char c, int n ) if( n>0 ) printf( "%c", c ) ; ;main() int i, n ; scanf("%d", &n);for( i=1;i<=n;i+ ); printf("n");【】下面的函数实现N层嵌套平方根的计算。double y(double x, int n) if( n=0 ) return(0); else return ( sqrt(x+( ) );【】函数revstr(s)将字符串s置逆,如输入的实参s为字符串 "abcde",则返回时s为字符串"edcba"。递归程序如下: revstr( char *s ) char *p=s, c; while(*p) p+; ; if(s<p) c=*s;*s=*p; ;revstr(s+1); ;如下是由非递归实现的revstr(s)函数:revstr (s) char *s; char *p=s, c ;while( *p ) p+; ;while( s<p ) c=*s ; = *p ;*p- = c;【】下面函数用递归调用的方法,将 str 中存放的长度为 n 的字符 串反转过来,例如原来是"ABCDE",反序为"EDCBA"。void invent(char *str, int n) char t ;t=*str; *str=*(str+n-1); *(str+n-1)=t; if( n>2 ) invent ( , n-2); else ;【】从键盘上输入 10个整数,程序按降序完成从大到小的排序。#include <>int array10;sort( int *p, int *q ) int *max, *s ;if( )return;max=p; for( s=p+1; s<=q; s+) if( *s > *max ) ; swap( );sort( ); swap( int *x, int *y ) int temp; temp=*x;*x=*y;*y=temp;i+)main() int i; printf("Enter data :n") ; for( i=0; i<10 scanf("%d", &arrayi); sort( ); printf("Output:");for( i=0; i<10; i+) printf("%d ", arrayi);【】下面函数的功能是将一个整数存放到一个数组中。存放时按逆 序存放。例如:483 存放成"384"。#include <>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);【】下面程序的功能是实现数组元素中值的逆转。#include <>main() int i,n=10,a10=1,2,3,4,5,6,7,8,9,10 ;invert(a,n-1);for(i=0;i<10;i+)printf("%4d",ai);printf("n");invert(int *s,int num) int *t,k ; t=s+num; while( ) k=*s ;*s=*t;*t=k; ; ;【】下面程序通过指向整型的指针将数组a34的内容按3行x 4 列的格式输出,请给 printf( )填入适当的参数,使之通过指针 p 将 数组元素按要求输出。#include <>int a34=1,2,3,4,5,6,7,8,9,10,11,12, *p=a; main() int i,j ; for(i=0;i<3;i+ ) for(j=0 ; j<4 ; j+ ) printf("%4d ", );【】下面程序的功能是:从键盘上输入一行字符,存入一个字符数 组中,然后输出该字符串。#include <>main ( ) char str81, *sptr ;int i;for(i=0;i<80;i+ ) stri=getchar( ) ;if(stri= 'n') break;stri= ;sptr=str;while( *sptr )putchar( *sptr );【】下面函数的功能是将字符变量的值插入已经按 ASCII 码值从小 到大排好序的字符串中。void fun(char *w,char x,int *n) int i,p=0 ;while(x>wp) ;for(i=*n;i>=p;i-) ;wp=x;+*n;【】下面程序的功能是从键盘上输入两个字符串,对两个字符串分 别排序;然后将它们合并,合并后的字符串按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+:*bv*a *b+ :();/* 将*a、*b 的小者存入 t */if( *w '0' ) *w=t;else if( t*w) *+w=t;/*将与水不相同的t存入w */while( *a != '0' ) /*以下将a或b中剩下的字符存入w */if( *a != *w ) *+w=*a+;else a+; while( *b != '0')if( *b != *w ) *+w=*b+;else b+;*+w = ;strsort( char *s ) /* 将字符串 s 中的字符排序 */ int i , j , n ;char t,*w;for( n=0;*w != '0'; )w+;for( i=0;i<n-1;i+ )for( j=i+1;j<n;j+ )if( si>sj )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(s1,s2,s3); printf("nResult:%s",s3);【】已知某数列前两项为 2 和 3,其后继项根据前面最后两项的乘 积,按下列规则生成: 若乘积为一位数,则该乘积即为数列的后继项; 若乘积为二位数,则该乘积的十位上的数字和个位上的数字依 次作为数列的两个后继项。下面的程序输出该数列的前N项及它们的和,其中,函数sum(n,pa) 返回数列的前 N 项和,并将生成的前 N 项存入首指针为 pa 的数组 中,程序中规定输入的 N 值必须大于 2,且不超过给定的常数值 MAXNUM。例如:若输入N的值为10,则程序输出如下内容:sum(10)=442 3 6 1 8 8 6 4 2 4#include ""#define MAXNUM 100int sum(n, pa)int n, *pa; int count, total, temp ;*pa = 2; =3 ; total=5; count=2; while( count+<n ) temp = *(pa-1) * *pa if( temp<10 ) total += temp ; *(+pa) = temp;else = temp/10 ; total += *pa; if( count<n ) count + ; pa+ ; = temp%10 ; total += *pa; ;main() int n, *p, *q, numMAXNUM ; do printf("Input N= (2<N<%d):", MAXNUM+1) ; scanf("%d", &n);while( ); printf("nsum(%d)=%dn", n, sum(n, num) ; for( p=num, q = ; p<q; p+ ) printf("%4d", *p); printf("n");【】下面程序的功能是输入学生的姓名和成绩,然后输出 #include <>struct stuinf char name20 ; /* 学生姓名 */ int score; /* 学生成绩 */ stu, *p ; main ( ) p=&stu ; printf("Enter name:"); gets( ); printf("Enter score: ");scanf("%d", );printf("Output: %s, %dn", , );【】下面程序的功能是按学生的姓名查询其成绩排名和平均成绩 查询时可连续进行,直到输入 0 时才结束。 #include <>#include <>#define NUM 4 struct student int rank ;char *name;float score; ; stu = 3,"liming", 4 ,"zhanghua", 1 ,"anli", 2 ,"wangqi",;main() char str10 ; int i ;do printf("Enter a name") ; scanf("%s" ,str); for( i=0 ;i<NUM;i+ ) if( ) printf("Name :%8sn" ,stui.name); printf("Rank :%3dn" ,stui.rank); printf("Average :%5.1fn" ,stui.score); ; if( i>=NUM ) printf("Not foundn") ; while( strcmp(str ,"0")!=0 );【】下面程序的功能是从终端上输入5个人的年龄、性别和姓名, 然后输出。#include "" 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 *q = ;for( ;p<q;p+ ) printf( "age:sex:name" ) ;scanf("%u%s", &p->age, p->sex);data_out( struct man *p, int n ) struct man *q = _ _;for( ;p<q;p+ )printf("%s;%u;%sn", p->name, p->age, p->sex);【】输入 N 个整数,储存输入的数及对应的序号,并将输入的数按从小到大的顺序 进行排列。要求:当两个整数相等时,整数的排列顺序由输入的先后次序决定。例 如:输入的第3个整数为5,第7个整数也为5,则将先输入的整数 5排在后输入的 整数 5 的前面。程序如下:#include "" #define N 10struct int no ;int num; arrayN ;main( ) int i,j, num;for( i=0;i<N;i+ ) printf("enter No. %d:" ,i); scanf("%d",&num);for( ;j>=0&&arrayj.num num; ) arrayj+1=arrayj; array .num=num; array .no=i;for( i=0;i<N;i+ )printf("%d=%d,%dn",i,arrayi.num,arrayi.no);【】以下程序的功能是:读入一行字符(如:a、.y、z),按输入时的逆序建立一个链 接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输 出,并释放全部结点。#include <>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( top ); top=top->link; putchar(p->info); free(p);【】下面函数将指针 p2 所指向的线性链表,串接到 p1 所指向的链表的末端。假定 p1 所指向的链表非空。#define NULL 0struct link float a ;struct link *next; ;concatenate ( p1,p2 )struct list *p1,*p2; if( p1->next=NULL )p1->next=p2;elseconcatenate( ,p2);【】下面程序的功能是从键盘输入一个字符串,然后反序输出输入的字符串#include <>struct node char data ;struct node *link;*head;main() char ch ;struct node *p;head = NULL;while( ch=getchar()!='n' ) p = (struct node *)malloc(sizeof(struct node) ; p->data = ch;p->link = ;head = ;while( p!=NULL ) printf("%c ", p->data) ;p = p->link ;【】下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于 0 时才停止输 入。然后反序输出这些整数。#include <>struct data int x ;struct data *link;*p;input() int num ; struct data *q; printf("Enter data:") scanf("%d", &num) if( num<0 );q->x = num; q->link = p;p=q;main() printf("Enter data until data<0:n") ;p=NULL;input();printf("Output:");while( ) printf("%dn", p->x) ;【】下面函数的功能是创建一个带有头结点的链表,将头结点返回给主调函数。链表用于储存学生的学号和成绩。新产生的结点总是位于链表的尾部。struct student long num ;int score;struct student *next;struct student *creat() struct student *head=NULL,*tail long num; int a;tail= malloc(LEN);do scanf("%ld,%d",&num,&a) ; if(num!=0) if(head=NULL) head=tail ;else ;tail->num=num; tail->score=a; tail->next=(struct student *)malloc(LEN);else tail->next=NULL;while(num!=0);return( );【】下面 create 函数的功能是建立一个带头结点的单向链表,新产生的结点总是插入 在链表的末尾。单向链表的头指针作为函数值返回。#include <>#define LEN sizeof(struct student)struct student long num ;int score; struct student *next; struct student *creat() struct student *head=NULL,*tail long num;int a;tail=( )malloc(LEN);do scanf("%ld,%d",&num,&a) ; if(num!=0) if(head=NULL) head=tail ; else tail=tail->next; tail->num=num; tail->score=a; tail->next=( )malloc(LEN);else tail->next=NULL;while(num!=0); ;【】下面程序的功能是统计文件中的字符的个数#include <>main() long num=0 ; *fp ;if(fp=fopen("", "r")=NULL) printf("Can't open the file! ") ;exit(0);while( ) fgetc(fp) ;num+;printf("num=%dn",num);fclose(fp);【】下面程序的功能是把从键盘输入的文件(用 作为文件结束标志)复制到一个 名为的新文件中。#include <>FILE *fp;main() char ch ;if(fp=fopen( )=NULL)exit(0);while(ch=getchar()!='')fputc(ch,fp);【】下面程序的功能是将磁盘上的一个文件复制到另一个文件中,两个文件名在命令 行中给出(假定给定的文件名无误)。#include <>main(int argc,char *argv) FILE &f1,*f2 ;if(argc< ) printf("The command line error! ") ;exit(0);f1=fopen(argv1, "r");f2=fopen(arhv2, "w");while( )fputs(fgetc(f1), ); ; ;【】下面程序的功能是根据命令行参数分别实现一个正整数的累加或阶乘。例如:如 果可执行文件的文件名是sm,则执行该程序时输入:"sm + 10",可以实现10的累 加;输入: "sm - 10",可以实现求10的阶乘。#include <>#include <>main (int argc,char *argv) int n ;void sum(),mult();void (*funcp)();n=atoi(argv2);if(argc!=3 | n<=0)dispform( );switch ( ) case '+': funcp=sum ;break;case '-': funcp=mult;break;default: dispform( );void sum(int m) int i,s=0 ;for(i=1;i<m;i+ );printf("sum=%dn",s)void mult(int m) long int i, s=1 ;for(i=1;i<=m;i+ ) s *= i ;printf("mult= %ldn";s);dispform( ) printf ("usage:sm n(+/!) (n>0)n") ;exit (0);【】下面程序的功能是键盘上输入一个字符串,把该字符串中的小写字母转换为大写 字母,输出到文件中,然后从该文件读出字符串并显示出来。#include <>main() char str100 ;int i=0;FILE *fp;if(fp=fopen("", )=NULL) printf("Can't open the file.n") ;exit(0);printf("Input a string:n");gets(str);while(stri) if(stri>= 'a'&&stri<= 'z')stri= ;fputc(stri,fp);i+;fclose(fp);fp=fopen("", );fgets(str,strlen(str)+1,fp);printf("%sn",str);fclose(fp);【】下面程序的功能是将从终端上读入的 10 个整数以二进制方式写入名为""的新文 件中。#include <>FILE *fp;main() int i, j ;if( fp=fopen( , "wb" ) = NULL )exit (0);for( i=0;i<10;i+ ) scanf("%d", &j ) ;fwrite( , sizeof(int), 1, );fclose( fp);【】以字符流形式读入一个文件,从文件中检索出六种C语言的关键字,并统计、 输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或't'、 'n'结束的字符串。#include <>#include <>FILE *cp;char fname20, buf100;int num;struct key char word10 ;int count;keyword= "if", 0, "char", 0, "int", 0,"else", 0, "while", 0, "return", 0; char *getword (FILE *fp) int i=0 ;char c;while(c=getc(fp) != EOF && (c=' '|c='t'|c='n') if( c=EOF ) return (NULL) ;else bufi+=c;while(c = && c!= ' ' && c!= 't' && c!= 'n' )bufi+ = c;bufi= '0';return(buf);lookup(char *p) int i ;char *q, *s;for(i=0;i<num;i+) q = ;s=p;while( *s && (*s=*q) )if( ) keywordi.count+ ;break;return;main() int i ;char *word;printf("Input file name:");scanf("%s", fname);if(cp=fopen(fname, "r") =NULL ) printf("File open error: %sn", fname) ;exit(0);num = sizeof(keyword) / sizeof(struct key);while( )lookup(word);fclose(cp);for(i=0;i<num;i+)printf("keyword:%-20scount=%dn",keywordi.word,keywordi.count);【】下面程序的功能是从键盘接受姓名(例如:输入"ZHANG SAN"),在文件""中 查找,若文件中已经存入了刚输入的姓名,则显示提示信息;若文件中没有刚输入 的姓名,则将该姓名存入文件。要求:(1)若磁盘文件"",已存在,则要保留文件中 原来的信息;若文件"”不存在,则在磁盘上建立一个新文件;当输入的姓名为空 时(长度为 0),结束程序。#include <>main() FILE *fp ;int flag;char name30, data30; if(fp=fopen("", )=NULL ) printf("Open file errorn") ; exit(0);do printf("Enter name:") ;gets(name);if( strlen(name)=0 )break;strcat(name, "n");flag=1;while( flag && (fgets(data, 30, fp) ) )if( strcmp(data, name) = 0 );if( flag ) fputs(name, fp); elseprintf("tData enter error !n"); while( ) ;fclose(fp);【】答案: a+b a-b a-b【】答案:(float)(i*i) sqrt(6*s)【】答案:*k=p【】答案:t=t*it=t>O-l:l【】答案:d=1k+kv=n【】答案: x>=0 x<amin【】答案: 2 2【】答案:m=nm>0m=m/10【】答案:i=jk!=i&&k!=j【】答案:iv=9j%3!=0【】答案:m=nr!=0return(n)【】答案: float a10,x iv=9 iv=8 jv=9-i aj>aj+1 aj=aj+1 iv=9 i%5=0【】答案:&aicontinue注释:是基本概念,使用scanf函数输入数组元素的值。当输入的元素值小于0时,应当跳过后面的语句,取下一个数,所以要填入continue。【】答案: sj+=si sj=si【】答案:sj+=si【】答案:xi+【】答案: i=strlen(a); i>=j; i- ai+1=ai【】答案:'0' strli-str2i【】答案:j+''j+''j+'0'【】答案: tk!= '0' tk= '0'【】答案:<=ns0fun(k)【】答案:afmax(a,N)k=p【】答案: last*n%1000 x!=min-x flag=0【】答案:(x0+a/x0)/2a,x1注释:根据迭代公式,处应当是计算迭代值x1=(x0+a/x0)/2。按照求平方根的要 求,当迭代的精度不能满足"(fabs(x1-x0)> "时,则要继续迭代,因此处应当填写 "a,x1"。程序中调用了求绝对值的库函数fabs()。【】答案:2+age(n-1)age(5)注释:由于程序是递归算法,因此首先要建立问题的递归数学模型。根据原题的描 述可以写出如下递归公式:age(n) = 10 (n=1)age(n) = 2+age(n-1) (n>1)对照程序和递归公式可以看出:n的含义是第n位学生。很显然,要求第5位学生的 年龄,处应当是调用函数age,实参的值应当是5。在处应该是函数的递归调用,根据递归公式,应当填写:2+age(n-l)。【】 答案: return(l) return (sum(n-l)+n)注释:按照常规的编程方法,此问题可采用一个循环语句实现。阅读程序,没有发 现循环语句,这时,应当认为原来的编程者使用的是非常规的算法。对于这样常规 算法需要用循环实现而没有使用循环的程序,就可以肯定地认为,一定是使用了递 归算法。将问题"求1n的累加和"的公式写成递归定义,可以是如下形式;sum(n)=l 当 n=l 时sum(n)=

注意事项

本文(C语言程序设计程序填空题库及答案)为本站会员(z****)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!