C语言题库 下载本文

内容发布更新时间 : 2024/11/14 23:38:42星期一 下面是文章的全部内容请认真阅读。

6、有以下程序

#include main()

{ 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 main()

{ 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 x); void main() { recur(3); }

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 main()

{ 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; float score[5],ratio[4]={0.1,0.2,0.2,0.5}; /*定义成绩、比例系数数组*/ for (;i<=5;) {printf(\输入第-个学生的成绩\\n\i++); printf(\平时 实习 测验 期末成绩\\n\ score[4]=0; /* score[4]:存储总评成绩*/ for(j=0; j<4; j++) {scanf(\ score[4] += score[j] * ratio[j]; } printf(\总评成绩为:%6.1f\\n\#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;ia[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t; }

//如果逆序就交换 实现:

#include #define N 10 main() { int i,j,t;

int a[N]={66,28,67,98,42,34,4,89,28,9},

for(i=1;i

for(j=0;ja[j+1])

{ 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;ii;j--) if(a[j-1]>a[j])

{ k=a[j-1];a[j-1]=a[j];a[j]=k; } 实现:

#include #define N 10 void main()

{ 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;ii;j--) if(a[j-1]>a[j])

{ k=a[j-1];a[j-1]=a[j];a[j]=k; }

}

17、用泰勒级数

e=1?11!?12!?...?1n!求e的近似

word

值,直到最后一项小于10-6为止。 #include void main()

{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 #define N 10 main()

{ 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 #define N 40 main()

{ int i,j,score[N][3],max=0,maxk;