其中有一些代码不是原创的。 ## **C语言实验题――数组逆序** 输入10个整数存入一维数组,再按逆序重新存放后再输出。 #include <stdio.h> #include <math.h> int main() { int a[10]; int i; for(i=0;i<10;i++) { scanf("%d",&a[i]); }//输入一个数组,一个数字对应一个数组里面的数值 printf("%d",a[9]); for(i=8;i>=0;i--) { printf(" %d",a[i]); } // printf("%d",a[0]); return 0; } ## **统计同成绩学生人数** 读入N名学生的成绩,将获得某一给定分数的学生人数输出。 #include <stdio.h> int main() { int n,m,k; int a[1000]; while(scanf("%d",&n)!=EOF) { if(n==0)break;//判断一次是否等于0 if(n>1000)break;//判断n是否小于1000 for(int i=0;i<n;i++) { scanf("%d",&a[i]); //输入 if(a[i]<0||a[i]>100)//判断是否符合0-100的数 { printf("score error\n"); break;//结束 } } scanf("%d",&m);//输入 k=0;//重置 for(int i=0;i<n;i++) { if(m==a[i]) { k++; } } printf("%d\n",k); // return 0; } } ## **并列排名** 在我们参加的各种竞赛中,允许并列的排名方式是经常遇到的。 例如有四名选手的成绩分别为50、80、50、30分,则80分的选手为第一名,50分的两名选手均为第二名,30分的选手为第四名。 请编写一个程序,计算一个选手在这种排名方式之下的名次(分数高的选手排前面)。 #include <stdio.h> int main() { int n,a[100],m,x,i,j,t,s=0; scanf("%d",&n);//输入第一个数进入循环 for(i=0;i<n;i++) { scanf("%d",&a[i]);//成绩 } scanf("%d",&m);//输入成绩,下面并且开始判断有几次 ///进行排序,冒泡排序 for(i=0;i<n-1;i++) { for(j=0;j<n-1-i;j++) { if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; //冒泡排序法 } } } for(i=0;i<n;i++) { //判断 if(a[i]==m)//判断数组中的值是否与m相等 { x=i; // printf("%d",x); break; } // if(a[i]==a[i+1]) // s++; //这句if不能用{}括起来. } printf("%d\n",x+1);//输出时 } ## **校赛冠军** 台州学院第六届“星峰杯”大学生程序设计竞赛如期举行,本次竞赛的冠军可能会授予特等奖,并获得“台州市星峰电子信息工程有限公司”赞助的高额奖金,但该奖项也可以空缺。竞赛组委会根据第一名和第二名的差距来确定是否授予该奖项,如果冠军超过第二名2题及以上则属遥遥领先,颁发1000元奖金,如果只超过1题,则颁发800元奖金,如果与第二名题数相同,则该奖项空缺。 给定所有选手的解题数,请输出特等奖的奖金。 #include <stdio.h> int main() { int a[200],n,i,j,t,k;//如果发生runtime error那就是给的a[范围不够] scanf("%d\n",&n);//输入循环次数 //判断n是否小于等于200 没写 for(k=0;k<n;k++) { scanf("%d",&a[k]);//将数输入数组中 } for(i=0;i<n;i++) { for(j=0;j<n-1-i;j++) { if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } //判断第一名与第二名 if(a[0]-a[1]==1) printf("800"); else if(a[0]-a[1]>=2) printf("1000"); else if(a[0]==a[1]) printf("None"); return 0; } ## **奇偶间谍** 奇数和偶数正在交战,在奇数的阵营里有偶数出现就被认为是间谍,反过来也一样。输入包含10行,请将其中的间谍数(与其他数奇偶性不同的那一个)找出来并输出。 注意,间谍可能是奇数也可能是偶数 #include <stdio.h> int main() { int a[10],b[10]; int i,n,m=0,k=0,z; // scanf("%d",&n); for(i=0;i<10;i++) { scanf("%d",&z); if(z%2==0) a[m++]=z;//偶数赋值 else b[k++]=z;//奇数赋值 } //输出相反的数。 //假设偶数>1的那就是剩下一个奇数是间谍 //反之相同。 if(m>1) printf("%d",b[0]); else printf("%d",a[0]); return 0; } ## **求区间内奇数之和** 给定n个正整数组成的序列,问数组中从第x到第y个元素之间(含x和y,即区间[x, y])的所有奇数之和。 #include <stdio.h> int main ( ) { int n;int i;int a[100]; int m,k; int j; int all=0; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } scanf("%d %d",&m,&k); for(j=m;j<=k;j++) { if(a[j]%2!=0) all+=a[j]; } printf("%d",all); } ## **C语言实验题――分割整数** 从键盘输入一个长正整数(不超过10位),从高位开始逐位分割并输出。 #include <stdio.h> #include <math.h> #include <string.h> int main ( ) { long n; int a[11]; int j,i; scanf("%ld",&n); for(i=0;i<10;i++) { a[i]=n%10; n=n/10; //连续并且取出 if(n==0) break; } //上面的a[i]中存储这i的数 for(j=i;j>=0;j--) { if(j!=0) { printf("%d ",a[j]); } else printf("%d",a[0]); } } ## **C语言实验题――数组逆序2** 有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m<n<100)个位置。 #include <stdio.h> #include <math.h> #include <string.h> int main ( ) { int n,m[100]; int i; int h ; int k ; int j ; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m[i]); } scanf("%d",&h); // for(i=0;i<h;i++) { k=m[n-1]; for(j=n-1;j>0;j--) { m[j]=m[j-1]; } m[j]=k; } // for(i=0;i<n;i++) { if(i==n-1) printf("%d\n",m[i]); else printf("%d ",m[i]); } } 10最后一道题目 3 1 1 2 3 3 1 2 #include <stdio.h> #include <stdlib.h> int main() { int n,p,t; scanf("%d %d",&n,&p); int* a=(int*)malloc(sizeof(int)*n); int* b=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int i=0;i<p+1;i++){ b[i]=a[i]; } for(int i=0;i<n-p-1;i++){ a[i]=a[p+1+i]; } for(int i=0;i<p+1;i++){ a[n-p-1+i]=b[i]; } printf("%d",a[0]); for(int i=1;i<n;i++){ printf(" %d",a[i]); } return 0; }