6、有以下程序
#include
{ int x=1,y=0,a=0,b=0; switch(x) { case 1:
switch(y)
{ case 0: a++; break; case 1: b++; break; }
case 2: a++; b++; break; case 3: a++; b++; }
printf(“a=%d,b=%d\\n”,a,b); }
输出结果为:_____ a=2,b=1________。6、有以下程序
#include
{ int x=1,y=0,a=0,b=0; switch(x) { case 1: case 2: a++;
case 3: a++; b++; break; }
printf(“a=%d,b=%d\\n”,a,b); }
输出结果为:_____ a=2,b=1____。
19、以下程序的运行结果是:
void test( int *x,int y) {
*x+=2; y+=2; }
main() {
int a=1,b=1; test(&a,b);
printf(\}
输出结果为: a=3,b=1 。 19、main()
{ void fun(int ,int ,int ) ; int b[3]={3,2,1}; fun(b[0],b+1,b+2);
word
printf(\}
void fun(int a,int *b,int *c) { a++; (*b)++; c++; }
输出结果:____331_______。 25、#include
void recur(int n) { if(n<=0) return ; printf(\ recur(n-1); printf(\
}
输出结果为:____3 2 1 1 2 3_____。 38、struct link { int n;
struct link *next;}; main( )
{ struct link
b[]={{1,b+1},{2,b+2},{3,b}},*p=b,*q=p+1,*r=q+1;
p->n=10; q->n=20; r->n=30; p->next=q;q->next=r;r->next=NULL;
printf(\
is:%d\\n\
}
输出结果:_ result is:_30______。 5、素数问题。
输出20~100之间的全部素数。所谓素数n是指,除1和n之外,不能被2~(n-1);或n/2或(int)sqrt(n)之间的任何整数整除 #include
{ int n=21, j, counter=0; for( ; n<=100; n+=2)
{ for(j=2; j<=n-1; j++) if (n%j==0)
break;
if( j >= n )
word
{ printf(“m”,n); } counter++; }
if(counter==0) 方法二: printf(“\\n”); } } } 5、以下程序的功能是:输入2个整数,求出它们的最大公约数并输出,请填空。 main( ) { int gcd(int m,int n); int a,b,temp; scanf(\ printf(\} int gcd(int m,int n) { int r; r=m%n; while(r!=0) { m=n;n=r; r=m%n; } return n; } 11、已知某课程的平时、实习、测验和期末成绩,求该课程的总评成绩。其中平时、实习、测验和期末分别占10%、20%、20%、50%。 算法要求:①用一维数组实现,可以通过键盘输入i个学生; ②按空格键继续循环,其他键终止循环,注意输出的巧妙运用 方法一: #include
main() { int i=1,j; char ch=' '; float score[5],ratio[4]={0.1,0.2,0.2,0.5}; /*定义成绩、比例系数数组*/
while(ch==' ') {printf(\输入第-个学生的成绩\\n\printf(\平时 实习 测验 期末成绩\\n\score[4]=0; /* score[4]:存储总评成绩*/ for(j=0; j<4; j++) { scanf(\ score[4] += score[j] * ratio[j]; } printf(\总评成绩为:%6.1f\\n\score[4]); printf(\按空格键继续,其它键退出\\n\ch=getch(); /*getch()函数等待从键盘上输入一个字符*/ } } 11、定义一个结构类型,要求输入一个学生的数学和计算机两门课的成绩,然后计算并输出其平均成绩. main() { struct student {int math,computer;}stu; printf(\请输入两门课的成绩: \scanf(\\printf(\平均成绩%f \(stu.math+stu.computer)/2); } 14、冒泡排序算法将数组a中的N个元素按升序进行排序。 Code中出现的N为已定义的符号常量 方法一:算法从上往下,大数沉在最低下 冒泡排序的Code: int i,j,t,a[i]; for(i=0;i
//如果逆序就交换 实现:
#include
int a[N]={66,28,67,98,42,34,4,89,28,9},
for(i=1;i for(j=0;j { t=a[j],a[j]=a[j+1], a[j+1]=t ; } for(i=0;i printf(\ } 方法二:算法从下往上,小数浮在最上面 冒泡排序的Code: int i,j,k,a[i]; for(i=0;i { k=a[j-1];a[j-1]=a[j];a[j]=k; } 实现: #include { void mpsort(int a[],int n); int i, a[N]; printf(\for(i=0; i scanf(\ mpsort(a,N); for(i=0;i printf(\ \} void mpsort(int a[],int n) { int i,j,k; for(i=0;i { k=a[j-1];a[j-1]=a[j];a[j]=k; } } 17、用泰勒级数 e=1?11!?12!?...?1n!求e的近似 word 值,直到最后一项小于10-6为止。 #include {double e=1,t=1,s=1; int i=1; while(t>=1e-6) {t=1.0/s; e+=t; i++; } printf(\ } 17、假定数据是按升序排序的,对于给定值k,用二分查找(或称折半查找),查找该值。 17、#include { int k,table[N]={0,2,4,6,8,10,12,14,16,18}; int mid,left=0,right=N-1,find=0; printf(“请输入要找的数:”); scanf(“%d”,&k); while(!find&&left<=right) { mid=(left+right)/2; if(k==table[mid]) find=1; else if(k left=mid+1; } if(find==1) printf(“%d在table[%d]中\\n”,k,mid); else printf(“没有找到数%d\\n”,k); } 5、一个班级有40名学生,本学期有3门课程。编程要求: ① 输入每位学生的成绩; ② 输出每位学生的各门成绩、总分和平均分; ③ 输出全班总分最高的学生的各门成绩、总分和平均分。 5、#include { int i,j,score[N][3],max=0,maxk;