您的位置:首页 > 理论基础

2006年兰州交通大学硕士研究生考试题(计算机编程题)

2007-12-20 16:25 441 查看
2,10进制转换为16进制:

#include<stdio.h>

char char_mod(int c) {
char number=0;
switch (c) {
case 0: number='0';break;
case 1: number='1';break;
case 2: number='2';break;
case 3: number='3';break;
case 4: number='4';break;
case 5: number='5';break;
case 6: number='6';break;
case 7: number='7';break;
case 8: number='8';break;
case 9: number='9';break;
case 10: number='A';break;
case 11: number='B';break;
case 12: number='C';break;
case 13: number='D';break;
case 14: number='E';break;
case 15: number='F';break;
}
return number;
}
main() {
long num=0,a=0;
int count=0,i=0;
char *p;
printf("please input a number: num=");
scanf("%ld", &num);
a=num;
do{
count++;
a/=16;
}while(a!=0);
p=(char *)calloc(count,sizeof(char));
a=num;
for(i=count;i>0;i--){
p[i-1]=char_mod(a%16);
a/=16;
}
printf("The number %ld transform into ",num);
for(i=0;i<count;i++){
printf("%c",p[i]);
}

getch();
}

4题,编程从N位数中删去M个数字使剩下的数值最小:

#include<stdio.h>
#define min -1
int max_num(int a[],int i) {
int b=0,j=0;
for (j=0; j<i; j++) {
if (a[j]>b)
b=a[j];
}
return b;
}
main(){
int N=0;
int M=0;
int i=0,max=0;
int *p;
printf("please input number N= ");
scanf("%d",&N);
printf("/n");
printf("please input number M= ");
scanf("%d",&M);
printf("/n");
p=(int *)calloc(N,sizeof(int));
for(i=0;i<N;i++){
printf("Please input %d number : ",i+1);
scanf("%d",&p[i]);
}

printf("The older number is : ");
for(i=0;i<N;i++){
printf("%d",p[i]);
}
printf("/n");

for(i=0;i<M;i++){
max=max_num(p,N);
for(k=0;k<N;k++){
if(max==p[k]) p[k]=min;
}
}

printf("The new number is : ");
for(i=0;i<N;i++){
if(p[i]!=-1) printf("%d",p[i]);
}
getch();
}

6题,编写程序找出文件中最长和最短的正文行并统计文件中的行数:

#include<stdio.h>
#define n 80
main(){
FILE *fp;
char ch,*maxrow,*minrow,*row;
int rowcount=0;
int i=0,j=0;
int max=0,min=1000,maxflag,minflag;
row=(char *)calloc(n,sizeof(char));
maxrow=(char *)calloc(n,sizeof(char));
minrow=(char *)calloc(n,sizeof(char));
if((fp=fopen("C://Win-TC//test//f.txt","r"))==NULL){
printf("Can't open input file/n");
exit(1);
}
while(1){
ch=fgetc(fp);
row[i++]=ch;
if(ch=='/n'||ch=='/r'||ch==EOF){
rowcount++;
if(max<i){
max=i;
maxflag=rowcount;
free(maxrow);
maxrow=(char *)calloc(max,sizeof(char));
for(j=0;j<max-1;j++){
maxrow[j]=row[j];
}
}
if(min>i){
min=i;
minflag=rowcount;
free(minrow);
minrow=(char *)calloc(min,sizeof(char));
for(j=0;j<min-1;j++){
minrow[j]=row[j];
}
}
free(row);
i=0;
}
if(ch==EOF) break;
}
fclose(fp);
printf("The Account Numbers/n ");
printf("The sum of rowcount is : %d/n",rowcount);
printf("The max of char rowcount is : %d ,char of numbers is: %d ,the string is : /n",maxflag,max-1);
printf("%s/n",maxrow);
printf("/n");
printf("The min of char rowcount is : %d ,char of numbers is: %d ,the string is : /n",minflag,min-1);
printf("%s/n",minrow);
getch();
}

7题:数列总是具有一些奇妙的性质,现有这样一个数列A,它是以递增顺序排列的,并且该数列中的所有数列中所有的数的质因子只可能为 2,3,5。请你编写程序输出这个数列中的前N 个数字:

#include<stdio.h>

int zhiyinzi(long c) {
int flag=0;
switch (c) {
case 2: flag=1;break;
case 3: flag=1;break;
case 5: flag=1;break;
default:flag=0;
}
return flag;
}

int sushu(long num){
int i;
if(num==2) return 1;
for(i=2;i<num;i++){
if(num%i==0) return 0;
}
return 1;
}

long yinzi(long num){
int flag=1;
long m=2,n=0,i;
long a=0;
while(flag){
n=num%m;
a=num/m;
if(n==0){ /*m 是 num的因子数,下一步判断该m因子数是不是素数,如果是素数,看是不是2,3,5 */

if(sushu(m)==1){

if(zhiyinzi(m)==1){

/*m因子正确, 下一步判断数 num/m */

if(a==1){
return 1; /*该数符合条件*/

}else{
yinzi(a);
break;
}
}else return 0;

}

}else m++;
}
}

main(){
int N=0,flag=1,i=0;
long *A,count=1;
printf("please input number N= ");
scanf("%d",&N);
printf("/n");
A=(long *)calloc(N,sizeof(long));
while(flag){
count++;
if(yinzi(count)==1){
A[i]=count;
i++;
if(i==N) flag=0;
}
}

for(i=0;i<N;i++){
if(i%5==0) printf("/n"); /*每5个数打印一行*/
printf("%d ",A[i]);
}

getch();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: