广工C-Anyview-参考答案
广工Anyview试题答案 第四章

/**********【习题4.011】关系表达式,if语句第一种形式在以下程序空缺处填写合适内容,使得程序判断用户输入的字符是否为'@',若是则显示:"输入正确"。
**********/#include<stdio.h>void main(){char c;scanf("%c",&c);if( c=='@' ) printf("输入正确\n");}/**********【习题4.012】关系表达式,if语句第一种形式在以下程序空缺处填写合适内容,使得程序输入一个整数赋给变量a,计算并输出a的绝对值a1。
**********/#include<stdio.h>#include<math.h>void main(){int a,a1;scanf("%d",&a);a1=abs(a);printf("|%d| = %d\n",a,a1);}/**********【习题4.013】逻辑表达式,if语句第一种形式在以下程序空缺处填写合适内容,使得程序对输入的整型变量x的值进行判断,若变量x值为“假”时输出“False”。
**********/#include<stdio.h>int main( ){int x;scanf("%d",&x);if(x==0 )printf("False!\n");return 0;}/**********【习题4.016】if语句的子句为复合语句在以下程序空缺处填写合适内容,使得程序将输入到变量a和b的两个整数按照由大到小的顺序输出。
**********/#include<stdio.h>void main( ){inta,b,t;scanf("%d %d",&a,&b);if(a<b){t=b;b=a;a=t;}printf("%d %d\n",a,b);}/**********【习题4.203】条件运算(3目运算)在以下程序空缺处填写合适内容,使得程序先令整型变量a取值0,b取值-20;然后用条件运算实现:若a>b成立则将b的平方值赋予c,否则将0赋予c;最后显示c的值。
广工Anyview试题答案

/**********【习题9.023】结构体类型定义如下:struct date{int year; int month; int day;}; //定义日期结构体类型struct student{ char name[20];struct date birth; //出生日期};结构体数组s存储了n个人的名字和出生日期。
写一函数,求这n个人中年龄最大(即出生日期最小)者的姓名。
**********/char *oldest(student s[], int n){int j,k=0;for(j=1;j<n-1;j ){if(s[k].birth.year>s[j].birth.year) k=j;else if(s[k].birth.year==s[j].birth.year){if(s[k].birth.month>s[j].birth.month) k=j;else if(s[k].birth.month==s[j].birth.month)if(s[k].birth.day>s[j].birth.day) k=j;}}return s[k].name;}/**********【习题9.025】结构体类型定义如下:struct date{int year; int month; int day;}; //定义日期结构体类型struct student{ char id[10]; //学号char name[20]; //姓名struct date birth; //出生日期};结构体数组s存储了n个人的学号、名字和出生日期。
写一函数,以结构体的形式返回这n个人中年龄最大(即出生日期最小)者的信息。
**********/struct student oldest(struct student s[], int n){int j,k=0;for(j=1;j<n-1;j ){if(s[k].birth.year>s[j].birth.year) k=j;else if(s[k].birth.year==s[j].birth.year){if(s[k].birth.month>s[j].birth.month) k=j;else if(s[k].birth.month==s[j].birth.month)if(s[k].birth.day>s[j].birth.day) k=j;}}return s[k];}/**********【习题9.027】结构体类型定义如下:struct student{ char id[10]; //学号char name[10]; //姓名int score[5]; //各门课成绩};结构体数组s存储了n个学生的学号、名字和各门课成绩。
2016广工Anyview试题答案-第六章

2016广工Anyview试题答案-第六章【习题6.033】系统给定外部整型数组a、整型变量n、max、min 和实型变量avg(不需要自行定义)。
编写程序,求数组a中前n 个元素的最大值max、最小值min及平均值avg。
**********/void main(){inti,sum=0;max=min=a[0];for(i=0;i<n;i++)< bdsfid="69" p=""></n;i++)<>{if(a[i]>=max)max=a[i];if(a[i]<=min)min=a[i];sum+=a[i];}avg=sum/(float)n;}/**********【习题6.043】系统给定外部整型变量n和整型数组a(不需要自行定义)。
编写程序,找出数组a中前n个元素中的最小元素及其下标,然后把它和数组中最前面的元素a[0]交换位置。
**********/void main(){int b=a[0],temp,min,z;for(int i=1;i<n;i++)< bdsfid="87" p=""></n;i++)<>{if(b>a[i])b=a[i];}min=b;for(int j=0;j<n;j++)< bdsfid="94" p=""></n;j++)<>{if(a[j]==min)z=j;}temp=a[0];a[0]=min;a[z]=temp;}【习题6.050】系统给定外部字符串s和整型数组c[26](不需要自行定义)。
编写程序,将字符串s中26个小写字母出现的次数依次统计到数组c中。
例如,当s=“abcijkabcdexyzuvwx”时,数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 00 0 0 0 0 0 1 1 1 2 1 1。
2022年广东工业大学公共课《C语言》科目期末试卷A(有答案)

2022年广东工业大学公共课《C语言》科目期末试卷A(有答案)一、填空题1、把int类型变量low中的低字节及变量high中的高字节放入变量s中的表达式是_______。
2、C语言源程序的基本单位是________3、C语言的源程序必须通过【】和【】后,才能被计算机执行。
4、已知字母a的ASCIl码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-3'的值为_______。
5、若有定义语句:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_______6、定义语句int*f();int(*f)();的含义分别为_______和_______。
7、函数swap(int x,inty)可完成对x和y值的交换。
在运行调用函数中的如下语句后,a[0]和a[1]的值分别为_______,原因是_______。
a[o]=1;a[1]=2;swap(a[o],a[1]);8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=_______;b=a-_______;a-=_______;9、若有以下定义和语句,为使变量c1得到字符’A',变量c2得到字符’B’,正确的输入形式是_______。
char cl,c2;scanf("%4c%4c",&cl,8&c2);10、假设M为已经声明的符号常量,则定义一个具有M×M个元素的双精度型数组a,且所有元素初值为0的形式是_______。
二、选择题11、若有代数式|x3+log10x|,则正确的C语言表达式是()A.fabs(x*3+log(x))B.abs(pow(x,3)+log(x))C.abs(pow(x,3.0)+log(x))D.yfabs(pow(x,3.0)+log(x))12、下面4个选项中,是不合法的用户标识符的选项是( )。
广工数据结构参考答案全(anyview)

广工数据结构anyview 80道上机题1.void Descend(int &x, int &y, int &z)/* 按从大到小顺序返回x,y和z的值*/ {int t;if(x<z){t=z;z=x;x=t;}if(y<z){t=y;y=z;z=t;}if(y>x){t=x;x=y;y=t;}}2.Status Fibonacci(int k, int m, int &f)/* 求k阶斐波那契序列的第m项的值f */ {int *a;int i=1;if(k<2||m<0) return ERROR;if(m<k){if(m==k-1) f=1;else f=0;return OK;}a=(int*)malloc((m+1)*sizeof(int));for(i=0;i<k-1;i++) a[i]=0;i=k+1;a[k-1]=1;a[k]=1;while(i<=m){a[i]=2*a[i-1]-a[i-k-1];i++;}f=a[m];return OK;}3.void Scores(ResultType *result, ScoreType *score)/* 求各校的男、女总分和团体总分, 并依次存入数组score *//* 假设比赛结果已经储存在result[ ]数组中, *//* 并以特殊记录{"", male, ' ', "", 0 }(域scorce=0)*//* 表示结束*/{int i;for(i=0;result[i].score!=0;i++){score[result[i].schoolname-'A'].totalscore+=result[i].score;if(result[i].gender==male)score[result[i].schoolname-'A'].malescore+=result[i].score;elsescore[result[i].schoolname-'A'].femalescore+=result[i].score;}}4Status Series(int ARRSIZE, int a[])/* 求i!*2^i序列的值并依次存入长度为ARRSIZE的数组a;*//* 若所有值均不超过MAXINT,则返回OK,否则返回OVERFLOW */{int i=1,b=1,na=1;while(i<=ARRSIZE){na*=i;b*=2;if(na*b>MAXINT) return OVERFLOW;a[i-1]=na*b;i++;if(i>ARRSIZE+1) return OVERFLOW;}return OK;}5float Polynomial(int n, int a[], float x)/* 求一元多项式的值P(x)。
广东工业大学C语言考研历年真题及答案

s=“Hello!”;sp=“Hello!”;8、下列程序是否正确?()main(){int i,a[10];for(i=0;i<10;i++;)a[i]=i;printf(“%d\n”,a[i]);}9、在C语言中,共用体变量中的所有成员占有同一个存储空间。
()10、下列语句是否正确?()#define PI 3.1415926;area=PI*r*r;对于试题的一些补充说明:1、试题每年我都会进行整理分析(收录当年的试题),给出严格严谨的答案;2、试题的答案除特别简单的题目,一般都会上机测试,保证答案的正确性(当然,我的答案不一定都对,青出于蓝而胜于蓝,我相信后继者会更加优秀,欢迎批评指正);3、本套试题的原始试卷中存在出错的题目,没有正确答案,我一并进行了修改,但仍保留了原题目;4、该套试题已经经过两代考研人(2014年)的验证和修改修订,以下是部分使用者的评价:广东工业大学2001年攻读硕士学位研究生入学考试试题考试科目:C语言程序设计招生专业:机械电子工程(注:试卷封面需填写自己的准考证号,答完后连同试题一并交回)一、判断题(对的打√,错的打×)(每问2分,共20分)1、一个C语言程序可以包含任意多个不同名的函数,C程序总是从第一个出现的函数开始执行。
()2、putchar 函数可以向终端输出一个字符或者字符型变量值。
()3、表达式‘A’<=ch<=‘Z’可以判断char型变量ch是否为大写字母。
()4、C语言中,do-while循环和while循环的主要区别是do-while循环至少无条件执行一次。
()5、对于某个具体的结构体类型,成员的数量必须固定,各个成员的类型必须相同。
()6、下列语句都是合法的赋值语句。
()k=int(a+b);a=b=58--i;7、下列运算符的优先级从高到低依次排列为:! && + <=8、下面程序的运行结果为8,-1 ()#include<stdio.h>main(){int i,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0) k++;}printf(“%d,%d”,k,b);}9、下列语句均为C语言控制语句:()if()…else…;for()……;continue;goto;return;)或“假”?4、请分别从变量的作用域和变量的存在时间两个方面来对变量的数据存储类别进行分析和说明。
广工数据结构anyview答案

第4章//03****************************************************************** /**********【题目】试写一算法,实现链栈的判空操作。
链栈的类型定义为:typedef struct LSNode {ElemType data; // 数据域struct LSNode *next; // 指针域} LSNode, *LStack; // 结点和链栈类型***********/Status StackEmpty_L(LStack S)/* 对链栈S判空。
若S是空栈,则返回TRUE;否则返回FALSE */{if(NULL == S)return TRUE;elsereturn FALSE;}//05****************************************************************** /**********【题目】试写一算法,实现链栈的取栈顶元素操作。
链栈的类型定义为:typedef struct LSNode {ElemType data; // 数据域struct LSNode *next; // 指针域} LSNode, *LStack; // 结点和链栈类型***********/Status GetTop_L(LStack S, ElemType &e)/* 取链栈S的栈顶元素到e,并返回OK; *//* 若S是空栈,则失败,返回ERROR。
*/{if(NULL == S)return ERROR;elsee = S->data;return OK;}//31****************************************************************** /**********【题目】试写一算法,实现链队列的判空操作。
链队列的类型定义为:typedef struct LQNode {ElemType data;struct LQNode *next;} LQNode, *QueuePtr; // 结点和结点指针类型typedef struct {QueuePtr front; // 队头指针QueuePtr rear; // 队尾指针} LQueue; // 链队列类型***********/Status QueueEmpty_LQ(LQueue Q)/* 判定链队列Q是否为空队列。
广工C语言试卷及答案

{ a++; }while(x,x--);
}
则语句a++;执行的次数是C。
A) 0B)1 C) 2D)无限次
23.以下程序中,while循环的循环次数是D。
void main()
{ int i=0;
while(i<10)
{ if(i<1) continue;
if(i==5) break;
i++;
printf(“\n”);}
13.执行以下程序,输出结果是6 (18)。
void main()
{int x[8]={1,2,3,4,5,6,0,0}, *s;
s=x+3;
printf(“%d\n”, s[2]);
}
14.执行以下程序,输出结果是2,1 (19)。
void swap( int * int *pt2)
C) char *s =“Beijing”; D) char *s ; s=“Beijing”;
28.有如下程序,执行后输出的结果是C。
voidf(int x, int y)
{int t;
if(x<y) {t=x;x=y;y=t;}
}
void main()
{int a=1,b=3,c=2;
f(a,b); f(a,c); f(b,c);
B)文件由二进制数据序列组成,C语言只能读写二进制文件
C)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
D)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
二、填空题(每空2分,共40分)
1.若输入字符串:abcde<回车>,则以下while循环体将执行(1)0次。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广工C-Anyview-参考答案【习题7.020】编写函数,求用1元、5元和10元三种纸币支付n元钱共有多少种支付法?例如,16元可有6种支付方法:方法 1 2 3 4 5 610元0 0 0 0 1 15元0 1 2 3 0 11元16 11 6 1 6 1**********/int change(int n){int i,j,k,m=0;for(i=0;i<=n;i++)for(j=0;j<=n/5;j++)for(k=0;k<=n/10;k++)if(i+5*j+10*k==n)m++;return m;}【习题7.030】先编写一个判断素数的函数。
再编写一个函数将一个偶数表示为两个素数之和,并返回其中较小的素数。
注:素数指只能被1和自身整除的正整数。
规定0,1不是素数。
**********/int prime(int n)/* 判断素数,如果是素数返回1,不是素数则返回0 */{ int t;if(n==1)return 0;for(t=2;t<=(n/2);t++)if(n%t==0)return 0;return 1;}int f(int i)/* 将偶数i表示为两个素数之和,返回其中较小的素数*/{ int n;for(n=3;n<=i;n++)if(prime(i-n)&&prime(n))return n;}/**********【习题7.050】编写函数,将字符串中ASCII码最小的字符放在第一个字符位置,其余字符依次往后移。
**********/void func(char *str)/* 将字符串str中ASCII码最小的字符放在第一个*//* 字符位置,其余字符依次往后移。
*/{int i=1,m=0,k;for(m=0,i=1;str[i]!='\0';i++){if(str[m]>str[i])m=i;} k=str[m];for(i=m-1;i>=0;i--)str[i+1]=str[i];str[0]=k;}/**********7.051 系统给定外部字符串s和整型数组c[26](不需要自行定义)。
编写程序,将字符串s中26个字母(不区分大小写)出现的次数依次统计到数组c中。
例如,当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 00 0 1 1 1 2 1 1。
**********/void main(){int i,j;for(j=0;j<26;j++){c[j]=0;for(i=0;s[i]!='\0';i++)if(s[i]=='A'+j||s[i]=='a'+j)c[j]++;}}/**********【习题7.060】编写函数将一个nxn的二维数组按“次对角线”翻转。
例如:翻转前的数组翻转后的数组1 2 3 9 6 34 5 6 ---> 8 5 27 8 9 7 4 1**********/void invert(char a[N][N]){ int i,j;int b[N][N];for(i=0;i<N;i++)for(j=0;j<N;j++)b[i][j]=a[N-1-j][N-i-1];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.064】编写函数将一个NxN的二维数组“水平”翻转。
例如:翻转前的数组翻转后的数组1 2 3 7 8 94 5 6 ---> 4 5 67 8 9 1 2 3**********/void invertH(char a[N][N]){ int i,j;int b[N][N];for(i=0;i<N;i++)for(j=0;j<N;j++)b[i][j]=a[N-i-1][j];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.065】编写函数将一个NxN的二维数组“垂直”翻转。
例如:翻转前的数组翻转后的数组1 2 3 3 2 14 5 6 ---> 6 5 47 8 9 9 8 7**********/void invertV(char a[N][N]){int i,j;int b[N][N];for(i=0;i<N;i++)for(j=0;j<N;j++)b[i][j]=a[i][N-1-j];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.068】编写函数将一个NxN的二维数组的周边元素“逆时针”轮转1位。
例如:轮转前的数组轮转后的数组1 2 3 2 3 64 5 6 ---> 1 5 97 8 9 4 7 8**********/void turningAnticlockwise(char a[N][N]){ int i;char t=a[0][0];for(i=0;i<N-1;i++)a[0][i]=a[0][i+1];for(i=0;i<N-1;i++)a[i][2]=a[i+1][2];for(i=0;i<N-1;i++)a[2][2-i]=a[2][2-i-1];a[2][0]=a[1][0];a[1][0]=t;}/**********【习题7.072】编写函数将一个NxN的二维数组a的元素按行向右轮转1位。
例如:轮转前的数组轮转后的数组1 2 3 3 1 24 5 6 ---> 6 4 57 8 9 9 7 8**********/void turningRight(char a[N][N]){ int b[N][N],i,j;for(i=0;i<N;i++)for(j=1;j<N;j++)b[i][0]=a[i][N-1],b[i][j]=a[i][j-1];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.075】编写函数将一个NxN的二维数组a的元素按行向左轮转1位。
例如:轮转前的数组轮转后的数组1 2 3 2 3 14 5 6 ---> 5 6 47 8 9 8 9 7**********/void turningLeft(char a[N][N]){ int b[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N-1;j++)b[i][N-1]=a[i][0],b[i][j]=a[i][j+1];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.082】编写函数将一个NxN的二维数组a的元素按列向下轮转1位。
例如:轮转前的数组轮转后的数组1 2 3 7 8 94 5 6 ---> 1 2 37 8 9 4 5 6**********/void turningDown(char a[N][N]){int b[N][N],i,j;for(i=1;i<N;i++)for(j=0;j<N;j++)b[0][j]=a[N-1][j],b[i][j]=a[i-1][j];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.085】编写函数将一个NxN的二维数组a的元素按列向上轮转1位。
例如:轮转前的数组轮转后的数组1 2 3 4 5 64 5 6 ---> 7 8 97 8 9 1 2 3**********/void turningUp(char a[N][N]){int b[N][N],i,j;for(i=0;i<N-1;i++)for(j=0;j<N;j++)b[N-1][j]=a[0][j],b[i][j]=a[i+1][j];for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=b[i][j];}/**********【习题7.103】编写函数,求整数m和n的最大公约数,并作为函数的返回值。
**********/int gdc(int m, int n){int a,r;if(m<n)a=m,m=n,n=a;while((r=m%n)!=0){m=n;n=r;}return n;}/**********【习题7.105】编写函数,求整数m和n的最小公倍数,并作为函数的返回值。
**********/int lcm(int m, int n){int t,r,h;h=m*n;if(m<n){t=m;m=n;n=t;}while((r=m%n)!=0){m=n;n=r;}return h/n;}/**********7.110 系统给定外部字符数组变量s和数组长度n(不需要自行定义)。
main函数的功能是:把字符串s中所有小写字母转换为大写字母,其他字符不变。
例如,当s="68abcdEFGhijkLM86"时,转换后s="68ABCDEFGHIJKLM86"。
请仅在空缺处填入合适内容,使其实现上述功能。
**********/void main(){int i;/*** 1 ***/i=0; ;while(i<n){if(*(s+i)>='a' && *(s+i)<='z')*(s+i)=/*** 2 ***/*(s+i)-32 ;/*** 3 ***/ i++;}}/**********【习题7.115】编写函数,将两个两位数的正整数a、b合并形成一个整数c且作为函数值返回。
合并的方式是:将a的十位和个位数分别作为c的千位和十位数,b的十位和个位数分别作为c的百位和个位数。
例如,若a=45,b=12,则该函数返回值为4152。
**********/int func(int a, int b){ int c;c=a/10*1000+a%10*10+b/10*100+b%10; return c;}/**********7.120 系统给定外部长整型变量n和字符数组变量s(不需要自行定义)。