B.函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板
C.函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数
D.函数模板的主要作用是简化程序编写
B.函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板
C.函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数
D.函数模板的主要作用是简化程序编写
B.C程序要有必要的注释,以加强可读性。
C.C程序源文件由若干函数组成,C程序的函数由函数头部和函数体两个部分组成。
D.C程序从main函数开始执行,在其他函数中结束。
E.C程序对计算机的操作通过C语句完成。
F.C语言程序的语句必须要以分号结束。 G. printf和scanf函数是C语句的输出和输入语句。
实验十二 C程序的结构体 一、实验目的 1. 掌握结构体的概念和特点。 2. 熟练定义结构体数据类型,掌握结构体变量的定义及使用方法。 3. 了解结构体数组的特点,能使用结构体数组解决简单问题。 4. 掌握结构体指针的特点,能使用结构体指针作函数的参数。 二、实验内容及实验步骤 1. 用结构体类型实现“日期问题”。日期问题:已知一个日期(包括年、月、日),编写程序,计算这一天是这一年的第几天。 参考程序 /* 用结构体类型实现的日期问题程序 */ #include "stdio.h" struct date /* 定义结构体数据类型 */ { int year; int month; int day; }; main() { struct date d; int sum=0; printf("请输入日期(年、月、日之间用空格分隔):\n"); scanf("%d%d%d",&d.year,&d.month,&d.day); switch(d.month) { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=31+28;break; case 4:sum=31+28+31;break; case 5:sum=31+28+31+30;break; case 6:sum=31+28+31+30+31;break; case 7:sum=31+28+31+30+31+30;break; case 8:sum=31+28+31+30+31+30+31;break; case 9:sum=31+28+31+30+31+30+31+31;break; case 10:sum=31+28+31+30+31+30+31+31+30;break; case 11:sum=31+28+31+30+31+30+31+31+30+31;break; case 12:sum=31+28+31+30+31+30+31+31+30+31+30;break; } sum+=d.day; /* 天数累加 */ if(d.month>2) /* 闰年处理 */ if(d.year%400==0||d.year%100!=0&&d.year%4==0) sum+=1; printf("Total: %d\n",sum); } 程序调试: ① 运行程序,输入一个合法日期数据,察看并分析程序结果。 ② 运行程序,输入一个月份非法的日期数据,察看并分析程序结果。 ③ 运行程序,输入一个日子非法的日期数据,察看并分析程序结果。 ④ 完善程序,使得在任何情况下,都能输出一个合理的结果。 ⑤ 用结构体指针改写上面的程序。 2. 学生成绩问题。有10个学生,每个学生的数据包括学号、姓名、3门课的成绩。从键盘输入10个学生数据,要求打印出每门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 参考程序 /* 学生成绩问题程序 */ #include "stdio.h" #define N 10 struct student /* 定义结构体数据类型 */ { char num[5]; /* 学号(不超过4位) */ char name[10]; /* 姓名(不超过9位) */ int score1; /* 成绩1 */ int score2; /* 成绩2 */ int score3; /* 成绩3 */ }; main() { struct student stu[N]; /* 定义结构体数组 */ int max=0,sum1=0,sum2=0,sum3=0; int i,k=0,total,ave1,ave2,ave3,average; for(i=0;i<n;i++) * 输入学生数据,并进行成绩统计 { printf("no.%d: \n",i+1); printf("enter num:"); gets(stu[i].num); name:"); gets(stu[i].name); score1,score2,score3:"); scanf("%d,%d,%d",&stu[i].score1,&stu[i].score2, &stu[i].score3); getchar(); total="stu[i].score1+stu[i].score2+stu[i].score3;" sum1+="stu[i].score1;" sum2+="stu[i].score2;" sum3+="stu[i].score3;" if(total>max) { max=total; k=i; } /* 第k个结构体元素为最高分学生数据 */ } ave1=sum1/N; ave2=sum2/N; ave3=sum3/N; average=(stu[k].score1+stu[k].score2+stu[k].score3)/3; printf("The average score of this class are:\n"); printf("score1=%d, score2=%d, score3=%d\n",ave1,ave2,ave3); printf("The student of maxscore is:\n"); printf("num:%s,name:%s,score1:%d,score2:%d,score3:%d,average:%d\n", stu[k].num,stu[k].name,stu[k].score1,stu[k].score2,stu[k].score3,average); } 程序调试: 先用三个学生的数据调试程序(将程序中符号常量N定义为3): ① 运行程序,输入三个学生的数据:学号不超过4字符,以回车键结束;姓名不超过9字符,以回车键结束;成绩数据之间用逗号分隔,以回车键结束。察看并分析程序结果。 ② 运行程序,输入的学号或姓名信息超过规定长度,察看并分析程序结果。用三个学生的数据调试通过后,再用10个学生数据进行测试。 三、实验报告要求 写明: 1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。 5. 总结讨论本次实验的结果和收获。
实验十 C程序的指针(一) 一、实验目的 1. 掌握指针和指针变量的概念。 2. 掌握简单指针变量的定义和基本使用方法。 3. 熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。 4. 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。 5. 了解指针与字符串的关系,能熟练使用指针处理字符串。 二、实验内容及实验步骤 1. 用指针访问简单变量。从键盘输入三个整数,要求设三个指针变量p1,p2,p3,使p1指向三个数的最大者,p2指向次大者,p3指向最小者,然后按由小到大的顺序输出这三个数。 参考程序 /* 用指针访问简单变量的程序 */ #include "stdio.h" main() { int a,b,c,temp; int *p1,*p2,*p3; printf("请输入三个整数值(a,b,c):\n"); scanf("%d,%d,%d",&a,&b,&c); p1=&a; /* 使指针p1指向简单变量a */ p2=&b; /* 使指针p2指向简单变量b */ p3=&c; /* 使指针p3指向简单变量c */ if(*p1<*p2) 10 { temp="*p1;*p1=*p2;*p2=temp;" } * 至此p1指向了三个数中的最大数 至此p3指向了最小数,p2指向了中间数 printf("%d,%d,%d\n",*p3,*p2,*p1); ① 运行程序,任意输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 ② 运行程序,按由小到大的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 ③ 运行程序,按由大到小的顺序输入三个整数(之间以逗号分隔),察看并分析程序运行结果。 2. 用指针法在一维有序数组中插入数据。如下是具有10整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。数列:10,20,30,40,50,60,70,80,90,99 参考程序 用指针法在一维有序数组中插入数据程序 #include "stdio.h" #define m main( ) int a[m+1]="{10,20,30,40,50,60,70,80,90,99};" i,n,*p,*q; printf("请输入要插入的数据:\n"); scanf("%d",&n); a[m]="n;" for(p="a,i=0;i<=M;i++)" 确定要插入的位置p p="p+i;" p指向要插入数据的位置 break; for(q="a+M-1;q">=p;q--) /* 元素后移 */ *(q+1)=*q; *p=n; /* 插入数据 */ printf("\n插入数据后的数列:\n"); for(p=a,i=0;i<m+1;i++) 1 3 5 7 9 11 13 15 19 20 printf("%d ",*(p+i)); } 3. 用指针实现选择法排序程序。输入20个整数,并用指针实现选择法升序排序。 参考程序 * 用指针实现的选择法排序程序 #include "stdio.h" #define m main( ) { int a[m],n,i,j,min,temp,*p,*q; printf("请输入排序数据:\n"); for(p="a;p<a+M;p++)" 输入数据 scanf("%d",p); printf("排序前数列:\n"); ",*p); for(i="0;i<M-1;i++)" 选择法排序 q="&a[i];" temp="a[i];" a[i]="*q;" *q="temp;" printf("\n排序后数列:\n"); 输出排序结果 ① 凡是排序程序,输入数据调试时至少要包括三种情况:任意的一组数据;一组升序数据;一组降序数据。 ② 在上面的参考程序中,指针变量p在每一次的数组处理中都是变化的,不管是数组数据输入、数组数据输出、每一趟排序等,p指针总是逐步向后指向下一个元素。在编写调试程序时,指针p的指向也可以相对固定,而采用加(或减)移动量的方式指向其他的数组元素。 4. 测试、运行自己编写的程序。 将一个3*3的矩阵转置,用一函数实现之。 在主函数中用scanf函数输入以下矩阵元素: 将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出以转置的矩阵。 三、实验报告要求 写明: 1. 实验目的 2. 实验内容与步骤 编写的程序(题目,经调试、运行后正确的程序) 思考题的解决方法。 5.>
实验十一 C程序的指针(二) 一、实验目的 1. 掌握指针和指针变量的概念。 2. 掌握简单指针变量的定义和基本使用方法。 3. 熟悉指针和一维数组的关系,掌握指向一维数组的指针变量的定义方法,熟练使用指针变量访问一维数组元素。 4. 了解指针和二维数组的关系,掌握用指针表示二维数组元素的方法。 5. 了解指针与字符串的关系,能熟练使用指针处理字符串。 二、实验内容及实验步骤 1. 调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值. 要求用函数指针调用这两个函数,结果在主函数中输出. main() { int a,b,c,(*p)(); scanf("%d,%d",&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf("sum=%d\n",c); printf("a=%d,b=%d\n",a,b); } sum(int a,int b,int c) { c=a+b; } swap(int a;int b) { int t; t=a; a=b; b=t; } 调试程序时注意参数传递的是数值还是地址. 2. 测试、运行自己编写的程序。 (1)写一个函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为 int strcmp(char * p1,char * p2); 设p1指向字符串s2,要求当s1=s2时,函数返回值为0;如果s1<>s2,则返回它们二者第一个不相同的ASCII码值(如“BOY”与“BAD”的第二个字母不相同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1<s2,则输出负值。 两个字符串s1、s2由main函数输入,strcmp函数的返回值也由main函数输出。 (2)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。 (3)有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 三、实验报告要求 写明: 1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。 5.>
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!