2、
#include
int i,s,sum=0;
for(i=1,s=0;i<=10;i++){ s=s+i;
sum=sum+s; }
printf(\} 3、
#include
typedef struct{ /*定义描述学生的结构体类型*/ int num; /*成员变量num表示学号*/ char name[20]; /*姓名*/ float score[3]; /*成绩*/ }stud;
void input(stud s[],int n) {
int k;char t[10];
for (k=0; k printf(\ printf(\ printf(\ printf(\ printf(\ } } void output(stud s[],int n) { int k; printf(\ for (k=0; k void print_average(stud s[],int n) { int k; printf(\ for (k=0; k printf(\ } } void main(){ stud st[10]; input(st,3); output(st,3); print_average(st,3); } C语言与程序设计试题 一、用C语言描述下列命题(共16分,每小题2分) 1.x为整数,写出x能被3除尽,且被5除余2的判断表达式。 2.写出a、b之差的绝对值大于x、小于y的判断表达式。 3.如图所示电路中A=1表示开关合上(B,C也相同),写出能使得灯亮的表达式。 AB C 4.把下列数学表达式转换为C语言表达式: D?b2?cos(A) 3?y5.写出判断字符变量ch是阿拉伯数字符号的表达式。 6.定义一个枚举类型season描述一年的四个季节(spring, summer, autumn, winter)。 7.函数fun可以接收字符串的地址作为实际参数,计算后能够返回一个字符指针,写出该函数的声明。 8.有定义FILE fp; 请写出以只读方式打开一个二进制文件file.dat的相关 语句。 二、根据要求画出NS图(共5分) 求解使得不等式1-(1/2)+(1/3)-…+(1/N) > 3/5成立的最小的N值并输出。 三、单项选择题(共5分,每小题1分) 1.以下说法中正确的是( ) A. C语言程序总是从第一个定义的函数开始执行; B. C语言程序中至少有一个main函数; C. C语言程序总是从main函数开始执行; D. C语言程序中的main函数必须放在程序的开始部分; 2.C语言中,下列正确的叙述是 ( ) A. B. C. C程序中的关键字必须小写,其他标识符不区分大小写 C程序中的所有字母都不区分大小写 C程序中的所有字母都必须小写 D. 所有的C语言关键字必须小写 3.已知int i=10;表达式20-5<=i<=9的值是( ) A. 0 B. 1 C. 19 D. 20 4. 以下不正确的描述是( ) A. break语句不能用于循环语句和switch语句外的其它语句 B. 在switch语句中使用break语句或continue语句的作用相同 C. 在循环语句中使用continue语句是为了结束本次循环 D. 在循环语句中使用break语句是为了使流程跳出循环体 5. 对二维数组的正确说明是( ) A. int a[][]={1,2,3,4,5,6}; B. int a[2][]={1,2,3,4,5,6}; C. int a[][3]={1,2,3,4,5,6}; D. int a[2,3]={1,2,3,4,5,6}; 四、程序阅读题(共20分,每小题4分) 1、#include { int i=15; while (i>0) if (--i%3!=2) continue; else printf(\ } 程序运行后的输出结果为: 2、#include int func(int n){ if (n==0)return 0; else if (n==1) return 1; else return n*n+func(n-2); } void main(){ printf(\ } 程序运行后的输出结果为: 3、#include void main(){ int a,b,s,t; a=b=s=0, t=1; while(t<=4){ t=t+1; switch(t%3){ case 1: a=a+t; break; case 2: b=b+t; break; default: s=s+3; } printf(\ } } 程序运行后的输出结果为: 4、 #include int f1(int x) { int y=0; static int z=2; y+=1; z++; return(x+y+z); } void main() { int x=1,i; char s1[10]=“Visual”,s2[10]=“C++”,s[10]; for(i=0;i<3;i++) printf(\ printf(“\\n”); if(strcmp(s1,s2)) { strcpy(s,s1); puts(s);} strcat(s2,s1); printf(“%d,%s\\n”,strlen(s2),s2); } 程序运行后的输出结果为: 5、#include #define MAX 100 void main() { int f[MAX],i,j,k=2,m=5; for(i=0;i<=m;i++) f[i]=1; f[k-1]=2; for(i=k;i<=m;i++) for(j=i-k;j<=i-1;j++) f[i]+=f[j]; printf(\ } 程序运行后的输出结果为: 五、程序填空(共24分,每小题6分) 1、求10000内的完数,一个数所有因子的和与该数相等即为完数,如6=1+2+3,所以6是完数。 #include for(m=6;m<=10000;m++) { if(n==0) printf(\ ①; for(i=2;i<=②;i++) if(m%i==0) ③; if( sum==m ) { printf(\;n++;} } } ①__________ ②__________ ③ __________ 2、下面的函数sort按照交换排序的思想,实现对n个整型数的非递减排序。 void sort(int p[], int n) {