2012年12月C语言大题(参考答案)
- 格式:doc
- 大小:2.00 MB
- 文档页数:28
第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
第一处struct student t;第二处for(i=0;i<n-1;i++)第三处if(strcmp(a[i].name,a[j].name)>0)/**found**/q=p+i;/**found**/while(q>p)3int fun(STREC *a,STREC *b,int l,int h) {int i,j=0;for(i=0;i<N;i++)if((a[i].s>=1&&a[i].s<=h)b[j++]=a[i];return j;}第二套1.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第一处free(q);第二处q=p->next;第三处q=q->next;/**found**/p=j;/**found**/p=i;3.void fun(int m,int *a,int *n){int i;*n=0;for(i=7;i<=m;i++)if((i%7==0)||(i%11==0))a[(*n)++]=i;}第三套1. 程序填空函数fun的功能是:逆置数组元素是的值。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
形参n 给出数组中数组中数据的个数。
第一处for(i=0;i<n/2;i++)第二处a[i]=a[n-1-i];第三处a[n-i-1]=t;2/**found**/n=*p-…0‟;/**found**/n=n*8+*p-…0‟;3.STREC fun(STREC*a,char *b){ STREC c;Int i;c.num[0]=‟\0‟;c.s=-1;for(i=0;i<N;i++)if(strcmp(a[i].num,b)==0){strcpy(c.num,a[i].num);c.s=a[i].s;break;}return c;}第四套1.程序填空给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。
12年的试题比13年的难很多,笔者费了一早上加一中午才全部做完。
如果对答案有疑问或者觉得哪里有问题请联系我qq553915228 李添锐一、写出下列程序段的运行结果(40分)1、(4分)char a='D'-'A',b='\010',c,d;c = ++a || b++;d = a-- && b--;printf("%d,%d,%d,%d",a,b,c,d);输出:3,7,1,12、(4分)char a=0x123FFF;printf("%d,",a);a=127;printf("%d",++a);输出:-1,-1283、(4分)int a=5,y=0;int main(){while(a=5){a+=5;y+=a;printf("%d,%d,", a, y);if (y>18) break;}return 0;}输出:10,10,10,204、(4分)int i=1, j=2, k=4;printf("%f,", i-(float)j/k);printf("%d,", j>1<k);k+=5/10*i ;printf("%d,",k);printf("%d", (j=1)?2:0);输出:0.500000,1,4,25、(4分)int a[][2]={(1,2),(3,4)};printf("%d",a[0][1]);输出:46、(4分)int ave(int x, int y){return (x+y)/2;}int main(){int a=1, b=2, c=3;printf("%d\n",ave(ave(a,b), ave(b,c)));return 0;}输出:1(\n)7、(4分)void exc(int x, int *y){int t;t=x; x=*y; *y=t;}int main(){int a=5,b=8;exc(a,&b);printf("a=%d,b=%d",a,b); return 0;}输出:a=5,b=58、(4分)char str[10]="believe";char *p=str;*(str+5)=0;puts(2+p);输出:lie9、(4分)struct pt{int x; int y;} p[2]={1,3,5,7}; printf("%.3f",p[1].y/(float)p[0].y+ p[1].x/p[0].x);输出:7.33310、(4分)FILE *fp;char c=49;int d=50, e;fp=fopen("a.tmp","w"); fprintf(fp,"%c%d", c, d); fclose(fp);fp=fopen("a.tmp","r"); fscanf(fp,"%d",&e); printf("%d\n",e);输出:150(\n)二、改错题(20分)以下程序实现:从键盘输入若干个学生的成绩数据,将这些数据存到磁盘文件上,并求这些学生的最高成绩。
c语⾔综合练习题及答案模拟试题⼀⼀、选择题(本⼤题30分,每⼩题2分)1.下列说法正确的是。
A)main函数必须放在C程序的开头B)main函数必须放在C程序的最后C)main函数可以放在C程序的中间部分,但在执⾏C程序时是从程序开头执⾏的D)main函数可以放在C程序的中间部分,但在执⾏C程序时是从main函数开始的2.在下⾯⼏组数据类型中, 全为最常⽤的基本数据类型的是哪⼀组:。
A)整型实型字符型B)整型数组指针C)数组结构体共⽤体D)指针逻辑型空类型3.若有说明语句:char c= …\64? ; 则变量C包含:。
A)1个字符B)2个字符C)3个字符D)说明不合法,C值不确定4.设有如下定义和执⾏语句,其输出结果为:。
int a=3,b=3;a = --b + 1; printf(“%d%d”,a,b);A)3 2 B)4 2 C)2 2 D)2 35.C语⾔中,运算对象必须是整型数的运算符是。
A)% B)\ C)% 和\ D)**6.能正确表⽰x的取值范围在[0,100]和[-10,-5]内的表达式是。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)7.程序段如下int k=0;while(k++<=2); printf("last=%d\n",k);则执⾏结果是last= 。
A)2 B)3 C)4 D)⽆结果8.下⾯有关for循环的正确描述是。
一、单项选择题(共25小题,每题2分,共50分)以下每小题列出的四个备选答案中只有一个符合题目要求,请将正确答案填入“单项选择题答题表”对应的格中,未填入答题表,错选或多选均不得分。
1.一个C语言程序是由()组成的。
A. 一个主程序和若干个子程序B. 函数C. 若干过程D. 若干子程序2.若x、i、j和k均是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。
A. 4B. 16C. 32D. 523.下列程序不是..死循环的是()。
A. int i=100;B. int k=0;while(1) do { ++k; } while(k>=0);{ i=i%100+1;if(i>100) break;}C. for(;;);D. int s=36;while(s);--s;4.在C语言中一维数组的定义形式为:类型说明符数组名()。
A. [常量表达式]B. [整型表达式]C. [整型常量]或[整型表达式]D. [整型常量]5.下面四个选项中,均是正确的八进制数或十六进制数的选项是()。
A. -10B. 0abc-0x8f -017-011 0xcC. 010D. 0a12-0x11 -0x1230xf1 -Ox86.putchar函数可以向终端输出一个()。
A. 整型变量表达式值B. 实型变量值C. 字符串D. 字符或字符型变量值7.下列程序的输出结果是()。
main(){ printf("%x",'A'); }A. 65B. 41C. AD. 1018.程序int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;的输出结果是()。
printf("%d",*--p);A. 非法B. a[4]的地址C. 5D. 39.以下选项中,与k=n++完全等价的表达式是()。
A. k=n,n=n+1B. n=n+1,k=nC. k=++nD. k+=n+110.被调函数调用结束后,返回到()。
一、单选题1.在C语言中,下列类型属于构造类型的是( D )A.整型 B.字符型 C.实型 D.数组类型2.下列字符串不是标识符的是( D )3. 在C语言中,回车换行符是( A )A. nB. tC. vD. b4. 在C语言中,语句和数据定义是用( C )作为结束标记的A.句号 B.逗号 C.分号 D.括号5. 设有如下定义:int x=10,y=5,z;则语句printf(“%dn”,z=(x+=y,x/y));的输出结果是( C )A.0 B.1 C.3 D.46. 10.以下程序的输出结果是( B )main( ){char c1=’8’,c2=’2’;printf(“%c,%c,%d,%dn”,c1,c2,c1-c2,c1+c2);}A.因输出格式不合法,输出出错信息B.8,2,6,106 C.8,2,6,10 D.8,2,5,97.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是( A )main( ){int x;scanf(“%d”,&x);if(x++>5) printf(“%dn”,x);else printf(“%dn”,x--);}A.7和5 B.7和4 C.6和48.表达式(int)2.1416的值时( A )A. 2B. 2.1C. 0D. 39.下列运算符优先级最高的是( B )A. >B. +C. &&D. !=10. C语言容许函数值类型缺省定义,此时该函数值隐含的类型时( B )A. float型B. Int型C. Long 型D. Double型11、C程序的基本构成单位是( C)A、子程序B、过程C、函数D、文件12、C语言中要求操作数都为整型数据的算术符是(C )A、/B、!C、%D、= =13、若int x=1,y=1;则表达式(!x||y--)的值是(B )。
A、0B、1C、2D、-114、能正确表示逻辑关系:a≥10或a≤0的C语言表达式(D )A、a>=10 or a<=0B、a>=0|a<=10C、a>=10 && a<=0D、a>=10||a<=015、double x,y;表达式x=1,y=x+3/2的值是(C )。
1、对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。
2、SQL语句中凡创建都用CREA TE,删除都用DROP,改用ALTER,再跟类型和名字,附加子名。
3、关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。
4、循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p->next=head。
5、程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。
6、数据模型所描述的内容3有个部分,它们是数据结构、数据操作和数据约束。
7、C语言的转义字符见下表所示。
转义字符转义字符的意义\n 回车换行\t 横向跳到下一制表位置\v 竖向跳格\b 退格\r 回车\f 换页\\反斜线符“\”\’单引号符\a 鸣铃\ddd 1~3位八进制数所代表的字符\xhh 1~2位十六进制数所代表的字符8、分析:本题考查switch语句的掌握。
必须掌握以下内容:首先应该明白switch语句的语法格式:switch语句的语法格式为:switch(表达式){case常量表达式1:语句组1;case常量表达式2:语句组2;…case常量表达式n:语句组n;default:语句组n+1;}另外,注意以下几点关于switch语句的重点:①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case ′B′:);③找到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。
一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入default:程序段,作统一的处理。
default标号是可选性的,不必每次都有,视需要而定。
switch语句中还可以包含switch语句,形成switch的嵌套9、在C语言中,逻辑运算符中一共有4个,它们分别是!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。
11、下列给定程序中,函数fun的功能是:计算如下公式直到,并且把计算结果作为函数值返回。
例如,若形参e的值为1e-3,则函数返回值为0.551690。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!【参考答案】(1)3.0或(double)3(2)>(3) (t+1)2、下列给定程序中函数fun的功能是:求出如下分数序列的前n项之和。
和值通过函数值返回。
例如,若n=5,则应输出8.391667。
请改正程序中的错误,使其得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!【参考答案】(1)double fun(int n)(2)s=s+(double)a/b;3、请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
【参考答案】int fun (int a[][M]){int i,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])max=a[i][j];return max;}21、下列给定程序中,函数fun的功能是:计算如下公式前n项的和并作为函数值返回。
例如,当形参n的值为10时,函数返回值为9.612558。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!【参考答案】(1) 0(2) n(3) (t*t)2、下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
数据结构(C语言版)(第2版)习题解析揭安全李云清杨庆红编著江西师范大学计算机信息工程学院联系方式:*****************2012年12月第1章绪论1.1什么是数据结构?【答】:数据结构是指按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义了一个运算集合。
1.2 数据结构涉及哪几个方面?【答】:数据结构涉及三个方面的内容,即数据的逻辑结构、数据的存储结构和数据的运算集合。
1.3 两个数据结构的逻辑结构和存储结构都相同,但是它们的运算集合中有一个运算的定义不一样,它们是否可以认作是同一个数据结构?为什么?【答】:不能,运算集合是数据结构的重要组成部分,不同的运算集合所确定的数据结构是不一样的,例如,栈与队列它们的逻辑结构与存储结构可以相同,但由于它们的运算集合不一样,所以它们是两种不同的数据结构。
1.4 线性结构的特点是什么?非线性结构的特点是什么?【答】:线性结构元素之间的关系是一对一的,在线性结构中只有一个开始结点和一个终端结点,其他的每一个结点有且仅有一个前驱和一个后继结点。
而非线性结构则没有这个特点,元素之间的关系可以是一对多的或多对多的。
1.5 数据结构的存储方式有哪几种?【答】:数据结构的存储方式有顺序存储、链式存储、散列存储和索引存储等四种方式。
1.6 算法有哪些特点?它和程序的主要区别是什么?【答】:算法具有(1)有穷性(2)确定性(3)0个或多个输入(4)1个或多个输出(5)可行性等特征。
程序是算法的一种描述方式,通过程序可以在计算机上实现算法。
1.7 抽象数据类型的是什么?它有什么特点?【答】:抽象数据类型是数据类型的进一步抽象,是大家熟知的基本数据类型的延伸和发展。
抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。
对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。
一、改错题1.程序Cmody441.c的功能是:输出100~200之间所有能被3和5同时整除的整数,并统计其个数。
注:(1)修改程序在每对“/**/”之间存在的错误;(2)不得删改程序中的“/**/”注释和其他代码;(3)源程序在考生文件夹中,务必以原文件名保存程序;(4)Alt+Tab键,切换考试程序与Turbo C;Alt+Enter键,切换Turbo C窗口大小。
#include <stdio.h>void main(){int i,counter=/**/ 1 /**/;for(i=100;i<=200;i++)if( /**/ (i%3)&&(i%5) /**/ ){printf("%-5d",i);counter++;}printf("\ncounter=%d\n",counter);getch();}参考答案:第一处:0第二处:(i%3==0)&&(i%5==0)2.修改程序Cmody442.c,将二维数组表示的方阵左上半角(含对角线)各元素乘3;右下半角(不含对角线)各元素减5。
#include<stdio.h>#define N 6void main(){int /**/ a[N,N] /**/,i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=i+j*2+5;printf("\nArray a is:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}for(i=0;i<N;i++)/**/ for(j=0; j<N ;j++) /**/a[i][j]*=3;for(i=0;i<N;i++)/**/ for( j=0;j<N;j++) /**/a[i][j]-=5;printf("\nArray a is turned:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}getch();}参考答案:第一处:a[N][N]第二处:for(j=0; j<N-i-1;j++)第三处:for(j=N-1; j>N-i-1 ;j--)3.#include <stdio.h>#define N 3void main(){int a[N][N],i,j,sum=0;printf("Enter array a:\n");for(i=0;i<N;i++)for(j=0; j<N ; j++){ scanf("%d",&a[i][j]);/**/ sum+a[i][j]; /**/}printf("\nThe average is %f\n", /**/ sum/N*N /**/ ); getch();}参考答案:第一处:sum+=a[i][j];第二处:(float)sum/(N*N)4.#include <stdio.h>#include <string.h>void main(){int i,j,k,position=0;char str1[100],str2[100];printf("Input Main String:");gets(str1);printf("Input Sub String:");/**/ str2=gets() /**/ ;for(i=0; /**/ str1[i]='\0' /**/; i++){for(j=i,k=0; (str1[j]==str2[k])&&(str1[j]!='\0'); j++,k++ ) ;if(str2[k]=='\0'){position=i+1;/**/ continue /**/;}}printf("\nIt's at:%d\n",position);getch();}参考答案:第一处:gets(str2)第二处:str1[i]!='\0'第三处:break5.#include <stdio.h>void main(){int fibonacci[100],k,n;/**/ long int sum= 0 /**/ ;fibonacci[0]=fibonacci[1]=1;printf("Enter n:");scanf("%d",&n);for(k=2;/**/ k<=n /**/;k++){fibonacci[k]=fibonacci[k-1]+fibonacci[k-2] ;sum+= fibonacci[k] ;}for(k=0;k<=n-1;k++)printf("%d ",fibonacci[k]); printf("\nsum=%ld\n",sum);getch();}参考答案:第一处:long int sum= 2第二处:k<n6.#include<stdio.h>#define N 5void append(int a[N][N],int b[N]) {int i,j,k=0,min;for(j=0; j<N;/**/ j+1 /**/){/**/ min=a[0][0] /**/;for(i=1;i<N;i++)if(a[i][j]<min)min=a[i][j];/**/ b[k]=a[i][j] /**/;k++;}}void main(){inta[N][N]={{7,10,5,15,6},{1,4,8,3,9},{12,8,10,3,0},{8,3,9,11,16},{6,12, 11,2,10}},b[N];int i,j;append(a,b);printf("Array a :\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d ",a[i][j]);printf("\n");}printf("Array b :\n");for(i=0;i<N;i++){printf("%3d ",b[i]);}getch();}参考答案:第一处:j++第二处:min=a[0][j]第三处:b[k]=min7.#include<stdio.h>#define N 10void main(){int a[N],i,j,t;printf("Input a:");for( i=0;i<N;i++)scanf("%d",/**/ a[i] /**/);for (i=0,j=N-1;i<j;i++,j--)/**/t=a[i]; a[i]=a[j]; a[j]=t;/**/for( i=0;i<N;i++)printf("%d ",*(a+i) );getch();}参考答案:第一处:&a[i]第二处:{t=a[i]; a[i]=a[j]; a[j]=t;}8.#include<stdio.h>/**/ my_add(int n) /**/{double sum = 0.0;int i;for(i=1;i<=n;i++){sum+=(2*i-1)/(2+/**/ 3*i /**/);}return (/**/ 0 /**/);}void main(){printf("my_add(9) = %11.5lf\n", my_add(9)); getch();}参考答案:第一处:double my_add(int n)第二处:(double)3*i第三处:sum#include <stdio.h>#include <string.h>void main(){char s[100],t[10];int i,lenofs;puts("Input s:");gets(s);puts("Input t:");gets(t);/**/ i=1; /**/lenofs=strlen(s);while(t[i]){s[lenofs+i]=t[i] ;i++;}s[lenofs+i]=/**/ '0' /**/;printf("The final string s:%s\n",s); getch();}参考答案:第一处:i=0第二处:'\0'#include <stdio.h>#include <math.h>unsigned int prime(unsigned int x ){unsigned int mark=1,i;for(/**/ i=1 /**/;i<sqrt(x);i++)if(x%i==0){mark=0;break;}return (mark);}void main(){unsigned int n,m,a,b;printf("Input n: ");scanf("%d",&n);if(n<11 || n>99)printf("%d is error!\n",n);else{/**/ a=n/10 /**/;b=n/10;m=a*10+b;if( /**/ prime(n)=0 /**/ && prime(m)==1 ) printf("Yes!\n");elseprintf("No!\n");}getch();}参考答案:第一处:i=2第二处:a=n%10第三处:prime(n)==1二、填空题1.#include <stdio.h>#include <math.h>void main(){double a,b,c,circle,area;printf("Input 2 edges:");scanf(/**/ /**/,&a,&b); c=sqrt(/**/ /**/); circle=a+b+c;area=/**/ /**/ ; printf("circle=%lf\n",circle); printf("area=%lf\n",area); getch();}参考答案:第一处:%lf%lf第二处:a*a+b*b第三处:a*b/22.#include <stdio.h>void main(){int i=1, mark;mark=/**/ /**/;do{if((i-2)%4==0)if(/**/ /**/ )if(!((i-5)%9)){printf("Sum=%d\n",i);mark=0;}/**/ /**/;}while(mark);getch( );}参考答案:第一处:i第二处:(i-3)%7==0第三处:i++3.#include <stdio.h>void main(){ int n;/**/ /**/printf("Please input n (n>=1 and n<=10) :"); scanf("%d",&n);if( !(n>=1&&n<=10) ) return; PrintLetters(n);getch();}void PrintLetters(int n){char ch='a';int row,col;for(row=1;row<=n;row++){for(col=1;/**/ /**/;col++)putchar(ch);/**/ /**/printf("\n");}}参考答案:第一处:void PrintLetters(int n);第二处:col<2*row第三处:ch++;4.#include <stdio.h>void lookup( int y ){int a,b,c;for(/**/ /**/; a<10; a++)for(b=1; b<10; /**/ /**/)for(c=1; c<10; c++){if(a*b+/**/ /**/ ==y)printf("a=%d,b=%d,c=%d\n",a,b,c); }}void main(){int result=95;lookup(result);getch();}参考答案:第一处:a=1第二处:b++第三处:b*c+a*c5.#include <stdio.h>void main(){float x;int n;double Calculating(int);printf("Please input n (n>=1 and n<=1000):");scanf("%d",&n);printf("Calculating(%d)=%lf\n",n,/**/ /**/); getch();}double Calculating(int n){ int i, sign=1;double r=0.0;if(n>=1&&n<=1000)for( i=1;i<=n;i++){ r+=sign*(1.0/i);/**/ /**/}return /**/ /**/;}参考答案:第一处:Calculating(n)第二处:sign*=-1;或sign=(-1) *sign;#include <stdio.h>#include <string.h>void main(){char str[100],a[20],*p;int n=0,i,j;int x;printf("Input string:");gets(str);/**/ /**/while(*p!='\0'){for(i=0; *p>='0' && /**/ /**/; p++){a[i]=*p;i++;}if(i>0){x=0;for(j=0;j<i;j++)x=x*10+a[j]-/**/ /**/;printf("%d+15=%d\n",x,x+15);n++;}if(n==1)break;elsep++;}if(n==0)printf("15\n");getch( );参考答案:第一处:p=str;第二处:*p<=’9’第三处:487.#include <stdio.h>int CountNumber(unsigned long n){/**/ /**/ counter= 0 ;if(n==0 || n>4000000000) return 0;while(n){n/=/**/ /**/;counter++;}return counter;}void main(){unsigned long x;printf("Pleae input x(x>0 and x<=4000000000:");scanf("%lu",&x);printf("The total number of digits is %d.\n", /**/ /**/); getch();}参考答案:第一处:int第二处:10第三处:CountNumber(x)#include <stdio.h>void main(){int a,d,n,i;long x,sum;sum=/**/ /**/;printf("a,d,n=");scanf("%d,%d,%d",&a,&d,&n);printf("Series of Numbers:\n"); x=a;for(i=1; i<=/**/ /**/; i++) {printf("%d ",x);x=/**/ /**/;sum+=x;}printf("\n Sum=%ld\n",sum);getch( );}参考答案:第一处:0第二处:n第三处:x+d9.#include<stdio.h>void InsertHead(int a[],int n,int x){int i;for(i=n-1; /**/ /**/; i--)a[i+1]=a[i];/**/ /**/}void main(){int data[11]={1,12,3,14,5,16,7,18,9,10},x,i; printf("Pleae input x:");scanf("%d",&x);InsertHead(/**/ /**/);for( i=0;i<11;i++) printf("%-4d",data[i]); printf("\n");getch();}参考答案:第一处:i>=0第二处:a[0]=x;第三处:data,10,x10.#include <stdio.h>long int fun(long int n){long int s;if(/**/ /**/)s=1;elses=n*n+/**/ /**/;return (s);}{long int n;printf("Input n:");scanf("%ld",&n);if(/**/ /**/ || n>30)printf("%ld is error!\n",n);elseprintf("Sum=%ld\n",fun(n));getch();}参考答案:第一处:n==1第二处:fun(n-1)第三处:n<1三、编程题1.#include <stdio.h>#include <math.h>double fun(double x){/**//**/}void main(){printf("fun(1.65) = %7.3lf\n", fun(1.65));}参考答案:double result;result=(2*sin(x)+exp(x))/(cos(x)+1.2); return result;2.#include <stdio.h>long int Reverse(unsigned int n) {/**//**/}void main(){unsigned int a;printf("Input a (1-10000):");scanf("%u",&a);printf("result=%ld\n",Reverse(a)); getch();}参考答案:long int r=0;while(n){r=r*10+n%10;n=n/10;}return r;3.#include <stdio.h>#include <math.h>double fun(double x,int n){/**//**/}void main(){printf("fun(2.3,5) = %7.3lf\n", fun(2.3,5)); getch();}参考答案:double r;r=3*pow(x,n)/((2*x-1)*(x+3)+0.8); return r;4.#include <stdio.h>void DecToHex(unsigned int data,int hex[30],int *resultlen) {/**//**/}void main(){unsigned int data,hex[30];int i,len=0;scanf("%u",&data);DecToHex(data,hex,&len);printf("Hex number is: ");for(i=len-1;i>=0;i--)if(hex[i]>9)putchar(hex[i]-10+'A');elseputchar(hex[i]+'0');printf("\n");getch();}参考答案:int i=0;while(data){if(data%16!=0)hex[i++]=data%16;data=data/16;}*resultlen=i;5.#include <stdio.h>double fun(float x){/**//**/}void main(){float x;printf("Input x :");scanf("%f",&x);printf("fun(%.3f)=%.3lf\n",x,fun(x)); getch();}参考答案:if(x==0)return 0;if(x>0)return x+1;if(x<0)return x-1;【或者】if(x==0)return 0;else if(x>0)return x+1;else return x-1;6.#include <stdio.h>void Sort(int a[],int n,int lastnum){/**//**/}void main(){int a[10]={1,-2,3,-4,5,-6,7,-8,9,-10},i; Sort(a,sizeof(a)/sizeof(int),3);for( i=0;i<10;i++)printf("%d ", a[i]);printf("\n");getch();}参考答案:int t,i=n-lastnum,j;if(lastnum>n)return;elsefor(i=n-lastnum;i<n;i++)for(j=i;j<n;j++)if(a[i]>a[j]){ t=a[i];a[i]=a[j];a[j]=t;}7.#include <stdio.h>float fun(float x){/**//**/}void main(){float x;printf("Input x :");scanf("%f",&x);if(x<0)printf("%.2f is error!\n",x);elseprintf("fun(%.2f)=%.2f\n",x,fun(x)); getch();}参考答案:float r;if(x<=1)r=0.05*x;if(x>1&&x<=3)r=0.5+0.06*(x-1);if(x>3&&x<=5)r=1+0.07*(x-3);if(x>5)r=2+0.09*(x-5);return r;8.#include <stdio.h>#define N 4void fun(int a[N][N]){/**//**/}void main(){ int a[N][N]={{1,2,3,4},{-5,-6,-7,-8},{9,10,11,12},{13,-14,-15,16}},i,j;fun(a);for( i=0;i<N;i++){for(j=0;j<N;j++) printf("%4d ",a[i][j]);printf("\n");}getch();}参考答案:int i,t;for(i=0;i<N;i++)if(a[i][i]>a[i+1][i+1]){t=a[i][i];a[i][i]=a[i+1][i+1];a[i+1][i+1]=t;}9.#include <stdio.h>double fun(float x,float y){/**//**/}void main(){float x,y;printf("Input x,y: ");scanf("%f,%f",&x,&y);printf("fun(%.3f,%.3f)=%.3lf\n",x,y,fun(x,y)); getch();}参考答案:double r;if(x>0&&y>0)r=(x*x+1)/(y*y+2);if(x>0&&y<=0)r=(x-2)/(x*(y*y+1));if(x<=0)r=x+y;return r;10.#include <stdio.h>#define N 3void fun(int a[N][N]){/**//**/}void main(){ int i,j;int b[N][N]={{1,0,0},{-2,3,0},{4,-5,6}};fun(b);for(i=0;i<N;i++){ for(j=0;j<N;j++)printf("%-4d",b[i][j]); printf("\n");}getch();}参考答案:int i,j;for(i=0;i<N;i++)for(j=0;j<i;j++)a[j][i]=a[i][j];。